foreach ($focus->column_fields as $fieldname => $val) { if (isset($_REQUEST[$fieldname])) { $value = $_REQUEST[$fieldname]; $focus->column_fields[$fieldname] = $value; } } //Handling for dateformat in invoicedate vtiger_field if ($focus->column_fields['invoicedate'] != '') { $curr_due_date = $focus->column_fields['invoicedate']; $focus->column_fields['invoicedate'] = DateTimeField::convertToDBFormat($curr_due_date); } $soid = $focus->column_fields['salesorder_id']; $so_focus = new SalesOrder(); $so_focus->id = $soid; $so_focus->retrieve_entity_info($soid, "SalesOrder"); $focus = getConvertSoToInvoice($focus, $so_focus, $soid); // Reset the value w.r.t SalesOrder Selected $currencyid = $so_focus->column_fields['currency_id']; $rate = $so_focus->column_fields['conversion_rate']; //Added to display the SO's associated products -- when we select SO in New Invoice page if (isset($_REQUEST['salesorder_id']) && $_REQUEST['salesorder_id'] != '') { $associated_prod = getAssociatedProducts("SalesOrder", $so_focus, $focus->column_fields['salesorder_id']); } $smarty->assign("SALESORDER_ID", $focus->column_fields['salesorder_id']); $smarty->assign("ASSOCIATEDPRODUCTS", $associated_prod); $smarty->assign("MODE", $so_focus->mode); $smarty->assign("AVAILABLE_PRODUCTS", 'true'); } elseif (isset($_REQUEST['convertmode']) && $_REQUEST['convertmode'] == 'potentoinvoice') { $focus->mode = ''; $_REQUEST['opportunity_id'] = $_REQUEST['return_id']; $relpot = $adb->query_result($adb->pquery('select related_to from vtiger_potential where potentialid=?', array($_REQUEST['return_id'])), 0, 0);
function createInvoice($salesorder_id) { require_once 'include/utils/utils.php'; require_once 'modules/SalesOrder/SalesOrder.php'; require_once 'modules/Invoice/Invoice.php'; require_once 'modules/Users/Users.php'; global $log, $adb; global $current_user; // Payment duration in days $payment_duration_values = array('net 01 day' => '1', 'net 05 days' => '5', 'net 07 days' => '7', 'net 10 days' => '10', 'net 15 days' => '15', 'net 30 days' => '30', 'net 45 days' => '45', 'net 60 days' => '60'); if (!$current_user) { $current_user = Users::getActiveAdminUser(); } $so_focus = new SalesOrder(); $so_focus->id = $salesorder_id; $so_focus->retrieve_entity_info($salesorder_id, "SalesOrder"); foreach ($so_focus->column_fields as $fieldname => $value) { $so_focus->column_fields[$fieldname] = decode_html($value); } $focus = new Invoice(); // This will only fill in the basic columns from SO to Invoice and also Update the SO id in new Invoice $focus = getConvertSoToInvoice($focus, $so_focus, $salesorder_id); // Pick up the Payment due date based on the Configuration in SO $payment_duration = $so_focus->column_fields['payment_duration']; $due_duration = $payment_duration_values[trim(strtolower($payment_duration))]; $durationinsec = mktime(0, 0, 0, date('m'), date('d') + $due_duration, date('Y')); // Cleanup focus object, to duplicate the Invoice. $focus->id = ''; $focus->mode = ''; $focus->column_fields['invoicestatus'] = $so_focus->column_fields['invoicestatus']; $focus->column_fields['invoicedate'] = date('Y-m-d'); $focus->column_fields['duedate'] = date('Y-m-d', $durationinsec); // Additional SO fields to copy -> Invoice field name mapped to equivalent SO field name $invoice_so_fields = array('txtAdjustment' => 'txtAdjustment', 'hdnSubTotal' => 'hdnSubTotal', 'hdnGrandTotal' => 'hdnGrandTotal', 'hdnTaxType' => 'hdnTaxType', 'hdnDiscountPercent' => 'hdnDiscountPercent', 'hdnDiscountAmount' => 'hdnDiscountAmount', 'hdnS_H_Amount' => 'hdnS_H_Amount', 'assigned_user_id' => 'assigned_user_id', 'currency_id' => 'currency_id', 'conversion_rate' => 'conversion_rate'); foreach ($invoice_so_fields as $invoice_field => $so_field) { $focus->column_fields[$invoice_field] = $so_focus->column_fields[$so_field]; } $focus->_salesorderid = $salesorder_id; $focus->_recurring_mode = 'recurringinvoice_from_so'; $focus->save("Invoice"); }
function createInvoice($salesorder_id) { require_once 'include/utils/utils.php'; require_once 'modules/SalesOrder/SalesOrder.php'; require_once 'modules/Invoice/Invoice.php'; require_once 'modules/Accounts/Accounts.php'; require_once 'modules/Users/Users.php'; global $log, $adb; global $current_user; // Payment duration in days $payment_duration_values = array('net 01 day' => '1', 'net 05 days' => '5', 'net 07 days' => '7', 'net 10 days' => '10', 'net 15 days' => '15', 'net 30 days' => '30', 'net 45 days' => '45', 'net 60 days' => '60'); if (!$current_user) { $current_user = Users::getActiveAdminUser(); } //End if $so_focus = new SalesOrder(); $so_focus->id = $salesorder_id; $so_focus->retrieve_entity_info($salesorder_id, "SalesOrder"); //SalesOrderのデータ抽出 foreach ($so_focus->column_fields as $fieldname => $value) { # print $fieldname . " : " . $value. "<br />"; $so_focus->column_fields[$fieldname] = decode_html($value); } //End foreach $account_id = $so_focus->column_fields[account_id]; /** ▼ ** 顧客情報呼び出し ****/ $ac_focus = new Accounts(); $ac_focus->id = $account_id; # print "アカウントID : ".$account_id."<br />"; $ac_focus->retrieve_entity_info($account_id, "Accounts"); foreach ($ac_focus->column_fields as $fieldname => $value) { $ac_focus->column_fields[$fieldname] = decode_html($value); } //End foreach /** ▲ ** 顧客情報呼び出し ****/ $strPayDay = $ac_focus->column_fields[payday]; $focus = new Invoice(); // This will only fill in the basic columns from SO to Invoice and also Update the SO id in new Invoice $focus = getConvertSoToInvoice($focus, $so_focus, $salesorder_id); switch ($strPayDay) { case '翌々月10日(40日)': $durationinsec = date('Y-m', strtotime('+2 month' . $_POST[first_date])) . "-10"; break; case '翌々月15日(45日)': $durationinsec = date('Y-m', strtotime('+2 month' . $_POST[first_date])) . "-15"; break; case '翌々月末日(60日)': $durationinsec = date('Y-m-t', strtotime('+2 month' . $_POST[first_date])); break; case '3ヶ月後10日(100日)': $durationinsec = date('Y-m', strtotime('+3 month' . $_POST[first_date])) . "-10"; break; case '翌月10日': $durationinsec = date('Y-m', strtotime('+1 month' . $_POST[first_date])) . "-10"; break; case '翌月15日': $durationinsec = date('Y-m', strtotime('+1 month' . $_POST[first_date])) . "-15"; break; case '翌月20日': $durationinsec = date('Y-m', strtotime('+1 month' . $_POST[first_date])) . "-20"; break; case '翌月末(30日)': $durationinsec = date('Y-m-t', strtotime($_POST[first_date] . ' +1 month')); break; } //End switch // Pick up the Payment due date based on the Configuration in SO # $payment_duration = $so_focus->column_fields['payment_duration']; # $due_duration = $payment_duration_values[trim(strtolower($payment_duration))]; # $durationinsec = mktime(0,0,0,date('m'),date('d')+$due_duration,date('Y')); // Cleanup focus object, to duplicate the Invoice. $focus->id = ''; $focus->mode = ''; # $focus->column_fields['invoicestatus'] = $so_focus->column_fields['invoicestatus']; $focus->column_fields['invoicestatus'] = "自動作成"; $focus->column_fields['closing_week'] = $so_focus->column_fields['closing_week']; $focus->column_fields['invoicedate'] = date('Y-m-t', strtotime($_POST[first_date])); # $focus->column_fields['duedate'] = date('Y-m-d', $durationinsec); if (preg_match('@\\-12\\-31@', $durationinsec)) { $focus->column_fields['duedate'] = '2015-12-28'; } else { $focus->column_fields['duedate'] = $durationinsec; } //End if # print "<p>受注実績番号 : ".$so_focus->column_fields['salesorder_no']."</p>"; $focus->column_fields['salesorder_no'] = $so_focus->column_fields['salesorder_no']; #受注実績番号 $focus->column_fields['salesamount'] = $so_focus->column_fields['salesamount']; #売上 $focus->column_fields['amount'] = $so_focus->column_fields['amount']; #粗利 if (preg_match('@\\((.*?)分\\)|((.*?)分)@', $so_focus->column_fields['description'])) { $focus->column_fields['description'] = $so_focus->column_fields['description']; } else { $focus->column_fields['description'] = ""; } //End if $focus->column_fields['outcome'] = "固定"; // Additional SO fields to copy -> Invoice field name mapped to equivalent SO field name $invoice_so_fields = array('txtAdjustment' => 'txtAdjustment', 'hdnSubTotal' => 'hdnSubTotal', 'hdnGrandTotal' => 'hdnGrandTotal', 'hdnTaxType' => 'hdnTaxType', 'hdnDiscountPercent' => 'hdnDiscountPercent', 'hdnDiscountAmount' => 'hdnDiscountAmount', 'hdnS_H_Amount' => 'hdnS_H_Amount', 'assigned_user_id' => 'assigned_user_id', 'currency_id' => 'currency_id', 'conversion_rate' => 'conversion_rate', 'division' => 'division', 'pre_tax_total' => 'pre_tax_total', 'balance' => 'hdnGrandTotal', 'margin_rate' => 'margin_rate'); # foreach($invoice_so_fields as $invoice_field => $so_field) { # print $so_field." : ".$so_focus->column_fields[$so_field]."<br />"; # }//End foreach foreach ($invoice_so_fields as $invoice_field => $so_field) { $focus->column_fields[$invoice_field] = $so_focus->column_fields[$so_field]; } //End foreach $focus->_salesorderid = $salesorder_id; $focus->_recurring_mode = 'recurringinvoice_from_so'; $focus->save("Invoice"); }