Esempio n. 1
0
 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'];