X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=sales%2Fcustomer_credit_invoice.php;h=77ef73366f72c89d39837f31628559227571af3d;hb=d2cc0860eccf02eaefcd90731ac3af141a841529;hp=e9fb3a007b499f44bc6fe5055ee126484f3eafae;hpb=d67d5295b9342c011697ce4df325197e29898588;p=fa-stable.git diff --git a/sales/customer_credit_invoice.php b/sales/customer_credit_invoice.php index e9fb3a00..77ef7336 100644 --- a/sales/customer_credit_invoice.php +++ b/sales/customer_credit_invoice.php @@ -1,10 +1,20 @@ . +***********************************************************************/ //--------------------------------------------------------------------------- // // Entry/Modify Credit Note for selected Sales Invoice // -$page_security = 3; +$page_security = 'SA_SALESCREDITINV'; $path_to_root = ".."; include_once($path_to_root . "/sales/includes/cart_class.inc"); @@ -26,10 +36,10 @@ if ($use_date_picker) { if (isset($_GET['ModifyCredit'])) { $_SESSION['page_title'] = sprintf(_("Modifying Credit Invoice # %d."), $_GET['ModifyCredit']); - $help_page_title =_("Modifying Credit Invoice"); + $help_context = "Modifying Credit Invoice"; processing_start(); } elseif (isset($_GET['InvoiceNumber'])) { - $_SESSION['page_title'] = _("Credit all or part of an Invoice"); + $_SESSION['page_title'] = _($help_context = "Credit all or part of an Invoice"); processing_start(); } page($_SESSION['page_title'], false, false, "", $js); @@ -38,39 +48,41 @@ page($_SESSION['page_title'], false, false, "", $js); if (isset($_GET['AddedID'])) { $credit_no = $_GET['AddedID']; - $trans_type = 11; - print_hidden_script(11); + $trans_type = ST_CUSTCREDIT; display_notification_centered(_("Credit Note has been processed")); - display_note(get_customer_trans_view_str($trans_type, $credit_no, _("View This Credit Note")), 0, 0); + display_note(get_customer_trans_view_str($trans_type, $credit_no, _("&View This Credit Note")), 0, 0); - display_note(print_document_link($credit_no, _("Print This Credit Note"), true, 11),1); + display_note(print_document_link($credit_no, _("&Print This Credit Note"), true, $trans_type),1); - display_note(get_gl_view_str($trans_type, $credit_no, _("View the GL Journal Entries for this Credit Note")),1); + display_note(get_gl_view_str($trans_type, $credit_no, _("View the GL &Journal Entries for this Credit Note")),1); display_footer_exit(); } elseif (isset($_GET['UpdatedID'])) { $credit_no = $_GET['UpdatedID']; - $trans_type = 11; - print_hidden_script(11); + $trans_type = ST_CUSTCREDIT; display_notification_centered(_("Credit Note has been updated")); - display_note(get_customer_trans_view_str($trans_type, $credit_no, _("View This Credit Note")), 0, 0); + display_note(get_customer_trans_view_str($trans_type, $credit_no, _("&View This Credit Note")), 0, 0); - display_note(print_document_link($credit_no, _("Print This Credit Note"), true, 11),1); + display_note(print_document_link($credit_no, _("&Print This Credit Note"), true, $trans_type),1); - display_note(get_gl_view_str($trans_type, $credit_no, _("View the GL Journal Entries for this Credit Note")),1); + display_note(get_gl_view_str($trans_type, $credit_no, _("View the GL &Journal Entries for this Credit Note")),1); display_footer_exit(); -} +} else + check_edit_conflicts(); + //----------------------------------------------------------------------------- function can_process() { + global $Refs; + if (!is_date($_POST['CreditDate'])) { display_error(_("The entered date is invalid."));; set_focus('CreditDate'); @@ -82,13 +94,13 @@ function can_process() } if ($_SESSION['Items']->trans_no==0) { - if (!references::is_valid($_POST['ref'])) { + if (!$Refs->is_valid($_POST['ref'])) { display_error(_("You must enter a reference."));; set_focus('ref'); return false; } - if (!is_new_reference($_POST['ref'], 11)) { + if (!is_new_reference($_POST['ref'], ST_CUSTCREDIT)) { display_error(_("The entered reference is already in use."));; set_focus('ref'); return false; @@ -99,7 +111,10 @@ function can_process() set_focus('ChargeFreightCost'); return false; } - + if (!check_quantities()) { + display_error(_("Selected quantity cannot be less than zero nor more than quantity not credited yet.")); + return false; + } return true; } @@ -107,23 +122,14 @@ function can_process() if (isset($_GET['InvoiceNumber']) && $_GET['InvoiceNumber'] > 0) { - $ci = new Cart(10, $_GET['InvoiceNumber'], true); - - if ($ci==null) { - display_error(_("This invoice can not be credited using the automatic facility.")); - display_error("Please report that a duplicate debtor_trans header record was found for invoice " . key($ci->src_docs)); - echo "

