public function put($rest, $id)
 {
     $req = $rest->request();
     $info = $req->post();
     $old_cost = get_standard_cost($id);
     $update_no = stock_cost_update($id, $info['material_cost'], $info['labour_cost'], $info['overhead_cost'], $old_cost);
     api_success_response(json_encode(array('stock_id' => $id)));
 }
function check_item_data()
{
    global $SysPrefs, $allow_negative_prices;
    $is_inventory_item = is_inventory_item(get_post('stock_id'));
    if (!get_post('stock_id_text', true)) {
        display_error(_("Item description cannot be empty."));
        set_focus('stock_id_edit');
        return false;
    } elseif (!check_num('qty', 0) || !check_num('Disc', 0, 100)) {
        display_error(_("The item could not be updated because you are attempting to set the quantity ordered to less than 0, or the discount percent to more than 100."));
        set_focus('qty');
        return false;
    } elseif (!check_num('price', 0) && (!$allow_negative_prices || $is_inventory_item)) {
        display_error(_("Price for inventory item must be entered and can not be less than 0"));
        set_focus('price');
        return false;
    } elseif (isset($_POST['LineNo']) && isset($_SESSION['Items']->line_items[$_POST['LineNo']]) && !check_num('qty', $_SESSION['Items']->line_items[$_POST['LineNo']]->qty_done)) {
        set_focus('qty');
        display_error(_("You attempting to make the quantity ordered a quantity less than has already been delivered. The quantity delivered cannot be modified retrospectively."));
        return false;
    }
    $cost_home = get_standard_cost(get_post('stock_id'));
    // Added 2011-03-27 Joe Hunt
    $cost = $cost_home / get_exchange_rate_from_home_currency($_SESSION['Items']->customer_currency, $_SESSION['Items']->document_date);
    if (input_num('price') < $cost) {
        $dec = user_price_dec();
        $curr = $_SESSION['Items']->customer_currency;
        $price = number_format2(input_num('price'), $dec);
        if ($cost_home == $cost) {
            $std_cost = number_format2($cost_home, $dec);
        } else {
            $price = $curr . " " . $price;
            $std_cost = $curr . " " . number_format2($cost, $dec);
        }
        display_warning(sprintf(_("Price %s is below Standard Cost %s"), $price, $std_cost));
    }
    return true;
}
function handle_commit_order()
{
    $cart =& $_SESSION['PO'];
    if (can_commit()) {
        copy_to_cart();
        if ($cart->trans_type != ST_PURCHORDER) {
            // for direct grn/invoice set same dates for lines as for whole document
            foreach ($cart->line_items as $line_no => $line) {
                $cart->line_items[$line_no]->req_del_date = $cart->orig_order_date;
            }
        }
        if ($cart->order_no == 0) {
            // new po/grn/invoice
            /*its a new order to be inserted */
            $ref = $cart->reference;
            if ($cart->trans_type != ST_PURCHORDER) {
                $cart->reference = 'auto';
                begin_transaction();
                // all db changes as single transaction for direct document
            }
            $order_no = add_po($cart);
            new_doc_date($cart->orig_order_date);
            $cart->order_no = $order_no;
            if ($cart->trans_type == ST_PURCHORDER) {
                unset($_SESSION['PO']);
                meta_forward($_SERVER['PHP_SELF'], "AddedID={$order_no}");
            }
            //Direct GRN
            if ($cart->trans_type == ST_SUPPRECEIVE) {
                $cart->reference = $ref;
            }
            if ($cart->trans_type != ST_SUPPINVOICE) {
                $cart->Comments = $cart->reference;
            }
            //grn does not hold supp_ref
            foreach ($cart->line_items as $key => $line) {
                $cart->line_items[$key]->receive_qty = $line->quantity;
            }
            $grn_no = add_grn($cart);
            if ($cart->trans_type == ST_SUPPRECEIVE) {
                commit_transaction();
                // save PO+GRN
                unset($_SESSION['PO']);
                meta_forward($_SERVER['PHP_SELF'], "AddedGRN={$grn_no}");
            }
            //			Direct Purchase Invoice
            $inv = new supp_trans(ST_SUPPINVOICE);
            $inv->Comments = $cart->Comments;
            $inv->supplier_id = $cart->supplier_id;
            $inv->tran_date = $cart->orig_order_date;
            $inv->due_date = $cart->due_date;
            $inv->reference = $ref;
            $inv->supp_reference = $cart->supp_ref;
            $inv->tax_included = $cart->tax_included;
            $supp = get_supplier($cart->supplier_id);
            $inv->tax_group_id = $supp['tax_group_id'];
            $inv->ov_amount = $inv->ov_gst = $inv->ov_discount = 0;
            $total = 0;
            foreach ($cart->line_items as $key => $line) {
                $inv->add_grn_to_trans($line->grn_item_id, $line->po_detail_rec, $line->stock_id, $line->item_description, $line->receive_qty, 0, $line->receive_qty, $line->price, $line->price, true, get_standard_cost($line->stock_id), '');
                $inv->ov_amount += round2($line->receive_qty * $line->price, user_price_dec());
            }
            $inv->tax_overrides = $cart->tax_overrides;
            if (!$inv->tax_included) {
                $taxes = $inv->get_taxes($inv->tax_group_id, 0, false);
                foreach ($taxes as $taxitem) {
                    $total += isset($taxitem['Override']) ? $taxitem['Override'] : $taxitem['Value'];
                }
            }
            $inv->ex_rate = $cart->ex_rate;
            $inv_no = add_supp_invoice($inv);
            commit_transaction();
            // save PO+GRN+PI
            // FIXME payment for cash terms. (Needs cash account selection)
            unset($_SESSION['PO']);
            meta_forward($_SERVER['PHP_SELF'], "AddedPI={$inv_no}");
        } else {
            // order modification
            $order_no = update_po($cart);
            unset($_SESSION['PO']);
            meta_forward($_SERVER['PHP_SELF'], "AddedID={$order_no}&Updated=1");
        }
    }
}
Beispiel #4
0
include_once $path_to_root . "/inventory/includes/inventory_db.inc";
if (!@$_GET['popup']) {
    $js = "";
    if ($use_popup_windows) {
        $js .= get_js_open_window(900, 500);
    }
    page(_($help_context = "Inventory Item Cost Update"), false, false, "", $js);
}
//--------------------------------------------------------------------------------------
check_db_has_costable_items(_("There are no costable inventory items defined in the system (Purchased or manufactured items)."));
if (isset($_GET['stock_id'])) {
    $_POST['stock_id'] = $_GET['stock_id'];
}
//--------------------------------------------------------------------------------------
if (isset($_POST['UpdateData'])) {
    $old_cost = get_standard_cost($_POST['stock_id']);
    $new_cost = input_num('material_cost') + input_num('labour_cost') + input_num('overhead_cost');
    $should_update = true;
    if (!check_num('material_cost') || !check_num('labour_cost') || !check_num('overhead_cost')) {
        display_error(_("The entered cost is not numeric."));
        set_focus('material_cost');
        $should_update = false;
    } elseif ($old_cost == $new_cost) {
        display_error(_("The new cost is the same as the old cost. Cost was not updated."));
        $should_update = false;
    }
    if ($should_update) {
        $update_no = stock_cost_update($_POST['stock_id'], input_num('material_cost'), input_num('labour_cost'), input_num('overhead_cost'), $old_cost);
        display_notification(_("Cost has been updated."));
        if ($update_no > 0) {
            display_notification(get_gl_view_str(ST_COSTUPDATE, $update_no, _("View the GL Journal Entries for this Cost Update")));