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);
            }
        }
    }
}