3 //--------------------------------------------------------------------------------------
5 function add_work_order($wo_ref, $loc_code, $units_reqd, $stock_id,
6 $type, $date_, $required_by, $costs, $memo_)
8 if (!($type == wo_types::advanced()))
9 return add_work_order_quick($wo_ref, $loc_code, $units_reqd, $stock_id, $type, $date_, $costs, $memo_);
13 $date = date2sql($date_);
14 $required = date2sql($required_by);
16 $sql = "INSERT INTO ".TB_PREF."workorders (wo_ref, loc_code, units_reqd, stock_id,
17 type, date_, required_by)
18 VALUES ('$wo_ref', '$loc_code', $units_reqd, '$stock_id',
19 $type, '$date', '$required')";
20 db_query($sql, "could not add work order");
22 $woid = db_insert_id();
24 add_comments(systypes::work_order(), $woid, $required_by, $memo_);
26 add_forms_for_sys_type(systypes::work_order(), $woid);
28 references::save_last($wo_ref, systypes::work_order());
35 //--------------------------------------------------------------------------------------
37 function update_work_order($woid, $loc_code, $units_reqd, $stock_id,
38 $date_, $required_by, $memo_)
42 $date = date2sql($date_);
43 $required = date2sql($required_by);
45 $sql = "UPDATE ".TB_PREF."workorders SET loc_code='$loc_code',
46 units_reqd=$units_reqd, stock_id='$stock_id',
47 required_by='$required',
51 db_query($sql, "could not update work order");
53 update_comments(systypes::work_order(), $woid, null, $memo_);
58 function delete_work_order($woid)
62 // delete the work order requirements
63 delete_wo_requirements($woid);
65 // delete the actual work order
66 $sql = "DELETE FROM ".TB_PREF."workorders WHERE id=$woid";
67 db_query($sql,"The work order could not be deleted");
69 delete_comments(systypes::work_order(), $woid);
71 delete_forms_for_systype(systypes::work_order(), $woid);
76 //--------------------------------------------------------------------------------------
78 function get_work_order($woid, $allow_null=false)
80 $sql = "SELECT ".TB_PREF."workorders.*, ".TB_PREF."stock_master.description As StockItemName,
81 ".TB_PREF."locations.location_name
82 FROM ".TB_PREF."workorders, ".TB_PREF."stock_master, ".TB_PREF."locations
83 WHERE ".TB_PREF."stock_master.stock_id=".TB_PREF."workorders.stock_id
84 AND ".TB_PREF."locations.loc_code=".TB_PREF."workorders.loc_code
85 AND ".TB_PREF."workorders.id=$woid
86 GROUP BY ".TB_PREF."workorders.id";
88 $result = db_query($sql, "The work order issues could not be retrieved");
90 if (!$allow_null && db_num_rows($result) == 0)
91 display_db_error("Could not find work order $workOrder", $sql);
93 return db_fetch($result);
96 //--------------------------------------------------------------------------------------
98 function work_order_has_productions($woid)
100 $sql = "SELECT COUNT(*) FROM ".TB_PREF."wo_manufacture WHERE workorder_id=$woid";
101 $result = db_query($sql, "query work order for productions");
103 $myrow = db_fetch_row($result);
104 return ($myrow[0] > 0);
108 //--------------------------------------------------------------------------------------
110 function work_order_has_issues($woid)
112 $sql = "SELECT COUNT(*) FROM ".TB_PREF."wo_issues WHERE workorder_id=$woid";
113 $result = db_query($sql, "query work order for issues");
115 $myrow = db_fetch_row($result);
116 return ($myrow[0] > 0);
119 //--------------------------------------------------------------------------------------
121 function work_order_has_payments($woid)
123 $result = get_bank_trans(null, null, payment_person_types::WorkOrder(), $woid);
125 return (db_num_rows($result) != 0);
128 //--------------------------------------------------------------------------------------
130 function release_work_order($woid, $releaseDate, $memo_)
134 $myrow = get_work_order($woid);
135 $stock_id = $myrow["stock_id"];
137 $date = date2sql($releaseDate);
139 $sql = "UPDATE ".TB_PREF."workorders SET released_date='$date',
140 released=1 WHERE id = $woid";
141 db_query($sql, "could not release work order");
143 // create Work Order Requirements based on the bom
144 create_wo_requirements($woid, $stock_id);
146 add_comments(systypes::work_order(), $woid, $releaseDate, $memo_);
148 commit_transaction();
151 //--------------------------------------------------------------------------------------
153 function close_work_order($woid)
155 $sql = "UPDATE ".TB_PREF."workorders SET closed=1 WHERE id = $woid";
156 db_query($sql, "could not close work order");
159 //--------------------------------------------------------------------------------------
161 function work_order_is_closed($woid)
163 $sql = "SELECT closed FROM ".TB_PREF."workorders WHERE id = $woid";
164 $result = db_query($sql, "could not query work order");
165 $row = db_fetch_row($result);
166 return ($row[0] > 0);
169 //--------------------------------------------------------------------------------------
171 function work_order_update_finished_quantity($woid, $quantity, $force_close=0)
173 $sql = "UPDATE ".TB_PREF."workorders SET units_issued = units_issued + $quantity,
174 closed = ((units_issued >= units_reqd) OR $force_close)
177 db_query($sql, "The work order issued quantity couldn't be updated");
180 //--------------------------------------------------------------------------------------
182 function void_work_order($woid)
184 $work_order = get_work_order($woid);
186 if (!($work_order["type"] == wo_types::advanced()))
190 $sql = "UPDATE ".TB_PREF."workorders SET closed=1,units_issued=0 WHERE id = $woid";
191 db_query($sql, "The work order couldn't be voided");
193 // void all related stock moves
194 void_stock_move(systypes::work_order(), $woid);
196 // void any related gl trans
197 void_gl_trans(systypes::work_order(), $woid, true);
199 // clear the requirements units received
200 void_wo_requirements($woid);
202 commit_transaction();
206 // void everything inside the work order : issues, productions, payments
210 //--------------------------------------------------------------------------------------