Account (+400 LOC): - Accounting reports: Trial Balance, Balance Sheet, Profit & Loss, Aged Receivable/Payable, General Ledger (SQL-based generation) - account.report + account.report.line models - Analytic accounting: account.analytic.plan, account.analytic.account, account.analytic.line models - Bank statement matching (button_match with 1% tolerance) - 6 default report definitions seeded - 8 new actions + 12 new menus (Vendor Bills, Payments, Bank Statements, Reporting, Configuration with Chart of Accounts/Journals/Taxes) Stock (+230 LOC): - Stock valuation: price_unit + value (computed) on moves and quants - Reorder rules: stock.warehouse.orderpoint with min/max qty, qty_on_hand compute from quants, action_replenish method - Scrap: stock.scrap model with action_validate (quant transfer) - Inventory adjustment: stock.quant.adjust wizard (set qty directly) - Scrap location seeded Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
50 lines
2.2 KiB
Go
50 lines
2.2 KiB
Go
package models
|
|
|
|
import "odoo-go/pkg/orm"
|
|
|
|
// initAccountAnalytic registers analytic accounting models.
|
|
// Mirrors: odoo/addons/analytic/models/analytic_account.py
|
|
|
|
func initAccountAnalytic() {
|
|
// account.analytic.plan — Analytic Plan
|
|
// Mirrors: odoo/addons/analytic/models/analytic_plan.py
|
|
orm.NewModel("account.analytic.plan", orm.ModelOpts{
|
|
Description: "Analytic Plan",
|
|
}).AddFields(
|
|
orm.Char("name", orm.FieldOpts{String: "Name", Required: true}),
|
|
orm.Many2one("parent_id", "account.analytic.plan", orm.FieldOpts{String: "Parent"}),
|
|
orm.Many2one("company_id", "res.company", orm.FieldOpts{String: "Company"}),
|
|
)
|
|
|
|
// account.analytic.account — Analytic Account
|
|
// Mirrors: odoo/addons/analytic/models/analytic_account.py AnalyticAccount
|
|
m := orm.NewModel("account.analytic.account", orm.ModelOpts{
|
|
Description: "Analytic Account",
|
|
Order: "code, name",
|
|
})
|
|
m.AddFields(
|
|
orm.Char("name", orm.FieldOpts{String: "Name", Required: true}),
|
|
orm.Char("code", orm.FieldOpts{String: "Reference"}),
|
|
orm.Many2one("partner_id", "res.partner", orm.FieldOpts{String: "Customer"}),
|
|
orm.Many2one("company_id", "res.company", orm.FieldOpts{String: "Company"}),
|
|
orm.Boolean("active", orm.FieldOpts{String: "Active", Default: true}),
|
|
orm.Many2one("plan_id", "account.analytic.plan", orm.FieldOpts{String: "Plan"}),
|
|
)
|
|
|
|
// account.analytic.line — Analytic Line
|
|
// Mirrors: odoo/addons/analytic/models/analytic_line.py AnalyticLine
|
|
orm.NewModel("account.analytic.line", orm.ModelOpts{
|
|
Description: "Analytic Line",
|
|
Order: "date desc, id desc",
|
|
}).AddFields(
|
|
orm.Char("name", orm.FieldOpts{String: "Description", Required: true}),
|
|
orm.Date("date", orm.FieldOpts{String: "Date", Required: true}),
|
|
orm.Monetary("amount", orm.FieldOpts{String: "Amount", CurrencyField: "currency_id"}),
|
|
orm.Many2one("account_id", "account.analytic.account", orm.FieldOpts{String: "Analytic Account"}),
|
|
orm.Many2one("move_line_id", "account.move.line", orm.FieldOpts{String: "Journal Item"}),
|
|
orm.Many2one("partner_id", "res.partner", orm.FieldOpts{String: "Partner"}),
|
|
orm.Many2one("company_id", "res.company", orm.FieldOpts{String: "Company"}),
|
|
orm.Many2one("currency_id", "res.currency", orm.FieldOpts{String: "Currency"}),
|
|
)
|
|
}
|