shutro-erp 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/account_portal/.kosh/bindings.js +1 -1
- package/dist/account_portal/.kosh/schema.d.ts +54 -3
- package/dist/account_portal/module.d.ts +359 -6
- package/dist/accounting/.kosh/bindings.js +1 -1
- package/dist/accounting/.kosh/schema.d.ts +54 -3
- package/dist/accounting/index.js +214 -2
- package/dist/accounting/module.d.ts +217 -5
- package/dist/accounting/module.js +23 -2
- package/dist/calendar/.kosh/bindings.d.ts +22 -0
- package/dist/calendar/.kosh/bindings.js +15 -0
- package/dist/calendar/.kosh/schema.d.ts +795 -0
- package/dist/calendar/demo.d.ts +6 -0
- package/dist/calendar/demo.js +24 -0
- package/dist/calendar/index.d.ts +3 -0
- package/dist/calendar/index.js +291 -0
- package/dist/calendar/module.d.ts +1705 -0
- package/dist/calendar/module.js +180 -0
- package/dist/cli/init.js +48 -0
- package/dist/cli/templates.d.ts +1 -1
- package/dist/cli/templates.js +137 -0
- package/dist/contacts/.kosh/bindings.js +1 -1
- package/dist/contacts/.kosh/schema.d.ts +78 -3
- package/dist/contacts/demo.js +30 -1
- package/dist/contacts/index.d.ts +1 -1
- package/dist/contacts/index.js +155 -9
- package/dist/contacts/module.d.ts +338 -2
- package/dist/contacts/module.js +82 -5
- package/dist/crm/.kosh/bindings.d.ts +22 -0
- package/dist/crm/.kosh/bindings.js +15 -0
- package/dist/crm/.kosh/schema.d.ts +799 -0
- package/dist/crm/demo.d.ts +6 -0
- package/dist/crm/demo.js +45 -0
- package/dist/crm/index.d.ts +3 -0
- package/dist/crm/index.js +361 -0
- package/dist/crm/module.d.ts +1843 -0
- package/dist/crm/module.js +207 -0
- package/dist/event/.kosh/bindings.d.ts +22 -0
- package/dist/event/.kosh/bindings.js +15 -0
- package/dist/event/.kosh/schema.d.ts +843 -0
- package/dist/event/demo.d.ts +6 -0
- package/dist/event/demo.js +65 -0
- package/dist/event/index.d.ts +14 -0
- package/dist/event/index.js +333 -0
- package/dist/event/mails.d.ts +15 -0
- package/dist/event/mails.js +112 -0
- package/dist/event/module.d.ts +2800 -0
- package/dist/event/module.js +323 -0
- package/dist/event/web/CheckInBox.d.ts +9 -0
- package/dist/event/web/CheckInBox.js +87 -0
- package/dist/event/web/index.d.ts +11 -0
- package/dist/event/web/index.js +16 -0
- package/dist/event/web/messages.d.ts +2 -0
- package/dist/event/web/messages.js +23 -0
- package/dist/event_account/.kosh/bindings.d.ts +22 -0
- package/dist/event_account/.kosh/bindings.js +15 -0
- package/dist/event_account/.kosh/schema.d.ts +1639 -0
- package/dist/event_account/index.d.ts +3 -0
- package/dist/event_account/index.js +28 -0
- package/dist/event_account/module.d.ts +6968 -0
- package/dist/event_account/module.js +90 -0
- package/dist/hr/.kosh/bindings.d.ts +22 -0
- package/dist/hr/.kosh/bindings.js +15 -0
- package/dist/hr/.kosh/schema.d.ts +878 -0
- package/dist/hr/demo.d.ts +6 -0
- package/dist/hr/demo.js +60 -0
- package/dist/hr/index.d.ts +3 -0
- package/dist/hr/index.js +483 -0
- package/dist/hr/module.d.ts +2611 -0
- package/dist/hr/module.js +350 -0
- package/dist/l10n_bd/.kosh/bindings.js +1 -1
- package/dist/l10n_bd/.kosh/schema.d.ts +54 -3
- package/dist/l10n_bd/module.d.ts +359 -6
- package/dist/l10n_in/.kosh/bindings.js +1 -1
- package/dist/l10n_in/.kosh/schema.d.ts +54 -3
- package/dist/l10n_in/module.d.ts +380 -7
- package/dist/maintenance/.kosh/bindings.d.ts +22 -0
- package/dist/maintenance/.kosh/bindings.js +15 -0
- package/dist/maintenance/.kosh/schema.d.ts +911 -0
- package/dist/maintenance/demo.d.ts +6 -0
- package/dist/maintenance/demo.js +60 -0
- package/dist/maintenance/index.d.ts +3 -0
- package/dist/maintenance/index.js +422 -0
- package/dist/maintenance/module.d.ts +3545 -0
- package/dist/maintenance/module.js +446 -0
- package/dist/maintenance_stock/.kosh/bindings.d.ts +22 -0
- package/dist/maintenance_stock/.kosh/bindings.js +15 -0
- package/dist/maintenance_stock/.kosh/schema.d.ts +1371 -0
- package/dist/maintenance_stock/index.d.ts +9 -0
- package/dist/maintenance_stock/index.js +52 -0
- package/dist/maintenance_stock/module.d.ts +6953 -0
- package/dist/maintenance_stock/module.js +192 -0
- package/dist/modules-sdk/index.d.ts +1 -1
- package/dist/modules-sdk/manifest.d.ts +70 -0
- package/dist/modules-sdk/manifest.js +35 -1
- package/dist/mrp/.kosh/bindings.d.ts +22 -0
- package/dist/mrp/.kosh/bindings.js +15 -0
- package/dist/mrp/.kosh/schema.d.ts +1378 -0
- package/dist/mrp/demo.d.ts +7 -0
- package/dist/mrp/demo.js +42 -0
- package/dist/mrp/index.d.ts +3 -0
- package/dist/mrp/index.js +392 -0
- package/dist/mrp/module.d.ts +8608 -0
- package/dist/mrp/module.js +695 -0
- package/dist/mrp_account/.kosh/bindings.d.ts +22 -0
- package/dist/mrp_account/.kosh/bindings.js +15 -0
- package/dist/mrp_account/.kosh/schema.d.ts +2106 -0
- package/dist/mrp_account/index.d.ts +3 -0
- package/dist/mrp_account/index.js +22 -0
- package/dist/mrp_account/module.d.ts +20840 -0
- package/dist/mrp_account/module.js +123 -0
- package/dist/payment/.kosh/bindings.js +1 -1
- package/dist/payment/.kosh/schema.d.ts +54 -3
- package/dist/payment/module.d.ts +359 -6
- package/dist/portal/.kosh/bindings.js +1 -1
- package/dist/portal/.kosh/schema.d.ts +78 -3
- package/dist/portal/module.d.ts +166 -2
- package/dist/pos/.kosh/bindings.d.ts +22 -0
- package/dist/pos/.kosh/bindings.js +15 -0
- package/dist/pos/.kosh/schema.d.ts +1690 -0
- package/dist/pos/accounting.d.ts +10 -0
- package/dist/pos/accounting.js +149 -0
- package/dist/pos/demo.d.ts +6 -0
- package/dist/pos/demo.js +90 -0
- package/dist/pos/index.d.ts +9 -0
- package/dist/pos/index.js +349 -0
- package/dist/pos/module.d.ts +9636 -0
- package/dist/pos/module.js +423 -0
- package/dist/pos/routes.d.ts +39 -0
- package/dist/pos/routes.js +368 -0
- package/dist/pos/web/Register.d.ts +9 -0
- package/dist/pos/web/Register.js +252 -0
- package/dist/pos/web/index.d.ts +11 -0
- package/dist/pos/web/index.js +16 -0
- package/dist/pos/web/messages.d.ts +2 -0
- package/dist/pos/web/messages.js +87 -0
- package/dist/pos_stock/.kosh/bindings.d.ts +22 -0
- package/dist/pos_stock/.kosh/bindings.js +15 -0
- package/dist/pos_stock/.kosh/schema.d.ts +2015 -0
- package/dist/pos_stock/index.d.ts +9 -0
- package/dist/pos_stock/index.js +35 -0
- package/dist/pos_stock/module.d.ts +11935 -0
- package/dist/pos_stock/module.js +115 -0
- package/dist/product/.kosh/bindings.js +1 -1
- package/dist/product/.kosh/schema.d.ts +51 -1
- package/dist/product/index.js +81 -4
- package/dist/product/module.d.ts +43 -1
- package/dist/product/module.js +9 -2
- package/dist/project/.kosh/bindings.js +1 -1
- package/dist/project/.kosh/schema.d.ts +54 -3
- package/dist/project/index.js +147 -7
- package/dist/project/module.d.ts +210 -2
- package/dist/project/module.js +52 -5
- package/dist/project_portal/.kosh/bindings.js +1 -1
- package/dist/project_portal/.kosh/schema.d.ts +54 -3
- package/dist/project_portal/module.d.ts +353 -4
- package/dist/purchase/.kosh/bindings.js +1 -1
- package/dist/purchase/.kosh/schema.d.ts +54 -3
- package/dist/purchase/index.js +163 -3
- package/dist/purchase/module.d.ts +215 -3
- package/dist/purchase/module.js +21 -3
- package/dist/purchase_account/.kosh/bindings.js +1 -1
- package/dist/purchase_account/.kosh/schema.d.ts +55 -3
- package/dist/purchase_account/index.js +26 -1
- package/dist/purchase_account/module.d.ts +393 -7
- package/dist/purchase_portal/.kosh/bindings.js +1 -1
- package/dist/purchase_portal/.kosh/schema.d.ts +54 -3
- package/dist/purchase_portal/module.d.ts +366 -5
- package/dist/purchase_stock/.kosh/bindings.d.ts +22 -0
- package/dist/purchase_stock/.kosh/bindings.js +15 -0
- package/dist/purchase_stock/.kosh/schema.d.ts +1310 -0
- package/dist/purchase_stock/index.d.ts +7 -0
- package/dist/purchase_stock/index.js +91 -0
- package/dist/purchase_stock/module.d.ts +6763 -0
- package/dist/purchase_stock/module.js +144 -0
- package/dist/purchase_stock_account/.kosh/bindings.d.ts +22 -0
- package/dist/purchase_stock_account/.kosh/bindings.js +15 -0
- package/dist/purchase_stock_account/.kosh/schema.d.ts +1959 -0
- package/dist/purchase_stock_account/index.d.ts +3 -0
- package/dist/purchase_stock_account/index.js +24 -0
- package/dist/purchase_stock_account/module.d.ts +35366 -0
- package/dist/purchase_stock_account/module.js +162 -0
- package/dist/recruitment/.kosh/bindings.d.ts +22 -0
- package/dist/recruitment/.kosh/bindings.js +15 -0
- package/dist/recruitment/.kosh/schema.d.ts +990 -0
- package/dist/recruitment/demo.d.ts +6 -0
- package/dist/recruitment/demo.js +45 -0
- package/dist/recruitment/index.d.ts +3 -0
- package/dist/recruitment/index.js +385 -0
- package/dist/recruitment/module.d.ts +3247 -0
- package/dist/recruitment/module.js +193 -0
- package/dist/recruitment/web/HireButton.d.ts +9 -0
- package/dist/recruitment/web/HireButton.js +32 -0
- package/dist/recruitment/web/index.d.ts +11 -0
- package/dist/recruitment/web/index.js +16 -0
- package/dist/recruitment/web/messages.d.ts +2 -0
- package/dist/recruitment/web/messages.js +19 -0
- package/dist/reporting/documents.d.ts +5 -0
- package/dist/reporting/documents.js +28 -1
- package/dist/reporting/index.d.ts +1 -1
- package/dist/reporting/index.js +4 -2
- package/dist/reporting/models.js +9 -0
- package/dist/reporting/overviews.d.ts +16 -0
- package/dist/reporting/overviews.js +56 -0
- package/dist/reporting/routes-documents.js +1 -1
- package/dist/reporting/routes.js +138 -80
- package/dist/reporting/web/DashboardView.d.ts +11 -0
- package/dist/reporting/web/DashboardView.js +2 -2
- package/dist/reporting/web/DesignerView.js +5 -0
- package/dist/reporting/web/Overview.d.ts +9 -0
- package/dist/reporting/web/Overview.js +53 -0
- package/dist/reporting/web/index.d.ts +1 -0
- package/dist/reporting/web/index.js +4 -1
- package/dist/reporting/web/messages.js +9 -0
- package/dist/sale_account/.kosh/bindings.js +1 -1
- package/dist/sale_account/.kosh/schema.d.ts +59 -3
- package/dist/sale_account/index.js +22 -1
- package/dist/sale_account/module.d.ts +461 -7
- package/dist/sale_portal/.kosh/bindings.js +1 -1
- package/dist/sale_portal/.kosh/schema.d.ts +58 -3
- package/dist/sale_portal/module.d.ts +434 -5
- package/dist/sale_project/.kosh/bindings.js +1 -1
- package/dist/sale_project/.kosh/schema.d.ts +60 -3
- package/dist/sale_project/module.d.ts +476 -6
- package/dist/sale_stock/.kosh/bindings.d.ts +22 -0
- package/dist/sale_stock/.kosh/bindings.js +15 -0
- package/dist/sale_stock/.kosh/schema.d.ts +1228 -0
- package/dist/sale_stock/index.d.ts +7 -0
- package/dist/sale_stock/index.js +84 -0
- package/dist/sale_stock/module.d.ts +6791 -0
- package/dist/sale_stock/module.js +146 -0
- package/dist/sales/.kosh/bindings.js +1 -1
- package/dist/sales/.kosh/schema.d.ts +58 -3
- package/dist/sales/index.js +191 -4
- package/dist/sales/module.d.ts +355 -3
- package/dist/sales/module.js +78 -3
- package/dist/server/api/metadata.d.ts +5 -0
- package/dist/server/api/metadata.js +5 -0
- package/dist/server/api/rest.js +64 -1
- package/dist/server/api/views.js +1 -0
- package/dist/server/app-settings.d.ts +7 -0
- package/dist/server/app-settings.js +10 -0
- package/dist/server/auth/base.js +9 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.js +1 -0
- package/dist/settings/app-settings.d.ts +2 -0
- package/dist/settings/app-settings.js +518 -0
- package/dist/settings/index.d.ts +1 -0
- package/dist/settings/index.js +15 -0
- package/dist/settings/people.js +29 -5
- package/dist/settings/web/AppSettingsPage.d.ts +11 -0
- package/dist/settings/web/AppSettingsPage.js +210 -0
- package/dist/settings/web/OverviewPage.js +16 -3
- package/dist/settings/web/PeoplePage.js +20 -6
- package/dist/settings/web/index.d.ts +1 -0
- package/dist/settings/web/index.js +3 -0
- package/dist/settings/web/messages.js +118 -2
- package/dist/stock/.kosh/bindings.d.ts +22 -0
- package/dist/stock/.kosh/bindings.js +15 -0
- package/dist/stock/.kosh/schema.d.ts +1147 -0
- package/dist/stock/demo.d.ts +7 -0
- package/dist/stock/demo.js +55 -0
- package/dist/stock/index.d.ts +3 -0
- package/dist/stock/index.js +674 -0
- package/dist/stock/module.d.ts +6330 -0
- package/dist/stock/module.js +1325 -0
- package/dist/stock/web/ScanBox.d.ts +8 -0
- package/dist/stock/web/ScanBox.js +90 -0
- package/dist/stock/web/index.d.ts +11 -0
- package/dist/stock/web/index.js +16 -0
- package/dist/stock/web/messages.d.ts +2 -0
- package/dist/stock/web/messages.js +25 -0
- package/dist/stock_account/.kosh/bindings.d.ts +22 -0
- package/dist/stock_account/.kosh/bindings.js +15 -0
- package/dist/stock_account/.kosh/schema.d.ts +1875 -0
- package/dist/stock_account/index.d.ts +3 -0
- package/dist/stock_account/index.js +130 -0
- package/dist/stock_account/module.d.ts +10655 -0
- package/dist/stock_account/module.js +339 -0
- package/dist/storage/attachments.d.ts +5 -0
- package/dist/storage/attachments.js +12 -1
- package/dist/storage/models.js +3 -0
- package/dist/storage/routes.js +13 -2
- package/dist/todo/.kosh/bindings.d.ts +22 -0
- package/dist/todo/.kosh/bindings.js +15 -0
- package/dist/todo/.kosh/schema.d.ts +732 -0
- package/dist/todo/demo.d.ts +6 -0
- package/dist/todo/demo.js +35 -0
- package/dist/todo/index.d.ts +3 -0
- package/dist/todo/index.js +187 -0
- package/dist/todo/module.d.ts +1180 -0
- package/dist/todo/module.js +130 -0
- package/dist/trade_finance/.kosh/bindings.d.ts +22 -0
- package/dist/trade_finance/.kosh/bindings.js +15 -0
- package/dist/trade_finance/.kosh/schema.d.ts +884 -0
- package/dist/trade_finance/demo.d.ts +6 -0
- package/dist/trade_finance/demo.js +63 -0
- package/dist/trade_finance/index.d.ts +3 -0
- package/dist/trade_finance/index.js +413 -0
- package/dist/trade_finance/module.d.ts +3779 -0
- package/dist/trade_finance/module.js +505 -0
- package/dist/trade_finance_account/.kosh/bindings.d.ts +22 -0
- package/dist/trade_finance_account/.kosh/bindings.js +15 -0
- package/dist/trade_finance_account/.kosh/schema.d.ts +1711 -0
- package/dist/trade_finance_account/index.d.ts +3 -0
- package/dist/trade_finance_account/index.js +92 -0
- package/dist/trade_finance_account/module.d.ts +7928 -0
- package/dist/trade_finance_account/module.js +244 -0
- package/dist/trade_finance_purchase/.kosh/bindings.d.ts +22 -0
- package/dist/trade_finance_purchase/.kosh/bindings.js +15 -0
- package/dist/trade_finance_purchase/.kosh/schema.d.ts +1153 -0
- package/dist/trade_finance_purchase/index.d.ts +8 -0
- package/dist/trade_finance_purchase/index.js +50 -0
- package/dist/trade_finance_purchase/module.d.ts +4252 -0
- package/dist/trade_finance_purchase/module.js +44 -0
- package/dist/trade_finance_sale/.kosh/bindings.d.ts +22 -0
- package/dist/trade_finance_sale/.kosh/bindings.js +15 -0
- package/dist/trade_finance_sale/.kosh/schema.d.ts +1071 -0
- package/dist/trade_finance_sale/index.d.ts +8 -0
- package/dist/trade_finance_sale/index.js +50 -0
- package/dist/trade_finance_sale/module.d.ts +4280 -0
- package/dist/trade_finance_sale/module.js +44 -0
- package/dist/ui/api.d.ts +2 -1
- package/dist/ui/api.js +2 -1
- package/dist/ui/app.js +2 -1
- package/dist/ui/components/AppIcon.js +23 -1
- package/dist/ui/components/primitives.d.ts +2 -0
- package/dist/ui/components/primitives.js +7 -1
- package/dist/ui/i18n/messages.d.ts +23 -0
- package/dist/ui/i18n/messages.js +38 -0
- package/dist/ui/index.d.ts +1 -0
- package/dist/ui/index.js +1 -0
- package/dist/ui/offline/queue.d.ts +5 -1
- package/dist/ui/offline/queue.js +2 -0
- package/dist/ui/registry.d.ts +5 -0
- package/dist/ui/shell/Home.js +55 -4
- package/dist/ui/views/FormView.js +98 -17
- package/dist/ui/views/KanbanView.d.ts +2 -0
- package/dist/ui/views/KanbanView.js +32 -3
- package/dist/ui/views/ListView.js +108 -11
- package/dist/ui/views/StatsRow.d.ts +14 -0
- package/dist/ui/views/StatsRow.js +88 -0
- package/dist/ui/views/widgets.d.ts +2 -1
- package/dist/ui/views/widgets.js +194 -1
- package/dist/views/builders.d.ts +19 -2
- package/dist/views/builders.js +21 -1
- package/dist/views/condition.d.ts +6 -0
- package/dist/views/condition.js +20 -0
- package/dist/views/documents.d.ts +8 -0
- package/dist/views/extend.d.ts +2 -2
- package/dist/views/extend.js +11 -1
- package/dist/views/index.d.ts +2 -2
- package/dist/views/index.js +2 -2
- package/dist/views/types.d.ts +52 -5
- package/dist/views/validate.js +39 -1
- package/dist/website/.kosh/bindings.d.ts +22 -0
- package/dist/website/.kosh/bindings.js +15 -0
- package/dist/website/.kosh/schema.d.ts +881 -0
- package/dist/website/demo.d.ts +6 -0
- package/dist/website/demo.js +115 -0
- package/dist/website/index.d.ts +9 -0
- package/dist/website/index.js +250 -0
- package/dist/website/module.d.ts +2987 -0
- package/dist/website/module.js +281 -0
- package/dist/website/render.d.ts +45 -0
- package/dist/website/render.js +102 -0
- package/dist/website/routes.d.ts +12 -0
- package/dist/website/routes.js +246 -0
- package/dist/website/web/PagePreview.d.ts +7 -0
- package/dist/website/web/PagePreview.js +33 -0
- package/dist/website/web/index.d.ts +11 -0
- package/dist/website/web/index.js +16 -0
- package/dist/website/web/messages.d.ts +2 -0
- package/dist/website/web/messages.js +15 -0
- package/dist/website_crm/.kosh/bindings.d.ts +22 -0
- package/dist/website_crm/.kosh/bindings.js +15 -0
- package/dist/website_crm/.kosh/schema.d.ts +966 -0
- package/dist/website_crm/index.d.ts +3 -0
- package/dist/website_crm/index.js +39 -0
- package/dist/website_crm/module.d.ts +2955 -0
- package/dist/website_crm/module.js +44 -0
- package/package.json +118 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The data layer of the Production ↔ Accounting bridge (RFC 0021, Production step 2): a product made enters stock at
|
|
3
|
+
* what its order consumed (the components' valuation) plus its operations (minutes at the work centres' rates), and
|
|
4
|
+
* the operations are posted into Work in progress against Production labour and overhead — so what goes into Work in
|
|
5
|
+
* progress for an order comes out of it with the product, to the cent.
|
|
6
|
+
*/
|
|
7
|
+
import { mrpShutro } from '../mrp/index.js';
|
|
8
|
+
import { orm } from '../server/orm.js';
|
|
9
|
+
import { stockShutro } from '../stock/index.js';
|
|
10
|
+
import { stockAccountShutro, stockAccountsOf } from '../stock_account/index.js';
|
|
11
|
+
import { defineModule, extendModel } from './.kosh/bindings.js';
|
|
12
|
+
const zero = orm.toDecimal(0);
|
|
13
|
+
const money = (d) => d.toDecimalPlaces(2);
|
|
14
|
+
/** The labour and overhead account: its code in the chart, made when missing. */
|
|
15
|
+
export const LABOUR_ACCOUNT = {
|
|
16
|
+
code: '5200',
|
|
17
|
+
name: 'Production labour and overhead',
|
|
18
|
+
type: 'expense_direct_cost',
|
|
19
|
+
};
|
|
20
|
+
/** The production order an output transfer belongs to, with what its components cost. */
|
|
21
|
+
async function madeBy(env, picking) {
|
|
22
|
+
const [order] = await (await env.model('mrp.production').search({ where: { output: picking }, limit: 1 })).load({});
|
|
23
|
+
if (order === undefined)
|
|
24
|
+
return null;
|
|
25
|
+
const [bill] = order.bom === null
|
|
26
|
+
? []
|
|
27
|
+
: await env.model('mrp.bom').browse([order.bom.id]).load({ byproducts: true });
|
|
28
|
+
const shares = new Map([...(bill?.byproducts ?? [])].map((b) => [b.product.id, b.costShare]));
|
|
29
|
+
let consumed = zero;
|
|
30
|
+
if (order.consumption !== null) {
|
|
31
|
+
const layers = await (await env.model('stock.valuation.layer').search({ where: { picking: order.consumption.id } })).load(['value']);
|
|
32
|
+
consumed = [...layers].reduce((s, l) => s.minus(l.value), zero); // out layers are negative
|
|
33
|
+
}
|
|
34
|
+
return { order, consumed, operations: order.operationCost ?? zero, shares };
|
|
35
|
+
}
|
|
36
|
+
export const OutputCost = extendModel('stock.move', {
|
|
37
|
+
overrides: {
|
|
38
|
+
// The product made costs what was consumed plus the operations, per unit.
|
|
39
|
+
incomingUnitCost: async function (next) {
|
|
40
|
+
const out = await next();
|
|
41
|
+
const moves = this;
|
|
42
|
+
const env = moves.env;
|
|
43
|
+
for (const m of await moves.load({ picking: { source: true }, product: true })) {
|
|
44
|
+
if (m.picking.kind !== 'production' || m.picking.source.usage !== 'production')
|
|
45
|
+
continue;
|
|
46
|
+
const made = await madeBy(env, m.picking.id);
|
|
47
|
+
if (made === null || m.productQty === null || m.productQty.lte(0))
|
|
48
|
+
continue;
|
|
49
|
+
// A by-product carries its share of the cost; the product made, the rest.
|
|
50
|
+
const total = made.consumed.plus(made.operations);
|
|
51
|
+
const others = [...made.shares.values()].reduce((s, x) => s.plus(x), zero);
|
|
52
|
+
const share = m.product.id === made.order.product.id
|
|
53
|
+
? orm.toDecimal(100).minus(others)
|
|
54
|
+
: (made.shares.get(m.product.id) ?? zero);
|
|
55
|
+
const unit = total.times(share).div(100).div(m.productQty);
|
|
56
|
+
out.set(m.id, unit.toDecimalPlaces(4).toString());
|
|
57
|
+
}
|
|
58
|
+
return out;
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
export const OperationsPosted = extendModel('stock.picking', {
|
|
63
|
+
overrides: {
|
|
64
|
+
// Once a product is made, its operations go into Work in progress.
|
|
65
|
+
validated: async function (next) {
|
|
66
|
+
await next();
|
|
67
|
+
const pickings = this;
|
|
68
|
+
const env = pickings.env;
|
|
69
|
+
for (const p of await pickings.load({ source: true, company: true })) {
|
|
70
|
+
if (p.kind !== 'production' || p.source.usage !== 'production')
|
|
71
|
+
continue;
|
|
72
|
+
const made = await madeBy(env, p.id);
|
|
73
|
+
if (made === null || made.operations.lte(0))
|
|
74
|
+
continue;
|
|
75
|
+
const accounts = await stockAccountsOf(env, p.company.id);
|
|
76
|
+
if (accounts === null)
|
|
77
|
+
continue;
|
|
78
|
+
const labour = (await env
|
|
79
|
+
.model('account.account')
|
|
80
|
+
.search({ where: { company: p.company.id, code: LABOUR_ACCOUNT.code }, limit: 1 })).ids[0] ??
|
|
81
|
+
(await env
|
|
82
|
+
.model('account.account')
|
|
83
|
+
.create([{ ...LABOUR_ACCOUNT, company: p.company.id }])).ids[0];
|
|
84
|
+
if (labour === undefined)
|
|
85
|
+
continue;
|
|
86
|
+
const [company] = await env.model('res.company').browse([p.company.id]).load({});
|
|
87
|
+
const amount = money(made.operations);
|
|
88
|
+
const name = `${made.order.name} operations`;
|
|
89
|
+
const entry = await env.model('account.move').create([
|
|
90
|
+
{
|
|
91
|
+
kind: 'entry',
|
|
92
|
+
journal: accounts.journal,
|
|
93
|
+
company: p.company.id,
|
|
94
|
+
currency: company?.currency.id,
|
|
95
|
+
date: env.today(),
|
|
96
|
+
ref: name,
|
|
97
|
+
lines: {
|
|
98
|
+
create: [
|
|
99
|
+
{ account: accounts.production, debit: amount, credit: zero, name },
|
|
100
|
+
{ account: labour, debit: zero, credit: amount, name },
|
|
101
|
+
],
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
]);
|
|
105
|
+
await env.withGrants({ grants: ['account.post'], reason: name }, (e) => e.model('account.move').browse(entry.ids).post());
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
export const mrpAccountShutro = defineModule({
|
|
111
|
+
name: 'mrp_account',
|
|
112
|
+
version: '0.1.0',
|
|
113
|
+
depends: [mrpShutro, stockShutro, stockAccountShutro],
|
|
114
|
+
groups: [
|
|
115
|
+
orm.defineGroup({
|
|
116
|
+
code: 'mrp_account.user',
|
|
117
|
+
label: 'Production valued',
|
|
118
|
+
implies: ['mrp.user'],
|
|
119
|
+
}),
|
|
120
|
+
],
|
|
121
|
+
models: [],
|
|
122
|
+
extensions: [OutputCost, OperationsPosted],
|
|
123
|
+
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash:
|
|
1
|
+
// GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: e6900370f0e9c944
|
|
2
2
|
// Bindings of module `payment`: import the definition API from here to get types scoped to what it can see.
|
|
3
3
|
export { defineModel, defineModule, extendModel, f, replace } from '../../server/orm.js';
|
|
4
4
|
import { definitions } from '../../server/orm.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash:
|
|
1
|
+
// GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: e6900370f0e9c944
|
|
2
2
|
// Schema view of module `payment` (RFC 0002 §7.7): the models it owns or depends on, with the extensions it can see.
|
|
3
3
|
import type { F } from '../../server/orm.js';
|
|
4
4
|
|
|
@@ -30,6 +30,7 @@ export interface SchemaView {
|
|
|
30
30
|
readonly 'auth.user_group': AuthUserGroup;
|
|
31
31
|
readonly 'kosh.image': KoshImage;
|
|
32
32
|
readonly 'kosh.saved_view': KoshSavedView;
|
|
33
|
+
readonly 'kosh.setting': KoshSetting;
|
|
33
34
|
readonly 'mail.activity': MailActivity;
|
|
34
35
|
readonly 'mail.activity.type': MailActivityType;
|
|
35
36
|
readonly 'mail.channel': MailChannel;
|
|
@@ -58,6 +59,7 @@ export interface SchemaView {
|
|
|
58
59
|
readonly 'res.currency': ResCurrency;
|
|
59
60
|
readonly 'res.currency.rate': ResCurrencyRate;
|
|
60
61
|
readonly 'res.partner': ResPartner;
|
|
62
|
+
readonly 'res.partner.tag': ResPartnerTag;
|
|
61
63
|
readonly 'res.users': ResUsers;
|
|
62
64
|
readonly 'storage.attachment': StorageAttachment;
|
|
63
65
|
readonly 'uom.uom': UomUom;
|
|
@@ -785,6 +787,26 @@ export interface KoshSavedView {
|
|
|
785
787
|
export interface KoshSavedViewMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.saved_view'> {
|
|
786
788
|
}
|
|
787
789
|
|
|
790
|
+
/** `kosh.setting` (owner: base). */
|
|
791
|
+
export interface KoshSetting {
|
|
792
|
+
readonly name: 'kosh.setting';
|
|
793
|
+
readonly fields: {
|
|
794
|
+
readonly id: F.Id<'kosh.setting'>;
|
|
795
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
796
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
797
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
798
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
799
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
800
|
+
readonly key: F.Char<{ readonly required: true }>;
|
|
801
|
+
readonly value: F.Json;
|
|
802
|
+
};
|
|
803
|
+
readonly methods: KoshSettingMethods;
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
/** Methods of `kosh.setting`: declared ones and transitions. */
|
|
807
|
+
export interface KoshSettingMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.setting'> {
|
|
808
|
+
}
|
|
809
|
+
|
|
788
810
|
/** `mail.activity` (owner: messaging). */
|
|
789
811
|
export interface MailActivity {
|
|
790
812
|
readonly name: 'mail.activity';
|
|
@@ -1226,6 +1248,7 @@ export interface ProductProduct {
|
|
|
1226
1248
|
readonly category: F.Many2one<'product.category'>;
|
|
1227
1249
|
readonly uom: F.Many2one<'uom.uom'>;
|
|
1228
1250
|
readonly barcode: F.Char;
|
|
1251
|
+
readonly image: F.Many2one<'storage.attachment'>;
|
|
1229
1252
|
readonly listPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
|
|
1230
1253
|
readonly standardPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
|
|
1231
1254
|
readonly saleOk: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
@@ -1256,6 +1279,7 @@ export interface ReportDashboard {
|
|
|
1256
1279
|
readonly name: F.Char<{ readonly required: true }>;
|
|
1257
1280
|
readonly items: F.Json<unknown, { readonly required: true; readonly default: true }>;
|
|
1258
1281
|
readonly shared: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
1282
|
+
readonly key: F.Char;
|
|
1259
1283
|
};
|
|
1260
1284
|
readonly methods: ReportDashboardMethods;
|
|
1261
1285
|
}
|
|
@@ -1396,7 +1420,7 @@ export interface ResBankAccount {
|
|
|
1396
1420
|
export interface ResBankAccountMethods extends F.Methods<typeof import('../../accounting/index.js').accountingShutro, 'res.bank.account'> {
|
|
1397
1421
|
}
|
|
1398
1422
|
|
|
1399
|
-
/** `res.company` (owner: base; extended by: accounting). */
|
|
1423
|
+
/** `res.company` (owner: base; extended by: contacts, accounting). */
|
|
1400
1424
|
export interface ResCompany {
|
|
1401
1425
|
readonly name: 'res.company';
|
|
1402
1426
|
readonly fields: {
|
|
@@ -1416,6 +1440,8 @@ export interface ResCompany {
|
|
|
1416
1440
|
readonly email: F.Char;
|
|
1417
1441
|
readonly phone: F.Char;
|
|
1418
1442
|
readonly website: F.Char;
|
|
1443
|
+
readonly contactTaxIdRequired: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
|
|
1444
|
+
readonly contactUniqueEmail: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
|
|
1419
1445
|
readonly fiscalYearStart: F.Integer<{ readonly required: true; readonly default: true }>; // accounting
|
|
1420
1446
|
readonly chartTemplate: F.Char; // accounting
|
|
1421
1447
|
readonly country: F.Char; // accounting
|
|
@@ -1432,7 +1458,7 @@ export interface ResCompany {
|
|
|
1432
1458
|
}
|
|
1433
1459
|
|
|
1434
1460
|
/** Methods of `res.company`: declared ones and transitions. */
|
|
1435
|
-
export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'>, F.Methods<typeof import('../../accounting/index.js').accountingShutro, 'res.company'> {
|
|
1461
|
+
export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'>, F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.company'>, F.Methods<typeof import('../../accounting/index.js').accountingShutro, 'res.company'> {
|
|
1436
1462
|
}
|
|
1437
1463
|
|
|
1438
1464
|
/** `res.currency` (owner: base). */
|
|
@@ -1491,6 +1517,10 @@ export interface ResPartner {
|
|
|
1491
1517
|
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
1492
1518
|
readonly company: F.Many2one<'res.company', { readonly default: true }>;
|
|
1493
1519
|
readonly name: F.Char<{ readonly required: true }>;
|
|
1520
|
+
readonly image: F.Many2one<'storage.attachment'>;
|
|
1521
|
+
readonly tags: F.Many2many<'res.partner.tag', { readonly required: true }>;
|
|
1522
|
+
readonly latitude: F.Decimal;
|
|
1523
|
+
readonly longitude: F.Decimal;
|
|
1494
1524
|
readonly isCompany: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
1495
1525
|
readonly parent: F.Many2one<'res.partner'>;
|
|
1496
1526
|
readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
|
|
@@ -1518,6 +1548,25 @@ export interface ResPartner {
|
|
|
1518
1548
|
export interface ResPartnerMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner'>, F.Methods<typeof import('../../portal/index.js').portalShutro, 'res.partner'>, F.Methods<typeof import('../../accounting/index.js').accountingShutro, 'res.partner'> {
|
|
1519
1549
|
}
|
|
1520
1550
|
|
|
1551
|
+
/** `res.partner.tag` (owner: contacts). */
|
|
1552
|
+
export interface ResPartnerTag {
|
|
1553
|
+
readonly name: 'res.partner.tag';
|
|
1554
|
+
readonly fields: {
|
|
1555
|
+
readonly id: F.Id<'res.partner.tag'>;
|
|
1556
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
1557
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
1558
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
1559
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
1560
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
1561
|
+
readonly name: F.Char<{ readonly required: true }>;
|
|
1562
|
+
};
|
|
1563
|
+
readonly methods: ResPartnerTagMethods;
|
|
1564
|
+
}
|
|
1565
|
+
|
|
1566
|
+
/** Methods of `res.partner.tag`: declared ones and transitions. */
|
|
1567
|
+
export interface ResPartnerTagMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner.tag'> {
|
|
1568
|
+
}
|
|
1569
|
+
|
|
1521
1570
|
/** `res.users` (owner: base; extended by: portal). */
|
|
1522
1571
|
export interface ResUsers {
|
|
1523
1572
|
readonly name: 'res.users';
|
|
@@ -1564,6 +1613,8 @@ export interface StorageAttachment {
|
|
|
1564
1613
|
readonly key: F.Char<{ readonly required: true }>;
|
|
1565
1614
|
readonly resModel: F.Char<{ readonly required: true }>;
|
|
1566
1615
|
readonly resId: F.Integer<{ readonly required: true }>;
|
|
1616
|
+
readonly variantOf: F.Many2one<'storage.attachment'>;
|
|
1617
|
+
readonly width: F.Integer;
|
|
1567
1618
|
};
|
|
1568
1619
|
readonly methods: StorageAttachmentMethods;
|
|
1569
1620
|
}
|