Files
goodie/addons/account/models/account_analytic.go
Marc d9171191af Deepen Account + Stock modules significantly
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>
2026-04-03 14:57:33 +02:00

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"}),
)
}