3 require_once($path_to_root.'/'.'sales/includes/sales_db.inc');
4 function process_picking_flag() {
5 $id = find_submit('_chgpck', false);
6 if ($id != -1 && isset($_POST['pick'])) {
7 $id = str_replace("_update", "", $id);
8 change_pck_flag($id, isset($_POST['pick'][$id]));
12 function change_pck_flag($id, $value=null)
14 display_warning("value $value");
15 if($value === null) $value = true;
16 display_warning("value $value");
19 $picker = new Picker();
20 list($debtor_no, $branch_code) = explode('_', $id);
22 // insert or remove pick order form pick table initial_quantity
23 if($picker->picked($debtor_no, $branch_code)) {
24 $picker->deleteAllForBranch($debtor_no, $branch_code);
27 $picker->insertAllForBranch($debtor_no, $branch_code);
29 $Ajax->activate('order_line_view');
34 function picked($debtor_no, $branch_code) {
36 FROM ".TB_PREF."sales_orders so
37 NATURAL JOIN ".TB_PREF."sales_order_details sod
38 JOIN ".TB_PREF."topick p on (sod.id = p.detail_id)
39 WHERE debtor_no = $debtor_no AND branch_code = $branch_code
42 return db_num_rows(db_query($sql)) > 0;
45 function insertAllForBranch($debtor_no, $branch_code) {
46 $this->deleteAllForBranch($debtor_no, $branch_code);
47 $pick_location = OrderXtraConfig::$default_location;
48 $sql = "SELECT d.stock_id
50 , d.quantity AS quantity
51 ,IF(".OrderXtraConfig::sql_held_condition().", d.quantity, 0) held
55 FROM ".TB_PREF."sales_order_details sod
56 NATURAL JOIN ".TB_PREF."sales_orders so
57 JOIN ".TB_PREF."denorm_order_details_queue d ON (sod.id = d.id)
58 JOIN ".TB_PREF."denorm_qoh qoh ON (qoh.stock_id = sod.stk_code AND loc_code = '$pick_location')
59 WHERE debtor_no = $debtor_no AND branch_code = $branch_code
61 display_warning("$sql");
62 $result = db_query($sql, $sql);
63 display_warning("B $result");
64 while($row=db_fetch($result)) {
65 foreach($row as $key => $value) { $$key = $value; }
66 $available = min($quantity, max($qoh-$quantity_before-$held,0 ));
67 $booked = $quantity - $available;
70 $item_link = "/modules/order_line_extra/item_schedule.php?stock_id=$sku";
71 $order_link = "/sales/sales_order_entry.php?OrderNumber=$order_id";
72 $base = substr($sku, 0, 8);
73 $variation = substr($sku, 9);
74 $branch = get_cust_branch($debtor_no, $branch_code);
75 $location = $branch['branch_ref'];
77 $sql = "INSERT INTO ".TB_PREF."topick SET
79 order_link = '$order_link',
80 location = '$location',
83 variation = '$variation',
84 item_link = '$item_link',
85 quantity = -{$quantity},
86 detail_id = $detail_id,
88 db_query($sql, 'There was a problem inserting the picking information.');
90 # add booked quantity. Insert them as picked so they won't have to be picked
91 $sql = "INSERT INTO ".TB_PREF."topick SET
93 order_link = '$order_link',
94 location = '$location',
96 item_link = '$item_link',
98 variation = '$variation',
100 detail_id = $detail_id,
102 db_query($sql, 'There was a problem inserting the picking information.');
105 display_warning("E");
108 function deleteAllForBranch($debtor_no, $branch_code) {
109 display_warning("deleting for $debtor_no $branch_code");
110 $sql = "DELETE ".TB_PREF."topick p
111 FROM ".TB_PREF."topick p
112 JOIN ".TB_PREF."sales_order_details sod on (sod.id = p.detail_id)
113 NATURAL JOIN ".TB_PREF."sales_orders so
114 WHERE debtor_no = $debtor_no AND branch_code = $branch_code