diff --git a/wwwroot/supply_contracts_list/add_supply_contracts.dspy b/wwwroot/supply_contracts_list/add_supply_contracts.dspy index 8ad870e..bfceae1 100644 --- a/wwwroot/supply_contracts_list/add_supply_contracts.dspy +++ b/wwwroot/supply_contracts_list/add_supply_contracts.dspy @@ -24,6 +24,21 @@ if not userorgid: } ns['resellerid'] = userorgid +# Auto-generate contract_code if not provided +if not ns.get('contract_code'): + from datetime import datetime as _dt + _prefix = f"SC-{_dt.now().strftime('%Y%m%d')}" + async with DBPools().sqlorContext(get_module_dbname('supplychain')) as _sor: + _recs = await _sor.sqlExe( + "SELECT COUNT(*) as cnt FROM supply_contracts WHERE resellerid = ${rid}$ AND contract_code LIKE ${p}$", + {"rid": userorgid, "p": _prefix + "%"} + ) + _seq = (_recs[0].cnt if _recs else 0) + 1 + ns['contract_code'] = f"{_prefix}-{_seq:04d}" +ns['created_by'] = userorgid +ns['created_at'] = timestampstr() +ns['updated_at'] = timestampstr() + db = DBPools() dbname = get_module_dbname('supplychain') async with db.sqlorContext(dbname) as sor: diff --git a/wwwroot/supply_contracts_list/delete_supply_contracts.dspy b/wwwroot/supply_contracts_list/delete_supply_contracts.dspy index bbf6bb1..e77ec25 100644 --- a/wwwroot/supply_contracts_list/delete_supply_contracts.dspy +++ b/wwwroot/supply_contracts_list/delete_supply_contracts.dspy @@ -21,6 +21,8 @@ ns['resellerid'] = userorgid db = DBPools() dbname = get_module_dbname('supplychain') async with db.sqlorContext(dbname) as sor: + # Cascade delete contract items first + await sor.D('supply_contract_items', {'contract_id': params_kw['id'], 'resellerid': userorgid}) r = await sor.D('supply_contracts', ns) debug('delete success'); return {