Style held quantity in order view.
[order_line_extra.git] / includes / picking.inc
1 <?php
2
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]));
9         }
10 }
11
12 function change_pck_flag($id, $value=null)
13 {
14 display_warning("value $value");
15         if($value === null) $value = true;
16 display_warning("value $value");
17         global  $Ajax;
18
19         $picker = new Picker();
20         list($debtor_no, $branch_code) = explode('_', $id);
21
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);
25         }
26         else {
27                 $picker->insertAllForBranch($debtor_no, $branch_code);
28         }
29         $Ajax->activate('order_line_view');
30 }
31
32
33 class Picker {
34         function picked($debtor_no, $branch_code) {
35                 $sql = "SELECT *
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
40                                                 ";
41
42                 return db_num_rows(db_query($sql)) > 0;
43
44         }
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
49                                                                                 ,sod.id AS detail_id
50                                                                                 , d.quantity AS quantity
51                                                                                 ,IF(".OrderXtraConfig::sql_held_condition().", d.quantity, 0) held
52                                                                                 ,qoh.quantity AS qoh
53                                                                                 ,quantity_before
54                                                                                 ,order_id
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
60                                                 ";
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;
68
69                 $sku    = $stock_id;
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'];
76
77                 $sql = "INSERT INTO ".TB_PREF."topick  SET
78                         order_id = $order_id,
79                         order_link = '$order_link',
80                         location = '$location',
81                         sku     = '$sku',
82                         base = '$base',
83                         variation = '$variation',
84                         item_link = '$item_link',
85                         quantity = -{$quantity},
86                         detail_id = $detail_id,
87                         type = 'order'";
88                 db_query($sql, 'There was a problem inserting the picking information.');
89
90                 # add booked quantity. Insert them as picked so they won't have to be picked
91                 $sql = "INSERT INTO ".TB_PREF."topick  SET
92                         order_id = $order_id,
93                         order_link = '$order_link',
94                         location = '$location',
95                         sku     = '$sku',
96                         item_link = '$item_link',
97                         base = '$base',
98                         variation = '$variation',
99                         quantity = $booked,
100                         detail_id = $detail_id,
101                         type = 'booked'";
102                 db_query($sql, 'There was a problem inserting the picking information.');
103
104                 }
105                         display_warning("E");
106         }
107
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
115                                                 ";
116                 db_query($sql);
117         }
118
119 }
120
121