Initial commit: Sale packages

This commit is contained in:
Ernad Husremovic 2025-08-29 15:20:49 +02:00
commit 14e3d26998
6469 changed files with 2479670 additions and 0 deletions

View file

@ -0,0 +1,32 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Sale Module - sale
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for sale. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,17 @@
# Controllers
HTTP routes provided by this module.
```mermaid
sequenceDiagram
participant U as User/Client
participant C as Module Controllers
participant O as ORM/Views
U->>C: HTTP GET/POST (routes)
C->>O: ORM operations, render templates
O-->>U: HTML/JSON/PDF
```
Notes
- See files in controllers/ for route definitions.

View file

@ -0,0 +1,7 @@
# Dependencies
This addon depends on:
- [sales_team](../../odoo-bringout-oca-ocb-sales_team)
- [account_payment](../../odoo-bringout-oca-ocb-account_payment)
- [utm](../../odoo-bringout-oca-ocb-utm)

View file

@ -0,0 +1,4 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon sale or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-ocb-sale"
# or
uv pip install odoo-bringout-oca-ocb-sale"
```

View file

@ -0,0 +1,103 @@
# Models
Detected core models and extensions in sale.
```mermaid
classDiagram
class account_move
class sale_order
class sale_order_line
class account_analytic_applicability
class account_analytic_line
class account_move_line
class analytic_mixin
class crm_team
class payment_provider
class payment_transaction
class product_attribute_custom_value
class product_packaging
class product_product
class product_template
class res_company
class res_config_settings
class res_partner
class utm_campaign
class res_company
sale_order --> res_company : company_id (Many2one)
class res_partner
sale_order --> res_partner : partner_id (Many2one)
class res_partner
sale_order --> res_partner : partner_invoice_id (Many2one)
class res_partner
sale_order --> res_partner : partner_shipping_id (Many2one)
class account_fiscal_position
sale_order --> account_fiscal_position : fiscal_position_id (Many2one)
class account_payment_term
sale_order --> account_payment_term : payment_term_id (Many2one)
class product_pricelist
sale_order --> product_pricelist : pricelist_id (Many2one)
class res_users
sale_order --> res_users : user_id (Many2one)
class crm_team
sale_order --> crm_team : team_id (Many2one)
class sale_order_line
sale_order --> sale_order_line : order_line (One2many)
class account_move
sale_order --> account_move : invoice_ids (Many2many)
class payment_transaction
sale_order --> payment_transaction : transaction_ids (Many2many)
class payment_transaction
sale_order --> payment_transaction : authorized_transaction_ids (Many2many)
class account_analytic_account
sale_order --> account_analytic_account : analytic_account_id (Many2one)
class crm_tag
sale_order --> crm_tag : tag_ids (Many2many)
class res_country
sale_order --> res_country : tax_country_id (Many2one)
class sale_order
sale_order_line --> sale_order : order_id (Many2one)
class product_product
sale_order_line --> product_product : product_id (Many2one)
class product_template
sale_order_line --> product_template : product_template_id (Many2one)
class product_attribute_custom_value
sale_order_line --> product_attribute_custom_value : product_custom_attribute_value_ids (One2many)
class product_template_attribute_value
sale_order_line --> product_template_attribute_value : product_no_variant_attribute_value_ids (Many2many)
class uom_uom
sale_order_line --> uom_uom : product_uom (Many2one)
class account_tax
sale_order_line --> account_tax : tax_id (Many2many)
class product_pricelist_item
sale_order_line --> product_pricelist_item : pricelist_item_id (Many2one)
class product_packaging
sale_order_line --> product_packaging : product_packaging_id (Many2one)
class account_analytic_line
sale_order_line --> account_analytic_line : analytic_line_ids (One2many)
class account_move_line
sale_order_line --> account_move_line : invoice_lines (Many2many)
class sale_order
res_partner --> sale_order : sale_order_ids (One2many)
class res_company
utm_campaign --> res_company : company_id (Many2one)
class res_currency
utm_campaign --> res_currency : currency_id (Many2one)
class sale_order
payment_transaction --> sale_order : sale_order_ids (Many2many)
class sale_order_line
product_attribute_custom_value --> sale_order_line : sale_order_line_id (Many2one)
class sale_order_line
account_move_line --> sale_order_line : sale_line_ids (Many2many)
class sale_order_line
account_analytic_line --> sale_order_line : so_line (Many2one)
class product_product
res_config_settings --> product_product : deposit_default_product_id (Many2one)
class mail_template
res_config_settings --> mail_template : invoice_mail_template_id (Many2one)
class crm_team
account_move --> crm_team : team_id (Many2one)
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: sale. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon sale
- License: LGPL-3

View file

@ -0,0 +1,39 @@
# Reports
Report definitions and templates in sale.
```mermaid
classDiagram
class SaleReport
Model <|-- SaleReport
class AccountInvoiceReport
Model <|-- AccountInvoiceReport
```
## Available Reports
### PDF/Document Reports
- **Quotation / Order** (PDF/Print)
- **PRO-FORMA Invoice** (PDF/Print)
### Analytical/Dashboard Reports
- **Quotations Analysis** (Analysis/Dashboard)
- **Sales Analysis** (Analysis/Dashboard)
- **Invoices Analysis** (Analysis/Dashboard)
## Report Files
- **account_invoice_report.py** (Python logic)
- **account_invoice_report_views.xml** (XML template/definition)
- **__init__.py** (Python logic)
- **ir_actions_report_templates.xml** (XML template/definition)
- **ir_actions_report.xml** (XML template/definition)
- **sale_report.py** (Python logic)
- **sale_report_views.xml** (XML template/definition)
## Notes
- Named reports above are accessible through Odoo's reporting menu
- Python files define report logic and data processing
- XML files contain report templates, definitions, and formatting
- Reports are integrated with Odoo's printing and email systems

View file

@ -0,0 +1,46 @@
# Security
Access control and security definitions in sale.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../sale/security/ir.model.access.csv)**
- 58 model access rules
## Record Rules
Row-level security rules defined in:
- **[ir_rules.xml](../sale/security/ir_rules.xml)**
## Security Groups & Configuration
Security groups and permissions defined in:
- **[ir_rules.xml](../sale/security/ir_rules.xml)**
- **[res_groups.xml](../sale/security/res_groups.xml)**
- 3 security groups defined
```mermaid
graph TB
subgraph "Security Layers"
A[Users] --> B[Groups]
B --> C[Access Control Lists]
C --> D[Models]
B --> E[Record Rules]
E --> F[Individual Records]
end
```
Security files overview:
- **[ir.model.access.csv](../sale/security/ir.model.access.csv)**
- Model access permissions (CRUD rights)
- **[ir_rules.xml](../sale/security/ir_rules.xml)**
- Security groups, categories, and XML-based rules
- **[res_groups.xml](../sale/security/res_groups.xml)**
- Security groups, categories, and XML-based rules
Notes
- Access Control Lists define which groups can access which models
- Record Rules provide row-level security (filter records by user/group)
- Security groups organize users and define permission sets
- All security is enforced at the ORM level by Odoo

View file

@ -0,0 +1,5 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -0,0 +1,7 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/odoo_web_server.py --db-name mydb --addon sale
```

View file

@ -0,0 +1,13 @@
# Wizards
Transient models exposed as UI wizards in sale.
```mermaid
classDiagram
class AccountPaymentRegister
class MailComposeMessage
class PaymentLinkWizard
class PaymentWizard
class SaleAdvancePaymentInv
class SaleOrderCancel
```