function createReturnContainerSP($return_id, $return_qty, $joi_id) { use_class('Order'); use_class('jng_sp_orders'); use_class('jng_sp_customers'); use_class('payone_invoice'); $class_jcust = new jng_sp_customers(); $class_jo = new jng_sp_orders(); $item = $class_jo->retrieveItemDetail($joi_id); $oid = $item['jng_sp_orders_id']; $order_obj = new Order(Order::ORDER_TYPE_SALES_PARTNER, $oid); $order = $class_jo->retrieveDetail($oid); if ($order_obj->isPaymentHandledByPayone()) { $invoice = new payone_invoice('invoice_order_type', 'S', "invoice_order_id={$oid}"); //ONLY QUEING JUST FOR TRANSACTION THAT HAVE payone_txid (FIRST GET FROM SUBMITTING INVOICE) if ($invoice->detail['payone_txid'] != '') { $payone_txid = $invoice->detail['payone_txid']; $payment_method = $order_obj->getPaymentMethodRaw(); $customer = $class_jcust->retrieveDetail(null, $order_obj->sales_partner_id, $order_obj->customer_id); $customer_bankdata = $class_jcust->getBankAccountData($customer['jng_sp_customers_id']); $data_por = array(); $data_por['return_id'] = $return_id; $data_por['jng_sp_orders_items_id'] = $joi_id; $data_por['jng_sp_customers_id'] = $customer['jng_sp_customers_id']; $data_por['amount'] = round($return_qty * ($item['price'] * 100)); $data_por['txid'] = $payone_txid; $data_por['invoice_id'] = $invoice->detail['invoice_id']; $data_por['invoice_no'] = $invoice->detail['invoice_no']; $data_por['id'] = $item['article_number']; $data_por['pr'] = round($item['price'] * 100); $data_por['no'] = $return_qty; $data_por['de'] = strlen($item['billing_text']) > 32 ? substr($item['billing_text'], 0, 32) : $item['billing_text']; $data_por['va'] = 0; $data_por['payment_method'] = $payment_method; $data_por['currency'] = 'EUR'; if (!is_null($customer_bankdata)) { $data_por['bankcode'] = $customer_bankdata['bank_code']; $data_por['bankcountry'] = $customer_bankdata['bank_country']; $data_por['bankaccount'] = $customer_bankdata['bank_account_number']; $data_por['bankaccountholder'] = $customer_bankdata['bank_account_holder']; } $this->payoneReturnItemContainer($data_por); $items_total = $order_obj->getTotalItemsNotCanceledQuantity(); $returns_total = $order_obj->getTotalItemsReturnedQuantity(); if ($items_total == $returns_total) { $amount_paid = $invoice->detail['invoice_amount_paid']; $shipping_cost = $order_obj->getCostShipping(); $cod_cost = $order_obj->getCostCOD(); $total_costs = $shipping_cost + $cod_cost; if ($shipping_cost > 0) { //if((($amount_paid*1)==0)||(($amount_paid<>$shipping_cost)&&($amount_paid<>$total_costs))){ if ($amount_paid * 1 == 0 || $amount_paid > $total_costs) { //HANDLE DOUBLE OR MORE SHIPING RETURN CONTAINER $q_check = "SELECT * FROM payone_orders_return WHERE txid = '{$payone_txid}' AND id = 'Shipping'"; $dbc = tep_db_query($q_check); if (tep_db_num_rows($dbc) == 0) { $amount = round($shipping_cost * 100); $data_por = array(); $data_por['return_id'] = 0; $data_por['jng_sp_orders_items_id'] = 0; $data_por['jng_sp_customers_id'] = $customer['jng_sp_customers_id']; $data_por['amount'] = $amount; $data_por['txid'] = $payone_txid; $data_por['invoice_id'] = $invoice->detail['invoice_id']; $data_por['invoice_no'] = $invoice->detail['invoice_no']; $data_por['id'] = 'Shipping'; $data_por['pr'] = $amount; $data_por['no'] = 1; $data_por['de'] = 'Verpackung & Versand'; $data_por['va'] = 0; $data_por['payment_method'] = $payment_method; $data_por['currency'] = 'EUR'; $this->payoneReturnItemContainer($data_por); } } } if ($cod_cost > 0) { //if((($amount_paid==0*1))||(($amount_paid<>$cod_cost)&&($amount_paid<>$total_costs))){ if ($amount_paid * 1 == 0 || $amount_paid > $total_costs) { $amount = round($cod_cost * 100); $data_por = array(); $data_por['return_id'] = 0; $data_por['jng_sp_orders_items_id'] = 0; $data_por['jng_sp_customers_id'] = $customer['jng_sp_customers_id']; $data_por['amount'] = $amount; $data_por['txid'] = $payone_txid; $data_por['invoice_id'] = $invoice->detail['invoice_id']; $data_por['invoice_no'] = $invoice->detail['invoice_no']; $data_por['id'] = 'COD'; $data_por['pr'] = $amount; $data_por['no'] = 1; $data_por['de'] = 'Nachnahmegebühren'; $data_por['va'] = 0; $data_por['payment_method'] = $payment_method; $data_por['currency'] = 'EUR'; $this->payoneReturnItemContainer($data_por); } } } } else { //ORDER NOT SUBMITTED YET TO PAYONE, SO NO TXID CREATED YET. JUST NEED TO EXCLUDE ITEM FROM payone_invoice TABLE COLUMN 'invoice_order_items_id' $oids_arr = explode(',', $invoice->detail['invoice_order_items_id']); if (is_array($oids_arr)) { $new_amount = $invoice->detail['invoice_amount'] - $return_qty * $item['price']; foreach ($oids_arr as $key => $value) { if ($value == $joi_id) { unset($oids_arr[$key]); } } $oids = implode(',', $oids_arr); if (count($oids_arr) == 0) { //ALL PRODUCTS RETURNED $new_amount = 0; $invoice->updateCompleteStatus('3'); //INVOICE CANCELLED } tep_db_perform('payone_invoice', array('invoice_amount' => $new_amount, 'invoice_order_items_id' => $oids), 'update', "invoice_id = '" . $invoice->detail['invoice_id'] . "'"); } } } }
//-----------HAVE RETURN (FULL) WITHOUT RETURN CONTAINER $query = "SELECT d.shipping_costs,d.cod_costs,d.`payment_method`,a.`return_id`, a.return_quantity, c.payone_txid, c.invoice_id, b.jng_sp_orders_id, b.`jng_sp_orders_items_id`, b.article_number,b.billing_text,b.price\nFROM jng_sp_orders_items_return a,`jng_sp_orders_items` b, payone_invoice c, `jng_sp_orders` d\nWHERE a.jng_sp_orders_items_id\nIN (\nSELECT invoice_order_items_id\nFROM payone_invoice\nWHERE invoice_order_id\nIN ( 17334, 17237, 16476, 17038, 16819, 16486, 16672, 16473, 16732, 16581, 16493, 17250, 16854, 16483, 16582, 16508, 17182, 17045, 16766, 16513, 16666, 16836, 16757, 16485, 16866, 16583, 16490 )\n)\nand a.`jng_sp_orders_items_id` = b.jng_sp_orders_items_id\nand c.invoice_order_id = b.jng_sp_orders_id\nand d.`jng_sp_orders_id` = b.`jng_sp_orders_id`"; $res = tep_db_query($query); $result = array(); if (tep_db_num_rows($res) > 0) { while ($row = tep_db_fetch_array($res)) { $result[] = $row; } } //echo"<pre>";var_dump($result);die(); foreach ($result as $data) { // echo"<pre>";var_dump($data);die(); $invoice_id = $data['invoice_id']; $class_pi = new payone_invoice("invoice_id", $invoice_id); $customer = $class_jcust->retrieveDetailByInvoice($invoice_id); $customer_bankdata = $class_jcust->getBankAccountData($customer['jng_sp_customers_id']); $order = $class_jo->retrieveDetail($data['jng_sp_orders_id']); $data_por = array(); $data_por['return_id'] = $data['return_id']; $data_por['jng_sp_orders_items_id'] = $data['jng_sp_orders_items_id']; $data_por['jng_sp_customers_id'] = $customer['jng_sp_customers_id']; $data_por['amount'] = round($data['return_quantity'] * ($data['price'] * 100)); $data_por['txid'] = $data['payone_txid']; $data_por['invoice_id'] = $class_pi->detail['invoice_id']; $data_por['invoice_no'] = $class_pi->detail['invoice_no']; $data_por['id'] = $data['article_number']; $data_por['pr'] = round($data['price'] * 100); $data_por['no'] = $data['return_quantity']; $data_por['de'] = $data['billing_text']; $data_por['va'] = 0; $data_por['payment_method'] = $data['payment_method'];