function createPayment($entity) { $config = Accounting::loadConfigParams(); if ($config['createpaymentwf'] != 'true') { return; } $inv_id = $entity->data['id']; $inv_id = explode("x", $entity->data['id']); $inv_id = $inv_id[1]; if ($entity->data['account_id'] != '') { $account_id = $entity->data['account_id']; $account_id = explode("x", $entity->data['account_id']); $account_id = $account_id[1]; } else { $account_id = $entity->data['contact_id']; $account_id = explode("x", $entity->data['contact_id']); $account_id = $account_id[1]; } if ($entity->data['assigned_user_id'] != '') { $assigned = 'assigned_user_id'; $assigned_user_id = $entity->data['assigned_user_id']; $assigned_user_id = explode("x", $entity->data['assigned_user_id']); $assigned_user_id = $assigned_user_id[1]; } else { $assigned = 'assigned_group_id'; $assigned_user_id = $entity->data['assigned_group_id']; $assigned_user_id = explode("x", $entity->data['assigned_group_id']); $assigned_user_id = $assigned_user_id[1]; } $params = array('module' => 'Accounting', 'action' => 'Save', 'accounting_id' => 'AUTO GEN ON SAVE', 'paymentref' => $entity->data['subject'], 'assigntype' => $assigned == 'assigned_user_id' ? 'U' : 'G', $assigned => $assigned_user_id, 'accountingtype' => 'Income', 'accountingrelated2_type' => 'Invoice', 'accountingrelated2' => $inv_id, 'accountingrelated1_type' => $entity->data['account_id'] != "" ? "Accounts" : "Contacts", 'accountingrelated1' => $account_id, 'accountingcategory' => '', 'accountingamount' => $entity->data['hdnGrandTotal'], 'accountingstate' => 'Pending', 'accountingcurrency' => $current_user->currency_code, 'accountingpaidamount' => 0, 'accountingpaidoustanding' => $entity->data['hdnGrandTotal'], 'nPayments' => 1, 'paymentref_0' => '', 'paymentmethod_0' => '', 'paymentamount_0' => $entity->data['hdnGrandTotal'], 'paymentduedate_0' => $entity->data['hdnGrandTotal'], 'paymentdate_0' => '', 'description' => ''); $focus = new Accounting(); $focus->column_fields = $params; $focus->save("Accounting"); global $adb; if ($config['createpaymentwf'] == true) { if (!(!isset($config['wf_nopayments']) || !isset($config['wf_firstpaymentdate']) || !isset($config['wf_firstpaymentamount']) || !isset($config['wf_frecuency']))) { if (!isset($entity->data[$config['wf_nopayments']]) || $entity->data[$config['wf_nopayments']] == "" || (int) $entity->data[$config['wf_nopayments']] < 1) { $entity->data[$config['wf_nopayments']] = 1; } if (!isset($entity->data[$config['wf_firstpaymentamount']]) || $entity->data[$config['wf_firstpaymentamount']] == "") { $entity->data[$config['wf_firstpaymentamount']] = 0; } if (!isset($entity->data[$config['wf_firstpaymentdate']]) || $entity->data[$config['wf_firstpaymentdate']] == "") { $entity->data[$config['wf_firstpaymentdate']] = ''; } if (!isset($entity->data[$config['wf_frecuency']]) || $entity->data[$config['wf_frecuency']] == "") { $entity->data[$config['wf_frecuency']] = ''; } $total = $entity->data['hdnGrandTotal'] == "" ? 0 : $entity->data['hdnGrandTotal']; $nopayments = $entity->data[$config['wf_nopayments']]; if ($nopayments > 1) { $payment_amount1 = $entity->data[$config['wf_firstpaymentamount']]; if ($payment_amount1 == 0) { $payment_amountn = ($total - $payment_amount1) / $nopayments; $payment_amount1 = $payment_amountn; } else { $payment_amountn = ($total - $payment_amount1) / ($nopayments - 1); } $payment_duedate = $entity->data[$config['wf_firstpaymentdate']]; $payment_frecuency = $entity->data[$config['wf_frecuency']]; for ($i = 0; $i < $nopayments; $i++) { $sql = "INSERT INTO vtiger_accounting_payments (idtransaction, amount, paymentduedate, paymentdate, paid, ref, associnv, assoc_display, assoc_mod, paymentmethod) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; if ($i == 0) { $data_arr = array($focus->id, $payment_amount1, $payment_duedate, '', '0', '', '', '', '', '---'); } else { $data_arr = array($focus->id, $payment_amountn, $payment_duedate, '', '0', '', '', '', '', '---'); } if ($payment_frecuency != '' && $payment_duedate != '') { $payment_duedate = strtotime('+' . $payment_frecuency . ' day', strtotime($payment_duedate)); $payment_duedate = date('Y-m-j', $payment_duedate); } foreach ($data_arr as &$param) { if (!isset($param)) { $param = ""; } } $res = $adb->pquery($sql, $data_arr); } } else { $sql = "INSERT INTO vtiger_accounting_payments (idtransaction, amount, tax, paymentduedate, paymentdate, paid, ref, associnv, assoc_display, assoc_mod, paymentmethod) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; $tax = ''; $data_arr = array($focus->id, $entity->data['hdnGrandTotal'], $tax, $entity->data['duedate'], $date, '0', '', '', '', '', ''); foreach ($data_arr as &$param) { if (!isset($param)) { $param = ""; } } $res = $adb->pquery($sql, $data_arr); } } } }