"; - processing_end(); - exit; - } - //valid invoice record returned from the entered invoice number + $ci = new Cart(ST_SALESINVOICE, $_GET['InvoiceNumber'], true); - $ci->trans_type = 11; + $ci->trans_type = ST_CUSTCREDIT; $ci->src_docs = $ci->trans_no; $ci->src_date = $ci->document_date; $ci->trans_no = 0; - $ci->document_date = Today(); - $ci->reference = references::get_next(11); + $ci->document_date = new_doc_date(); + $ci->reference = $Refs->get_next(ST_CUSTCREDIT); for ($line_no=0; $line_noline_items); $line_no++) { $ci->line_items[$line_no]->qty_dispatched = '0'; @@ -134,20 +140,32 @@ if (isset($_GET['InvoiceNumber']) && $_GET['InvoiceNumber'] > 0) { } elseif ( isset($_GET['ModifyCredit']) && $_GET['ModifyCredit']>0) { - $_SESSION['Items'] = new Cart(11,$_GET['ModifyCredit']); + $_SESSION['Items'] = new Cart(ST_CUSTCREDIT,$_GET['ModifyCredit']); copy_from_cart(); } elseif (!processing_active()) { /* This page can only be called with an invoice number for crediting*/ die (_("This page can only be opened if an invoice has been selected for crediting.")); -} else { +} elseif (!check_quantities()) { + display_error(_("Selected quantity cannot be less than zero nor more than quantity not credited yet.")); +} + +function check_quantities() +{ + $ok =1; foreach ($_SESSION['Items']->line_items as $line_no=>$itm) { + if ($itm->quantity == $itm->qty_done) { + continue; // this line was fully credited/removed + } if (isset($_POST['Line'.$line_no])) { - if (check_num('Line'.$line_no, ($itm->quantity - $itm->qty_done))) { - $_SESSION['Items']->line_items[$line_no]->qty_dispatched = + if (check_num('Line'.$line_no, 0, $itm->quantity)) { + $_SESSION['Items']->line_items[$line_no]->qty_dispatched = input_num('Line'.$line_no); } } + else { + $ok = 0; + } if (isset($_POST['Line'.$line_no.'Desc'])) { $line_desc = $_POST['Line'.$line_no.'Desc']; @@ -156,28 +174,33 @@ if (isset($_GET['InvoiceNumber']) && $_GET['InvoiceNumber'] > 0) { } } } + return $ok; } //----------------------------------------------------------------------------- function copy_to_cart() { - $cart = &$_SESSION['Items']; - $cart->ship_via = $_POST['ShipperID']; - $cart->freight_cost = input_num('ChargeFreightCost'); - $cart->document_date = $_POST['CreditDate']; - $cart->Location = $_POST['Location']; - $cart->Comments = $_POST['CreditText']; + $cart = &$_SESSION['Items']; + $cart->ship_via = $_POST['ShipperID']; + $cart->freight_cost = input_num('ChargeFreightCost'); + $cart->document_date = $_POST['CreditDate']; + $cart->Location = $_POST['Location']; + $cart->Comments = $_POST['CreditText']; + if ($_SESSION['Items']->trans_no == 0) + $cart->reference = $_POST['ref']; } //----------------------------------------------------------------------------- function copy_from_cart() { - $cart = &$_SESSION['Items']; - $_POST['ShipperID'] = $cart->ship_via; - $_POST['ChargeFreightCost'] = price_format($cart->freight_cost); - $_POST['CreditDate']= $cart->document_date; - $_POST['Location']= $cart->Location; - $_POST['CreditText']= $cart->Comments; + $cart = &$_SESSION['Items']; + $_POST['ShipperID'] = $cart->ship_via; + $_POST['ChargeFreightCost'] = price_format($cart->freight_cost); + $_POST['CreditDate']= $cart->document_date; + $_POST['Location']= $cart->Location; + $_POST['CreditText']= $cart->Comments; + $_POST['cart_id'] = $cart->cart_id; + $_POST['ref'] = $cart->reference; } //----------------------------------------------------------------------------- @@ -189,6 +212,7 @@ if (isset($_POST['ProcessCredit']) && can_process()) { $_POST['WriteOffGLCode'] = 0; copy_to_cart(); + if ($new_credit) new_doc_date($_SESSION['Items']->document_date); $credit_no = $_SESSION['Items']->write($_POST['WriteOffGLCode']); processing_end(); @@ -211,7 +235,8 @@ function display_credit_items() { global $table_style, $table_style2; - start_form(false, true); + start_form(); + hidden('cart_id'); start_table("$table_style2 width=80%", 5); echo ""; // outer table @@ -225,15 +250,14 @@ function display_credit_items() start_row(); // if (!isset($_POST['ref'])) -// $_POST['ref'] = references::get_next(11); +// $_POST['ref'] = $Refs->get_next(11); if ($_SESSION['Items']->trans_no==0) { - ref_cells(_("Reference"), 'ref', '', $_SESSION['Items']->reference, "class='tableheader2'"); + ref_cells(_("Reference"), 'ref', '', null, "class='tableheader2'"); } else { label_cells(_("Reference"), $_SESSION['Items']->reference, "class='tableheader2'"); } -// label_cells(_("Crediting Invoice"), get_customer_trans_view_str(10, $_SESSION['InvoiceToCredit']), "class='tableheader2'"); - label_cells(_("Crediting Invoice"), get_customer_trans_view_str(10, array_keys($_SESSION['Items']->src_docs)), "class='tableheader2'"); + label_cells(_("Crediting Invoice"), get_customer_trans_view_str(ST_SALESINVOICE, array_keys($_SESSION['Items']->src_docs)), "class='tableheader2'"); if (!isset($_POST['ShipperID'])) { $_POST['ShipperID'] = $_SESSION['Items']->ship_via; @@ -254,7 +278,7 @@ function display_credit_items() label_row(_("Invoice Date"), $_SESSION['Items']->src_date, "class='tableheader2'"); - date_row(_("Credit Note Date"), 'CreditDate', '', null, 0, 0, 0, "class='tableheader2'"); + date_row(_("Credit Note Date"), 'CreditDate', '', $_SESSION['Items']->trans_no==0, 0, 0, 0, "class='tableheader2'"); end_table(); @@ -262,6 +286,7 @@ function display_credit_items() end_table(1); // outer table + div_start('credit_items'); start_table("$table_style width=80%"); $th = array(_("Item Code"), _("Item Description"), _("Invoiced Quantity"), _("Units"), _("Credit Quantity"), _("Price"), _("Discount %"), _("Total")); @@ -270,8 +295,8 @@ function display_credit_items() $k = 0; //row colour counter foreach ($_SESSION['Items']->line_items as $line_no=>$ln_itm) { - if ($ln_itm->quantity==$ln_itm->qty_done) { - continue; // this line was fully credited + if ($ln_itm->quantity == $ln_itm->qty_done) { + continue; // this line was fully credited/removed } alt_table_row_color($k); @@ -279,13 +304,12 @@ function display_credit_items() // view_stock_status_cell($ln_itm->stock_id); alternative view label_cell($ln_itm->stock_id); - text_cells(null, 'Line'.$line_no.'Desc', $ln_itm->item_description, 30, 50); - - qty_cell($ln_itm->quantity); + text_cells(null, 'Line'.$line_no.'Desc', $ln_itm->item_description, 30, 50); + $dec = get_qty_dec($ln_itm->stock_id); + qty_cell($ln_itm->quantity, false, $dec); label_cell($ln_itm->units); - - amount_cells(null, 'Line'.$line_no, qty_format($ln_itm->qty_dispatched)); - + amount_cells(null, 'Line'.$line_no, number_format2($ln_itm->qty_dispatched, $dec), + null, null, $dec); $line_total =($ln_itm->qty_dispatched * $ln_itm->price * (1 - $ln_itm->discount_percent)); amount_cell($ln_itm->price); @@ -300,7 +324,7 @@ function display_credit_items() start_row(); label_cell(_("Credit Shipping Cost"), "colspan=7 align=right"); - amount_cells(null, "ChargeFreightCost", $_POST['ChargeFreightCost'], 6, 6); + amount_cells_ex(null, "ChargeFreightCost", 6, 8, $_POST['ChargeFreightCost']); end_row(); $inv_items_total = $_SESSION['Items']->get_items_total_dispatch(); @@ -317,53 +341,56 @@ function display_credit_items() label_row(_("Credit Note Total"), $display_total, "colspan=7 align=right", "align=right"); end_table(); + div_end(); } //----------------------------------------------------------------------------- - function display_credit_options() { - global $table_style2; - - echo "
"; - start_table($table_style2); - - echo "" . _("Credit Note Type") . ""; - echo ""; - echo""; + global $table_style2, $Ajax; + echo "
"; - if (!isset($_POST['CreditType']) || $_POST['CreditType'] == "Return") { +if (isset($_POST['_CreditType_update'])) + $Ajax->activate('options'); - /*if the credit note is a return of goods then need to know which location to receive them into */ - if (!isset($_POST['Location'])) { - $_POST['Location'] = $_SESSION['Items']->Location; - } + div_start('options'); + start_table("$table_style2"); - locations_list_row(_("Items Returned to Inventory Location"), 'Location', $_POST['Location']); - } else { /* the goods are to be written off to somewhere */ - gl_all_accounts_list_row(_("Write Off the Cost of the Items to"), 'WriteOffGLCode', $_POST['WriteOffGLCode']); - } - textarea_row(_("Memo"), "CreditText", null, 45, 3); - end_table(); + credit_type_list_row(_("Credit Note Type"), 'CreditType', null, true); + + if ($_POST['CreditType'] == "Return") + { + + /*if the credit note is a return of goods then need to know which location to receive them into */ + if (!isset($_POST['Location'])) + $_POST['Location'] = $_SESSION['Items']->Location; + locations_list_row(_("Items Returned to Location"), 'Location', $_POST['Location']); + } + else + { + /* the goods are to be written off to somewhere */ + gl_all_accounts_list_row(_("Write off the cost of the items to"), 'WriteOffGLCode', null); + } + + textarea_row(_("Memo"), "CreditText", null, 51, 3); + echo ""; + div_end(); } +//----------------------------------------------------------------------------- +if (get_post('Update')) +{ + $Ajax->activate('credit_items'); +} //----------------------------------------------------------------------------- display_credit_items(); display_credit_options(); echo "
"; -submit('Update', _("Update")); +submit('Update', _("Update"), true, _('Update credit value for quantities entered'), true); echo " "; -submit('ProcessCredit', _("Process Credit Note")); +submit('ProcessCredit', _("Process Credit Note"), true, '', 'default'); echo "
"; end_form();