maxpoletaev / opencart-exchange1c

[deprecated] Data exchange with 1C for OpenCart
http://zenwalker.ru/lab/opencart-exchange1c
104 stars 91 forks source link

Передача суммы доставки #22

Open Class365 opened 10 years ago

Class365 commented 10 years ago

При интеграции с OpenCart и загрузке заказов не передается сумма доставки, как следствие, сумма заказа не сходится. Возможно ли реализовать передачу суммы доставки заказа отдельной позицией?

mrdjat commented 10 years ago

Что сделал я Добавил после функции

            // Товары
            $products = $this->model_sale_order->getOrderProducts($orders_data['order_id']);

            $product_counter = 0;
            foreach ($products as $product) {
                $id = $this->get1CProductIdByProductId($product['product_id']);

                $document['Документ' . $document_counter]['Товары']['Товар' . $product_counter] = array(
                     'Ид'         => $id
                    ,'Наименование' => $product['name']
                    ,'ЦенаЗаЕдиницу'=> $product['price']
                    ,'Количество' => $product['quantity']
                    ,'Сумма'       => $product['total']
                );

                $product_counter++;
            }

Следующий код

            //Доставка
            $totals = $this->model_sale_order->getOrderTotals($orders_data['order_id']);

            foreach ($totals as $total) {
         if ($total['code']=='shipping') {

            $document['Документ' . $document_counter]['Товары']['Товар' . $product_counter] = array(
                     'Ид'         => ''
                    ,'Наименование' => 'Доставка'
                    ,'ЦенаЗаЕдиницу'=> $total['value']
                    ,'Количество' => 1
                    ,'Сумма'       => $total['value']
                );
            }

            }
Class365 commented 10 years ago

К сожалению, не нашли функцию // Товары $products = $this->model_sale_order->getOrderProducts($orders_data['order_id']);

.......

mrdjat commented 10 years ago

Это в файле admin\model\tool\exchange1c.php Строка 70-86, после нее нужно вставить.

Class365 commented 10 years ago

Спасибо, получилось. у нас это 114 строка и код немного другой. Но в итоге работает.

mrdjat commented 10 years ago

Только я единственное не подставил id, Думаю это в 1с идентификатор номенклатуры. Пока так оставил и у себя. Думаю можно его выцепить и потом уже подставлять.

Nks commented 10 years ago

Актуальность?

Class365 commented 10 years ago

Все работает

            //Доставка
                        $totals = $this->model_sale_order->getOrderTotals($orders_data['order_id']);

                        foreach ($totals as $total) {
                     if ($total['code']=='shipping') {

                        $document['Документ' . $document_counter]['Товары']['Товар' . $product_counter] = array(
                                 'Ид'         => ''
                                ,'Наименование' => 'Доставка'
                                ,'ЦенаЗаЕдиницу'=> $total['value']
                                ,'Количество' => 1
                                ,'Сумма'       => $total['value']
                            );
                        }

                        }