Ejemplo n.º 1
0
function can_process()
{
    global $wo_details;
    if (!references::is_valid($_POST['ref'])) {
        display_error(tr("You must enter a reference."));
        set_focus('ref');
        return false;
    }
    if (!is_new_reference($_POST['ref'], 29)) {
        display_error(tr("The entered reference is already in use."));
        set_focus('ref');
        return false;
    }
    if (!check_num('quantity', 0)) {
        display_error(tr("The quantity entered is not a valid number or less then zero."));
        set_focus('quantity');
        return false;
    }
    if (!is_date($_POST['date_'])) {
        display_error(tr("The entered date is invalid."));
        set_focus('date_');
        return false;
    } elseif (!is_date_in_fiscalyear($_POST['date_'])) {
        display_error(tr("The entered date is not in fiscal year."));
        set_focus('date_');
        return false;
    }
    if (date_diff(sql2date($wo_details["released_date"]), $_POST['date_'], "d") > 0) {
        display_error(tr("The production date cannot be before the release date of the work order."));
        set_focus('date_');
        return false;
    }
    // if unassembling we need to check the qoh
    if ($_POST['ProductionType'] == 0 && !sys_prefs::allow_negative_stock()) {
        $wo_details = get_work_order($_POST['selected_id']);
        $qoh = get_qoh_on_date($wo_details["stock_id"], $wo_details["loc_code"], $date_);
        if (-$_POST['quantity'] + $qoh < 0) {
            display_error(tr("The unassembling cannot be processed because there is insufficient stock."));
            set_focus('quantity');
            return false;
        }
    }
    return true;
}
Ejemplo n.º 2
0
include_once $path_to_root . "/includes/data_checks.inc";
include_once $path_to_root . "/manufacturing/includes/manufacturing_db.inc";
include_once $path_to_root . "/manufacturing/includes/manufacturing_ui.inc";
$js = "";
if ($use_popup_windows) {
    $js .= get_js_open_window(800, 500);
}
page(_($help_context = "View Work Order"), true, false, "", $js);
//-------------------------------------------------------------------------------------------------
$woid = 0;
if ($_GET['trans_no'] != "") {
    $woid = $_GET['trans_no'];
}
display_heading($systypes_array[ST_WORKORDER] . " # " . $woid);
br(1);
$myrow = get_work_order($woid);
if ($myrow["type"] == WO_ADVANCED) {
    display_wo_details($woid, true);
} else {
    display_wo_details_quick($woid, true);
}
echo "<center>";
// display the WO requirements
br(1);
if ($myrow["released"] == false) {
    display_heading2(_("BOM for item:") . " " . $myrow["StockItemName"]);
    display_bom($myrow["stock_id"]);
} else {
    display_heading2(_("Work Order Requirements"));
    display_wo_requirements($woid, $myrow["units_reqd"]);
    if ($myrow["type"] == WO_ADVANCED) {
Ejemplo n.º 3
0
function can_process()
{
    global $selected_id, $SysPrefs, $Refs;
    if (!isset($selected_id)) {
        if (!$Refs->is_valid($_POST['wo_ref'])) {
            display_error(_("You must enter a reference."));
            set_focus('wo_ref');
            return false;
        }
        if (!is_new_reference($_POST['wo_ref'], ST_WORKORDER)) {
            display_error(_("The entered reference is already in use."));
            set_focus('wo_ref');
            return false;
        }
    }
    if (!check_num('quantity', 0)) {
        display_error(_("The quantity entered is invalid or less than zero."));
        set_focus('quantity');
        return false;
    }
    if (!is_date($_POST['date_'])) {
        display_error(_("The date entered is in an invalid format."));
        set_focus('date_');
        return false;
    } elseif (!is_date_in_fiscalyear($_POST['date_'])) {
        display_error(_("The entered date is not in fiscal year."));
        set_focus('date_');
        return false;
    }
    // only check bom and quantites if quick assembly
    if (!($_POST['type'] == WO_ADVANCED)) {
        if (!has_bom($_POST['stock_id'])) {
            display_error(_("The selected item to manufacture does not have a bom."));
            set_focus('stock_id');
            return false;
        }
        if ($_POST['Labour'] == "") {
            $_POST['Labour'] = price_format(0);
        }
        if (!check_num('Labour', 0)) {
            display_error(_("The labour cost entered is invalid or less than zero."));
            set_focus('Labour');
            return false;
        }
        if ($_POST['Costs'] == "") {
            $_POST['Costs'] = price_format(0);
        }
        if (!check_num('Costs', 0)) {
            display_error(_("The cost entered is invalid or less than zero."));
            set_focus('Costs');
            return false;
        }
        if (!$SysPrefs->allow_negative_stock()) {
            if ($_POST['type'] == WO_ASSEMBLY) {
                // check bom if assembling
                $result = get_bom($_POST['stock_id']);
                while ($bom_item = db_fetch($result)) {
                    if (has_stock_holding($bom_item["ResourceType"])) {
                        $quantity = $bom_item["quantity"] * input_num('quantity');
                        if (check_negative_stock($bom_item["component"], -$quantity, $bom_item["loc_code"], $_POST['date_'])) {
                            display_error(_("The work order cannot be processed because there is an insufficient quantity for component:") . " " . $bom_item["component"] . " - " . $bom_item["description"] . ".  " . _("Location:") . " " . $bom_item["location_name"]);
                            set_focus('quantity');
                            return false;
                        }
                    }
                }
            } elseif ($_POST['type'] == WO_UNASSEMBLY) {
                // if unassembling, check item to unassemble
                if (check_negative_stock($_POST['stock_id'], -input_num('quantity'), $_POST['StockLocation'], $_POST['date_'])) {
                    display_error(_("The selected item cannot be unassembled because there is insufficient stock."));
                    return false;
                }
            }
        }
    } else {
        if (!is_date($_POST['RequDate'])) {
            set_focus('RequDate');
            display_error(_("The date entered is in an invalid format."));
            return false;
        }
        //elseif (!is_date_in_fiscalyear($_POST['RequDate']))
        //{
        //	display_error(_("The entered date is not in fiscal year."));
        //	return false;
        //}
        if (isset($selected_id)) {
            $myrow = get_work_order($selected_id, true);
            if ($_POST['units_issued'] > input_num('quantity')) {
                set_focus('quantity');
                display_error(_("The quantity cannot be changed to be less than the quantity already manufactured for this order."));
                return false;
            }
        }
    }
    return true;
}
Ejemplo n.º 4
0
function can_process()
{
    global $wo_details, $SysPrefs, $Refs;
    if (!$Refs->is_valid($_POST['ref'])) {
        display_error(_("You must enter a reference."));
        set_focus('ref');
        return false;
    }
    if (!is_new_reference($_POST['ref'], 29)) {
        display_error(_("The entered reference is already in use."));
        set_focus('ref');
        return false;
    }
    if (!check_num('quantity', 0)) {
        display_error(_("The quantity entered is not a valid number or less then zero."));
        set_focus('quantity');
        return false;
    }
    if (!is_date($_POST['date_'])) {
        display_error(_("The entered date is invalid."));
        set_focus('date_');
        return false;
    } elseif (!is_date_in_fiscalyear($_POST['date_'])) {
        display_error(_("The entered date is not in fiscal year."));
        set_focus('date_');
        return false;
    }
    if (date_diff2(sql2date($wo_details["released_date"]), $_POST['date_'], "d") > 0) {
        display_error(_("The production date cannot be before the release date of the work order."));
        set_focus('date_');
        return false;
    }
    // don't produce more that required. Otherwise change the Work Order.
    if (input_num('quantity') > $wo_details["units_reqd"] - $wo_details["units_issued"]) {
        display_error(_("The production exceeds the quantity needed. Please change the Work Order."));
        set_focus('quantity');
        return false;
    }
    // if unassembling we need to check the qoh
    if ($_POST['ProductionType'] == 0 && !$SysPrefs->allow_negative_stock()) {
        $wo_details = get_work_order($_POST['selected_id']);
        $qoh = get_qoh_on_date($wo_details["stock_id"], $wo_details["loc_code"], $_POST['date_']);
        if (-input_num('quantity') + $qoh < 0) {
            display_error(_("The unassembling cannot be processed because there is insufficient stock."));
            set_focus('quantity');
            return false;
        }
    }
    // if production we need to check the qoh of the wo requirements
    if ($_POST['ProductionType'] == 1 && !$SysPrefs->allow_negative_stock()) {
        $err = false;
        $result = get_wo_requirements($_POST['selected_id']);
        while ($row = db_fetch($result)) {
            if ($row['mb_flag'] == 'D') {
                // service, non stock
                continue;
            }
            $qoh = get_qoh_on_date($row["stock_id"], $row["loc_code"], $_POST['date_']);
            if ($qoh - $row['units_req'] * input_num('quantity') < 0) {
                display_error(_("The production cannot be processed because a required item would cause a negative inventory balance :") . " " . $row['stock_id'] . " - " . $row['description']);
                $err = true;
            }
        }
        if ($err) {
            set_focus('quantity');
            return false;
        }
    }
    return true;
}
Ejemplo n.º 5
0
function exist_transaction($type, $type_no)
{
    $void_entry = get_voided_entry($type, $type_no);
    if ($void_entry != null) {
        return false;
    }
    switch ($type) {
        case ST_JOURNAL:
            // it's a journal entry
            if (!exists_gl_trans($type, $type_no)) {
                return false;
            }
            break;
        case ST_BANKPAYMENT:
            // it's a payment
        // it's a payment
        case ST_BANKDEPOSIT:
            // it's a deposit
        // it's a deposit
        case ST_BANKTRANSFER:
            // it's a transfer
            if (!exists_bank_trans($type, $type_no)) {
                return false;
            }
            break;
        case ST_SALESINVOICE:
            // it's a customer invoice
        // it's a customer invoice
        case ST_CUSTCREDIT:
            // it's a customer credit note
        // it's a customer credit note
        case ST_CUSTPAYMENT:
            // it's a customer payment
        // it's a customer payment
        case ST_CUSTDELIVERY:
            // it's a customer dispatch
            if (!exists_customer_trans($type, $type_no)) {
                return false;
            }
            break;
        case ST_LOCTRANSFER:
            // it's a stock transfer
            if (get_stock_transfer_items($type_no) == null) {
                return false;
            }
            break;
        case ST_INVADJUST:
            // it's a stock adjustment
            if (get_stock_adjustment_items($type_no) == null) {
                return false;
            }
            break;
        case ST_PURCHORDER:
            // it's a PO
            return false;
        case ST_SUPPRECEIVE:
            // it's a GRN
            if (exists_grn($type_no)) {
                return false;
            }
            break;
        case ST_SUPPINVOICE:
            // it's a suppler invoice
        // it's a suppler invoice
        case ST_SUPPCREDIT:
            // it's a supplier credit note
        // it's a supplier credit note
        case ST_SUPPAYMENT:
            // it's a supplier payment
            if (!exists_supp_trans($type, $type_no)) {
                return false;
            }
            break;
        case ST_WORKORDER:
            // it's a work order
            if (!get_work_order($type_no, true)) {
                return false;
            }
            break;
        case ST_MANUISSUE:
            // it's a work order issue
            if (!exists_work_order_issue($type_no)) {
                return false;
            }
            break;
        case ST_MANURECEIVE:
            // it's a work order production
            if (!exists_work_order_produce($type_no)) {
                return false;
            }
            break;
        case ST_SALESORDER:
            // it's a sales order
        // it's a sales order
        case ST_SALESQUOTE:
            // it's a sales quotation
            return false;
        case ST_COSTUPDATE:
            // it's a stock cost update
            return false;
            break;
    }
    return true;
}
Ejemplo n.º 6
0
        set_focus('stock_id');
        return false;
    }
    return true;
}
//------------------------------------------------------------------------------------
if (isset($_POST['release'])) {
    release_work_order($selected_id, $_POST['released_date'], $_POST['memo_']);
    display_note(tr("The work order has been released to manufacturing."));
    hyperlink_no_params("search_work_orders.php", tr("Select another work order"));
    end_page();
    exit;
}
//------------------------------------------------------------------------------------
start_form();
$myrow = get_work_order($selected_id);
$_POST['released'] = $myrow["released"];
$_POST['memo_'] = "";
if (can_process($myrow)) {
    start_table($table_style2);
    label_row(tr("Work Order #:"), $selected_id);
    label_row(tr("Work Order Reference:"), $myrow["wo_ref"]);
    date_row(tr("Released Date") . ":", 'released_date');
    textarea_row(tr("Memo:"), 'memo_', $_POST['memo_'], 40, 5);
    end_table(1);
    submit_center('release', tr("Release Work Order"));
    hidden('selected_id', $selected_id);
    hidden('stock_id', $myrow['stock_id']);
}
end_form();
end_page();
Ejemplo n.º 7
0
        return false;
    }
    return true;
}
//--------------------------------------------------------------------------------------------------
if (isset($_POST['process']) && can_process() == true) {
    $date = $_POST['date_'];
    begin_transaction();
    add_gl_trans_std_cost(ST_WORKORDER, $_POST['selected_id'], $_POST['date_'], $_POST['cr_acc'], 0, 0, $date . ": " . $wo_cost_types[$_POST['PaymentType']], -input_num('costs'), PT_WORKORDER, $_POST['PaymentType']);
    $is_bank_to = is_bank_account($_POST['cr_acc']);
    if ($is_bank_to) {
        add_bank_trans(ST_WORKORDER, $_POST['selected_id'], $is_bank_to, "", $_POST['date_'], -input_num('costs'), PT_WORKORDER, $_POST['PaymentType'], get_company_currency(), "Cannot insert a destination bank transaction");
    }
    add_gl_trans_std_cost(ST_WORKORDER, $_POST['selected_id'], $_POST['date_'], $_POST['db_acc'], $_POST['dim1'], $_POST['dim2'], $date . ": " . $wo_cost_types[$_POST['PaymentType']], input_num('costs'), PT_WORKORDER, $_POST['PaymentType']);
    //Chaitanya : Apply the costs to manfuctured stock item as adjustement
    $wo = get_work_order($_POST['selected_id']);
    if ($_POST['PaymentType'] == 0) {
        add_labour_cost($wo['stock_id'], 0, $_POST['date_'], input_num('costs'), true);
    } else {
        add_overhead_cost($wo['stock_id'], 0, $_POST['date_'], input_num('costs'), true);
    }
    commit_transaction();
    meta_forward($_SERVER['PHP_SELF'], "AddedID=" . $_POST['selected_id']);
}
//-------------------------------------------------------------------------------------
display_wo_details($_POST['selected_id']);
//-------------------------------------------------------------------------------------
start_form();
hidden('selected_id', $_POST['selected_id']);
//hidden('WOReqQuantity', $_POST['WOReqQuantity']);
start_table(TABLESTYLE2);
Ejemplo n.º 8
0
if (isset($_GET['AddedID'])) {
    include_once $path_to_root . "/reporting/includes/reporting.inc";
    $id = $_GET['AddedID'];
    $stype = ST_WORKORDER;
    display_notification(_("The manufacturing process has been entered."));
    display_note(get_trans_view_str($stype, $id, _("View this Work Order")));
    display_note(get_gl_view_str($stype, $id, _("View the GL Journal Entries for this Work Order")), 1);
    $ar = array('PARAM_0' => $_GET['date'], 'PARAM_1' => $_GET['date'], 'PARAM_2' => $stype);
    display_note(print_link(_("Print the GL Journal Entries for this Work Order"), 702, $ar), 1);
    hyperlink_no_params("search_work_orders.php", _("Select another &Work Order to Process"));
    br();
    end_page();
    exit;
}
//--------------------------------------------------------------------------------------------------
$wo_details = get_work_order($_POST['selected_id']);
if (strlen($wo_details[0]) == 0) {
    display_error(_("The order number sent is not valid."));
    exit;
}
//--------------------------------------------------------------------------------------------------
function can_process()
{
    global $wo_details, $SysPrefs, $Refs;
    if (!$Refs->is_valid($_POST['ref'])) {
        display_error(_("You must enter a reference."));
        set_focus('ref');
        return false;
    }
    if (!is_new_reference($_POST['ref'], 29)) {
        display_error(_("The entered reference is already in use."));
Ejemplo n.º 9
0
function print_workorders()
{
    global $path_to_root, $SysPrefs, $dflt_lang;
    include_once $path_to_root . "/reporting/includes/pdf_report.inc";
    $from = $_POST['PARAM_0'];
    $to = $_POST['PARAM_1'];
    $email = $_POST['PARAM_2'];
    $comments = $_POST['PARAM_3'];
    $orientation = $_POST['PARAM_4'];
    if (!$from || !$to) {
        return;
    }
    $orientation = $orientation ? 'L' : 'P';
    $fno = explode("-", $from);
    $tno = explode("-", $to);
    $from = min($fno[0], $tno[0]);
    $to = max($fno[0], $tno[0]);
    $cols = array(4, 60, 190, 255, 320, 385, 450, 515);
    // $headers in doctext.inc
    $aligns = array('left', 'left', 'left', 'left', 'right', 'right', 'right');
    $params = array('comments' => $comments);
    $cur = get_company_Pref('curr_default');
    if ($email == 0) {
        $rep = new FrontReport(_('WORK ORDER'), "WorkOrderBulk", user_pagesize(), 9, $orientation);
    }
    if ($orientation == 'L') {
        recalculate_cols($cols);
    }
    for ($i = $from; $i <= $to; $i++) {
        $myrow = get_work_order($i);
        if ($myrow === false) {
            continue;
        }
        $date_ = sql2date($myrow["date_"]);
        if ($email == 1) {
            $rep = new FrontReport("", "", user_pagesize(), 9, $orientation);
            $rep->title = _('WORK ORDER');
            $rep->filename = "WorkOrder" . $myrow['wo_ref'] . ".pdf";
        }
        $rep->SetHeaderType('Header2');
        $rep->currency = $cur;
        $rep->Font();
        $rep->Info($params, $cols, null, $aligns);
        $contact = array('email' => $myrow['email'], 'lang' => $dflt_lang, 'name' => $myrow['contact'], 'name2' => '', 'contact');
        $rep->SetCommonData($myrow, null, null, '', 26, $contact);
        $rep->NewPage();
        $result = get_wo_requirements($i);
        $rep->TextCol(0, 5, _("Work Order Requirements"), -2);
        $rep->NewLine(2);
        $has_marked = false;
        while ($myrow2 = db_fetch($result)) {
            $qoh = 0;
            $show_qoh = true;
            // if it's a non-stock item (eg. service) don't show qoh
            if (!has_stock_holding($myrow2["mb_flag"])) {
                $show_qoh = false;
            }
            if ($show_qoh) {
                $qoh = get_qoh_on_date($myrow2["stock_id"], $myrow2["loc_code"], $date_);
            }
            if ($show_qoh && $myrow2["units_req"] * $myrow["units_issued"] > $qoh && !$SysPrefs->allow_negative_stock()) {
                // oops, we don't have enough of one of the component items
                $has_marked = true;
            } else {
                $has_marked = false;
            }
            if ($has_marked) {
                $str = $myrow2['stock_id'] . " ***";
            } else {
                $str = $myrow2['stock_id'];
            }
            $rep->TextCol(0, 1, $str, -2);
            $rep->TextCol(1, 2, $myrow2['description'], -2);
            $rep->TextCol(2, 3, $myrow2['location_name'], -2);
            $rep->TextCol(3, 4, $myrow2['WorkCentreDescription'], -2);
            $dec = get_qty_dec($myrow2["stock_id"]);
            $rep->AmountCol(4, 5, $myrow2['units_req'], $dec, -2);
            $rep->AmountCol(5, 6, $myrow2['units_req'] * $myrow['units_issued'], $dec, -2);
            $rep->AmountCol(6, 7, $myrow2['units_issued'], $dec, -2);
            $rep->NewLine(1);
            if ($rep->row < $rep->bottomMargin + 15 * $rep->lineHeight) {
                $rep->NewPage();
            }
        }
        $rep->NewLine(1);
        $rep->TextCol(0, 5, " *** = " . _("Insufficient stock"), -2);
        $memo = get_comments_string(ST_WORKORDER, $i);
        if ($memo != "") {
            $rep->NewLine();
            $rep->TextColLines(1, 5, $memo, -2);
        }
        if ($email == 1) {
            $myrow['DebtorName'] = $myrow['contact'];
            $myrow['reference'] = $myrow['wo_ref'];
            $rep->End($email);
        }
    }
    if ($email == 0) {
        $rep->End();
    }
}