<?php
/**********************************************************************
***********************************************************************/
$page_security = 'SA_SALESTRANSVIEW';
$path_to_root = "../..";
include_once($path_to_root . "/includes/session.inc");

include_once($path_to_root . "/sales/includes/sales_ui.inc");

include_once($path_to_root . "/sales/includes/sales_db.inc");
include_once($path_to_root . "/admin/db/order_categories_db.inc");
include_once($path_to_root . "/inventory/includes/db/items_units_db.inc");


$js = "";
if ($SysPrefs->use_popup_windows)
	$js .= get_js_open_window(900, 600);
page(_($help_context = "View Sales Invoice"), true, false, "", $js);


if (isset($_GET["trans_no"]))
{
	$trans_id = $_GET["trans_no"];
}
elseif (isset($_POST["trans_no"]))
{
	$trans_id = $_POST["trans_no"];
}

// 3 different queries to get the information - what a JOKE !!!!

function display_customer_payment_returns($invoice_nos){
    start_table(TABLESTYLE);
    display_heading2(_("Customer Payment Returns"));


    $th = array(_("#"), _("Ref"), _("Date"), _("Total"));
    table_header($th);

    $cn_numbers = array();
    //$dn_numbers = array();
    $delivery_total = 0;

    if ($result = get_sales_child_documents(ST_SALESINVOICE, $invoice_nos, ST_CUSTOMER_PAYMENT_RETURN)) {

            $k = 0;
            while ($del_row = db_fetch($result))
            {

                    alt_table_row_color($k);
                    //$dn_numbers[] = $del_row["trans_no"];
        $cn_numbers[] = $del_row["trans_no"];
                    $this_total = $del_row["ov_freight"]+ $del_row["ov_amount"] + $del_row["ov_freight_tax"]  + $del_row["ov_gst"] ;
                    $delivery_total += $this_total;

                    label_cell(get_customer_trans_view_str($del_row["type"], $del_row["trans_no"]));
                    label_cell($del_row["reference"]);
                    label_cell(sql2date($del_row["tran_date"]));
                    amount_cell($this_total);
                    end_row();
            }
    }

    label_row(null, price_format($delivery_total), " ", "colspan=4 align=right");

    end_table();
}


function display_delivery_notes($invoice_nos){
    start_table(TABLESTYLE);
    display_heading2(_("Delivery Notes"));


    $th = array(_("#"), _("Ref"), _("Date"), _("Total"));
    table_header($th);

    $cn_numbers = array();
    //$dn_numbers = array();
    $delivery_total = 0;

    if ($result = get_sales_child_documents(ST_SALESINVOICE, $invoice_nos)) {

            $k = 0;
            while ($del_row = db_fetch($result))
            {

                    alt_table_row_color($k);
                    //$dn_numbers[] = $del_row["trans_no"];
        $cn_numbers[] = $del_row["trans_no"];
                    $this_total = $del_row["ov_freight"]+ $del_row["ov_amount"] + $del_row["ov_freight_tax"]  + $del_row["ov_gst"] ;
                    $delivery_total += $this_total;

                    label_cell(get_customer_trans_view_str($del_row["type"], $del_row["trans_no"]));
                    label_cell($del_row["reference"]);
                    label_cell(sql2date($del_row["tran_date"]));
                    amount_cell($this_total);
                    end_row();
            }
    }

    label_row(null, price_format($delivery_total), " ", "colspan=4 align=right");

    end_table();
}


function display_invoice_header($trans_id, &$myrow)
{
    $myrow = get_customer_trans($trans_id, ST_SALESINVOICE);

    $branch = get_branch($myrow["branch_code"]);

    $sales_order = get_sales_order_header($myrow["order_"], ST_SALESORDER);

    display_heading2(_("Invoice Details"));

//    echo "<br>";




    $cat_ref = get_order_category_transaction_details(ST_SALESINVOICE, $trans_id);

//    start_outer_table();
    start_table(TABLESTYLE, "width=100%");
    start_row();
        label_cells(_("Customer"), $myrow["DebtorName"] . "<br>" . nl2br($myrow["address"]), "class='tableheader2' nowrap");
        label_cells(_("Reference"), $myrow["reference"], "class='tableheader2'");
        
    end_row();
    start_row();
        label_cells(_("Branch"), $branch["br_name"] . "<br>" . nl2br($branch["br_address"]), "class='tableheader2' nowrap");
        label_cells(_("Order Category"), $cat_ref['order_category_name'], "class='tableheader2'");
        

    end_row();
    start_row();
        label_cells(_("Customer Order Ref."), $sales_order["customer_ref"], "class='tableheader2'");
        label_cells(_("Cat. Ref."), $cat_ref['order_category_reference'], "class='tableheader2'");

        
    end_row();
    start_row();
        $paym = get_payment_terms($myrow['payment_terms']);
        label_cells(_("Payment Terms"), $paym["terms"], "class='tableheader2' nowrap");
        label_cells(_("Shipping Company"), $myrow["shipper_name"], "class='tableheader2'");


//        label_cells(_("Deliveries"), get_customer_trans_view_str(ST_CUSTDELIVERY, get_sales_parent_numbers(ST_SALESINVOICE, $trans_id)), "class='tableheader2'");
    end_row();
    start_row();
        label_cells(_("Currency"), $sales_order["curr_code"], "class='tableheader2'");
        label_cells(_("Invoice Date"), sql2date($myrow["tran_date"]), "class='tableheader2'", "nowrap");
    end_row();
    start_row();
        label_cells(_("Sales Order No"), get_customer_trans_view_str(ST_SALESORDER,$sales_order["order_no"]), "class='tableheader2'");
        label_cells(_("Due Date"), sql2date($myrow["due_date"]), "class='tableheader2'", "nowrap");
    end_row();
    start_row();
        label_cells(_("Sales Type"), $myrow["sales_type"], "class='tableheader2'");
        
    end_row();
    comments_display_row(ST_SALESINVOICE, $trans_id);
    end_table();






    echo "</td></tr>";
//    end_table(1); // outer table

}


