shipment = $shipment; $this->paczkomaty_shipping_method = $paczkomaty_shipping_method; $this->shipment_options = $shipment_options; $this->flexible_shipping_method = $flexible_shipping_method; $this->package = $package; $this->pickup_points_manager = $pickup_points_manager; } /** * Set meta on shipment. * * @param string $meta_key . * @param string|int $meta_value . */ private function set_meta_filtered( $meta_key, $meta_value ) { $this->shipment->set_meta( $meta_key, $this->get_meta_filtered_value( $meta_key, $meta_value, $this->flexible_shipping_method, $this->package, $this->shipment->get_order() ) ); } /** * Set common meta. * * @param array $fs_method Flexible Shipping Method Settings. */ private function set_meta_common( array $fs_method ) { $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_DROPOFF_PARCEL_MACHINE, $this->paczkomaty_shipping_method->get_option( WC_Paczkomaty_Shipping_Method::SETTING_DEFAULT_PARCEL_LOCKER ) ); $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_DROPOFF_POP, $this->paczkomaty_shipping_method->get_option( WC_Paczkomaty_Shipping_Method::SETTING_DEFAULT_POP ) ); $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_DROPOFF_DISPATCH_POINT, $this->paczkomaty_shipping_method->get_option( WC_Paczkomaty_Shipping_Method::SETTING_DEFAULT_DISPATCH_POINT ) ); if ( isset( $fs_method[ WPDesk_Paczkomaty_FS::SETTING_UBEZPIECZENIE ] ) ) { $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_UBEZPIECZENIE, $fs_method[ WPDesk_Paczkomaty_FS::SETTING_UBEZPIECZENIE ] ); } else { $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_UBEZPIECZENIE, '0' ); } $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_UBEZPIECZENIE_AMOUNT, $this->shipment->get_order()->get_total() ); if ( isset( $fs_method[ WPDesk_Paczkomaty_FS::SETTING_COD ] ) ) { $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_COD, $fs_method[ WPDesk_Paczkomaty_FS::SETTING_COD ] ); } else { $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_COD, '0' ); } $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_COD_AMOUNT, $this->shipment->get_order()->get_total() ); $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_CUSTOMER_REF, // Translators: order number. sprintf( __( 'Zamówienie %s', 'woocommerce-paczkomaty-inpost' ), $this->shipment->get_order()->get_order_number() ) ); $default_weight = (float) ( $fs_method[ WPDesk_Paczkomaty_FS::SETTING_PACZKOMATY_PACKAGE_DEFAULT_WEIGHT ] ?? 0.0 ); $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_WEIGHT, ( new WooCommerce_Order_Weight_Calculator( $this->shipment->get_order() ) )->get_order_weight_kg( $default_weight ) ); $this->shipment->set_meta( '_flexible_shipping_status', 'new' ); foreach ( $this->shipment_options as $shipment_option ) { $shipment_option->handle_checkout( $fs_method, $this->package ); } } /** * Set shipment meta for service paczkomaty. * * @param array $fs_method Flexible Shipping method settings. * @param array $posted_data Posted data. */ private function set_meta_for_service_paczkomaty( $fs_method, $posted_data ) { if ( isset( $posted_data[ WPDesk_Paczkomaty_Checkout::FIELD_PACZKOMAT_ID ] ) ) { $paczkomat_id = $posted_data[ WPDesk_Paczkomaty_Checkout::FIELD_PACZKOMAT_ID ]; } else { $paczkomat_id = $this->shipment->get_order()->get_meta( WPDesk_Paczkomaty_Checkout::FIELD_PACZKOMAT_ID ); } if ( ! empty( $paczkomat_id ) && $paczkomat_id !== '' ) { $this->shipment->set_meta( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_ID, sanitize_text_field( $paczkomat_id ) ); try { $point = $this->pickup_points_manager->get_point_details( $paczkomat_id ); $this->shipment->set_meta( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::DELIVERY_FIELD_ID, $point->get_point_id() ); $this->shipment->set_meta( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::DELIVERY_FIELD_NAME, $point->get_name() ); $this->shipment->set_meta( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::DELIVERY_FIELD_ADDRESS, $point->get_address_1() ); $this->shipment->set_meta( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::DELIVERY_FIELD_POSTCODE, $point->get_zipcode() ); $this->shipment->set_meta( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::DELIVERY_FIELD_CITY, $point->get_city() ); } catch ( Exception $e ) { $this->shipment->get_logger()->error( $e->getMessage() ); } } else { throw new Exception( __( 'Proszę wybrać paczkomat', 'woocommerce-paczkomaty-inpost' ) ); } if ( isset( $fs_method[ WPDesk_Paczkomaty_FS::SETTING_PACZKOMATY_PACKAGE_SIZE ] ) && $fs_method[ WPDesk_Paczkomaty_FS::SETTING_PACZKOMATY_PACKAGE_SIZE ] !== '0' ) { $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_SIZE, $fs_method[ WPDesk_Paczkomaty_FS::SETTING_PACZKOMATY_PACKAGE_SIZE ] ); } else { $default_package_size = $this->paczkomaty_shipping_method->get_option( WC_Paczkomaty_Shipping_Method::SETTING_DEFAULT_PACKAGE_SIZE, '' ); if ( $default_package_size ) { $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_SIZE, $default_package_size ); } } if ( WC_Paczkomaty_Shipping_Method::API_TYPE_XML === $this->paczkomaty_shipping_method->get_parcel_lockers_api() ) { $self_send = $this->paczkomaty_shipping_method->get_option( WC_Paczkomaty_Shipping_Method::SETTING_SELF_SEND, '' ); if ( $self_send ) { if ( WC_Paczkomaty_Shipping_Method::SENDING_METHOD_PARCEL_LOCKER_XML_API === $self_send ) { $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_SENDING_METHOD, WC_Paczkomaty_Shipping_Method::SENDING_METHOD_PARCEL_LOCKER ); } if ( WC_Paczkomaty_Shipping_Method::SENDING_METHOD_DISPATCH_ORDER_XML_API === $self_send ) { $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_SENDING_METHOD, WC_Paczkomaty_Shipping_Method::SENDING_METHOD_DISPATCH_ORDER ); } } } else { $sending_method = $this->paczkomaty_shipping_method->get_option( WC_Paczkomaty_Shipping_Method::SETTING_SENDING_METHOD, '' ); if ( $sending_method ) { $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_SENDING_METHOD, $sending_method ); } } } /** * Set shipment meta for service polecony. */ private function set_meta_for_service_polecony() { $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_PUNKT_NADANIA, $this->paczkomaty_shipping_method->get_option( WC_Paczkomaty_Shipping_Method::SETTING_DOMYSLNY_PUNKT_NADANIA, '' ) ); } /** * Set shipment meta for service kurier. * * @param array $fs_method Flexble Shipping method settings. */ private function set_meta_for_service_kurier( array $fs_method ) { if ( isset( $fs_method[ WPDesk_Paczkomaty_FS::SETTING_PACZKOMATY_PACKAGE_WIDTH ] ) ) { $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_WIDTH, $fs_method[ WPDesk_Paczkomaty_FS::SETTING_PACZKOMATY_PACKAGE_WIDTH ] ); } if ( isset( $fs_method[ WPDesk_Paczkomaty_FS::SETTING_PACZKOMATY_PACKAGE_HEIGHT ] ) ) { $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_HEIGHT, $fs_method[ WPDesk_Paczkomaty_FS::SETTING_PACZKOMATY_PACKAGE_HEIGHT ] ); } if ( isset( $fs_method[ WPDesk_Paczkomaty_FS::SETTING_PACZKOMATY_PACKAGE_LENGTH ] ) ) { $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_LENGTH, $fs_method[ WPDesk_Paczkomaty_FS::SETTING_PACZKOMATY_PACKAGE_LENGTH ] ); } if ( isset( $fs_method[ WPDesk_Paczkomaty_FS::SETTING_SATURDAY ] ) ) { $this->set_meta_filtered( WPDesk_Paczkomaty_Additional_Service_Saturday::META_SATURDAY, $fs_method[ WPDesk_Paczkomaty_FS::SETTING_SATURDAY ] ); } $courier_service = $fs_method[ WPDesk_Paczkomaty_FS::SETTING_PACZKOMATY_KURIER_USLUGA ] === WPDesk_Paczkomaty_FS::STANDARD ? WPDesk_Flexible_Shipping_Shipment_Paczkomaty::INPOST_COURIER_STANDARD : WPDesk_Flexible_Shipping_Shipment_Paczkomaty::INPOST_COURIER_C2C; $this->shipment->set_meta( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::COURIER_SERVICE, $courier_service ); $sending_method = $this->paczkomaty_shipping_method->get_option( WC_Paczkomaty_Shipping_Method::SETTING_SENDING_METHOD, '' ); if ( $sending_method ) { $this->set_meta_filtered( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_PACZKOMAT_SENDING_METHOD, $sending_method ); } } /** * Process checkout. * * @param array $posted_data Posted data ($_POST global variable). */ public function process_checkout( array $posted_data ) { $fs_method = $this->flexible_shipping_method; $service = $fs_method[ WPDesk_Paczkomaty_FS::SETTING_PACZKOMATY_USLUGA ]; $this->shipment->set_meta( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::META_KEY_PACZKOMATY_USLUGA, $service ); if ( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::SERVICE_PACZKOMATY === $service ) { $this->set_meta_for_service_paczkomaty( $fs_method, $posted_data ); } elseif ( WPDesk_Flexible_Shipping_Shipment_Paczkomaty::SERVICE_POLECONY === $service ) { $this->set_meta_for_service_polecony(); } else { $this->set_meta_for_service_kurier( $fs_method ); } $this->set_meta_common( $fs_method ); } }