case ST_JOURNAL : // it's a journal entry
if (!exists_gl_trans($type, $type_no))
return _('Selected transaction does not exists.');
+ if ($wo = check_wo_costing($type, $type_no))
+ return sprintf(_('This transaction cannot be voided because it is part of Work Order %s costs.'), $wo);
void_journal_trans($type, $type_no);
break;
if ($journal)
{
$header = get_journal($myrow['type'], $_GET['trans_no']);
- label_cell(sql2date($header["doc_date"]), "align='center'");
- label_cell(sql2date($header["event_date"]), "align='center'");
+ label_cell($header["doc_date"] == '0000-00-00' ? '-' : sql2date($header["doc_date"]), "align='center'");
+ label_cell($header["event_date"] == '0000-00-00' ? '-' : sql2date($header["event_date"]), "align='center'");
} else
label_cell(get_counterparty_name($_GET['type_id'],$_GET['trans_no']));
label_cell( get_journal_number($myrow['type'], $_GET['trans_no']), "align='center'");
$date, -$amount, PT_WORKORDER, $wo_id, get_company_currency(),
"Cannot insert a destination bank transaction");
}
- add_journal(ST_JOURNAL, $journal_id, $amount, $date, get_company_currency(), $ref);
+ add_journal(ST_JOURNAL, $journal_id, $amount, $date, get_company_currency(), $ref, '', 1, $date, $date);
add_gl_trans_std_cost(ST_JOURNAL, $journal_id, $date, $wo['wip_account'],
$dim1, $dim2, $wo_cost_types[$cost_type], $amount);
0, 0, $memo, -$total_cost);
}
+function check_wo_costing($type, $trans_no)
+{
+ $sql = "SELECT workorder_id FROM ".TB_PREF."wo_costing WHERE trans_type= ".db_escape($type)." AND trans_no=".db_escape($trans_no);
+ $costs = db_query($sql, 'cannot check WO costing');
+
+ if (!db_num_rows($costs))
+ return 0;
+
+ $wo = db_fetch($costs);
+ return $wo['workorder_id'];
+}
+
function void_wo_costing($wo_id)
{
+ global $Refs;
+
$res = get_wo_costing($wo_id);
while($row = db_fetch($res))
{
// void any related gl trans
- void_gl_trans($row['trans_type'], $row['trans_no'], true);
+ $date = Today();
+ $type = $row['trans_type'];
+ $trans_no = $row['trans_no'];
+ $memo = sprintf(_("Voided WO #%s"), $wo_id);
+ void_gl_trans($type, $trans_no, true);
+ add_audit_trail($type, $trans_no, $date, $memo);
+ add_voided_entry($type, $trans_no, $date, $memo);
+ $Refs->restore_last($type, $trans_no);
}
$sql = "DELETE FROM ".TB_PREF."wo_costing WHERE workorder_id=".db_escape($wo_id);
function check_void_wo_issue($issue_no)
{
$issue = get_work_order_issue($issue_no);
+
return $issue['closed'] ? $issue['workorder_id'] : 0;
}
if ($void_entry)
return;
- $issue = get_work_order_issue($type_no);
-
- if (work_order_is_closed($issue['workorder_id']))
+ if (check_void_wo_issue($type_no))
return;
// FIXME update issued material cost
$sql = "UPDATE ".TB_PREF."workorders SET closed=0 WHERE id = "
.db_escape($woid);
+
db_query($sql, "The work order couldn't be reopened");
}
void_work_order_produce($prod['id']);
}
- // close workorder
- $sql = "UPDATE ".TB_PREF."workorders SET closed=1,units_reqd=0,units_issued=0 WHERE id = "
- .db_escape($woid);
- db_query($sql, "The work order couldn't be voided");
-
// void addtional material issues
$issues = get_work_order_issues($woid);
while($issue = db_fetch($issues))
// clear the requirements units received
void_wo_requirements($woid);
+ // close workorder
+ $sql = "UPDATE ".TB_PREF."workorders SET closed=1,units_reqd=0,units_issued=0 WHERE id = "
+ .db_escape($woid);
+ db_query($sql, "The work order couldn't be voided");
+
commit_transaction();
}
ALTER TABLE `0_stock_master` CHANGE COLUMN `assembly_account` `wip_account` VARCHAR(15) NOT NULL default '';
ALTER TABLE `0_stock_category` CHANGE COLUMN `dflt_assembly_act` `dflt_wip_act` VARCHAR(15) NOT NULL default '';
UPDATE `0_sys_prefs` SET `name`='default_wip_act' WHERE `name`='default_assembly_act';
+
+UPDATE `0_wo_issue_items` i, `0_stock_moves` m
+ SET i.unit_cost=m.standard_cost
+ WHERE i.unit_cost=0 AND i.stock_id=m.stock_id AND m.trans_no=i.issue_id AND m.`type`=28 AND m.qty=-i.qty_issued
+
+UPDATE `0_wo_requirements` r, `0_stock_moves` m
+ SET r.unit_cost=m.standard_cost
+ WHERE r.unit_cost=0 AND r.stock_id=m.stock_id AND m.trans_no=r.workorder_id AND m.`type`=26 AND m.qty=-r.units_issued
+
+UPDATE `0_bank_trans` SET person_id=trans_no WHERE person_type_id=26;
ALTER TABLE `0_stock_master` CHANGE COLUMN `assembly_account` `wip_account` VARCHAR(15) NOT NULL default '';
ALTER TABLE `0_stock_category` CHANGE COLUMN `dflt_assembly_act` `dflt_wip_act` VARCHAR(15) NOT NULL default '';
UPDATE `0_sys_prefs` SET `name`='default_wip_act' WHERE `name`='default_assembly_act';
+
+UPDATE `0_wo_issue_items` i, `0_stock_moves` m
+ SET i.unit_cost=m.standard_cost
+ WHERE i.unit_cost=0 AND i.stock_id=m.stock_id AND m.trans_no=i.issue_id AND m.`type`=28 AND m.qty=-i.qty_issued
+
+UPDATE `0_wo_requirements` r, `0_stock_moves` m
+ SET r.unit_cost=m.standard_cost
+ WHERE r.unit_cost=0 AND r.stock_id=m.stock_id AND m.trans_no=r.workorder_id AND m.`type`=26 AND m.qty=-r.units_issued
+
+UPDATE `0_bank_trans` SET person_id=trans_no WHERE person_type_id=26;