- agreement_discount_setting.ui: product list with UiFloat discount inputs
- contract_discount_setting.ui: same for supply contracts
- get_agreement_discount_items.dspy + Python function
- get_contract_discount_items.dspy + Python function
- save_agreement_discount.dspy: create/update/delete items on discount change
- save_contract_discount.dspy: same for supply contracts
- Updated distribution_agreements_list and supply_contracts_list subtables
- supply_contracts_list: add supplier_id to editexclouded
- distribution_agreements_list: add sub_reseller_id to editexclouded
- distribution_agreements_list: fix editable URLs to use custom API dspy paths
- distribution_agreements_list JSON: remove sub_reseller_id query param from new_data_url
Root cause: xls2ui strips code-type fields (those in browserfields.alters with
uitype=code and dataurl) from the generated editexclouded list, even though
they're in the source CRUD JSON config. This causes bricks.js to render UiCode
widgets in add/edit forms that try to call .length on undefined options data,
producing: TypeError: Cannot read properties of undefined (reading 'length')
Force-added generated files (normally gitignored) as temporary fix until
xls2ui is corrected.