function display_invoice_details($trans_id,$myrow)
{

    $result = get_customer_trans_details(ST_SALESINVOICE, $trans_id);

    start_table(TABLESTYLE, "width=95%");

    if (db_num_rows($result) > 0)
    {
            $th = array(_("Id"), _("Item Code"), _("Item Description"), _("Quantity"),
                    _("Unit"), _("Price"), _("Discount %"), _("Total"));
            table_header($th);

            $k = 0;	//row colour counter
            $sub_total = 0;
            while ($myrow2 = db_fetch($result))
            {
                if($myrow2["quantity"]==0) continue;
                    alt_table_row_color($k);

                    $value = round2(((1 - $myrow2["discount_percent"]) * $myrow2["unit_price"] * $myrow2["quantity"]),
                       user_price_dec());
                    $sub_total += $value;

                if ($myrow2["discount_percent"] == 0)
                {
                            $display_discount = "";
                }
                else
                {
                            $display_discount = percent_format($myrow2["discount_percent"]*100) . "%";
                }

                label_cell($myrow2["id"]);
                label_cell($myrow2["stock_id"]);
                    label_cell($myrow2["StockDescription"]);
            qty_cell($myrow2["tran_qty"], false, get_qty_dec($myrow2["stock_id"]));
//            label_cell($myrow2["tran_unit"], "align=right");
            $tran_unit_name = get_unit_descr($myrow2['tran_unit']);
            label_cell($tran_unit_name);
            amount_cell($myrow2["unit_price"]*$myrow2["conversion_factor"]);
            label_cell($display_discount, "nowrap align=right");
            amount_cell($value);
                    end_row();
            } //end while there are line items to print out

            $display_sub_tot = price_format($sub_total);
            label_row(_("Sub-total"), $display_sub_tot, "colspan=6 align=right",
                    "nowrap align=right width=15%");
    }
    else
            display_note(_("There are no line items on this invoice."), 1, 2);

    $display_freight = price_format($myrow["ov_freight"]);

    /*Print out the invoice text entered */
    label_row(_("Shipping"), $display_freight, "colspan=7 align=right", "nowrap align=right");

    $tax_items = get_trans_tax_details(ST_SALESINVOICE, $trans_id);
    display_customer_trans_tax_details($tax_items, 7);

    $display_total = price_format($myrow["ov_freight"]+$myrow["ov_gst"]+$myrow["ov_amount"]+$myrow["ov_freight_tax"]);

    label_row(_("TOTAL INVOICE"), $display_total, "colspan=7 align=right",
            "nowrap align=right");
    end_table(1);
}


display_heading(sprintf(_("SALES INVOICE #%d"),$trans_id));
    
br(1);
start_outer_table(TABLESTYLE2);
    table_section(1);        
    echo "<td>";
        display_invoice_header($trans_id, $invh);
    //echo "<tr valign=top><td>";
    echo "</td>";
    table_section(2);
    start_row();
    echo "<td>";
        $invoice_nos = array();
        $invoice_nos[] = $trans_id;

        //echo "</td><td valign='top'>";
        display_customer_payment_returns($invoice_nos);
    echo "</td>";
    end_row();
    br(1);
    echo "<td>";
        //echo "</td><td valign='top'>";
        display_delivery_notes($invoice_nos);
    echo "</td>";
    
    
    
end_outer_table(1);

display_invoice_details($trans_id, $invh);
	
display_allocations_to(PT_CUSTOMER, $invh['debtor_no'], ST_SALESINVOICE, $trans_id, $invh['Total']);


end_page(true, false, false, ST_SALESINVOICE, $trans_id);

?>