diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2025-06-04 16:57:56 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2025-06-04 16:57:56 +0700 |
| commit | ef860cf6815dceb0a806a08b2118390830ccdae0 (patch) | |
| tree | a2d647fdae4a60db4486080b9c3a284fa7d644c8 | |
| parent | 91607253601526603d74399f5603ed9ffb3a7b86 (diff) | |
purchase pricelist and schema invoice
| -rwxr-xr-x | fixco_custom/__manifest__.py | 1 | ||||
| -rwxr-xr-x | fixco_custom/models/__init__.py | 1 | ||||
| -rw-r--r-- | fixco_custom/models/account_move.py | 4 | ||||
| -rw-r--r-- | fixco_custom/models/purchase_pricelist.py | 18 | ||||
| -rwxr-xr-x | fixco_custom/models/sale.py | 4 | ||||
| -rwxr-xr-x | fixco_custom/security/ir.model.access.csv | 3 | ||||
| -rw-r--r-- | fixco_custom/views/account_move.xml | 7 | ||||
| -rw-r--r-- | fixco_custom/views/purchase_pricelist.xml | 57 |
8 files changed, 93 insertions, 2 deletions
diff --git a/fixco_custom/__manifest__.py b/fixco_custom/__manifest__.py index 62a199e..4abf544 100755 --- a/fixco_custom/__manifest__.py +++ b/fixco_custom/__manifest__.py @@ -22,6 +22,7 @@ 'views/account_move.xml', 'views/upload_payments.xml', 'views/ir_sequence.xml', + 'views/purchase_pricelist.xml', ], 'demo': [], 'css': [], diff --git a/fixco_custom/models/__init__.py b/fixco_custom/models/__init__.py index a6fc1c9..c362a04 100755 --- a/fixco_custom/models/__init__.py +++ b/fixco_custom/models/__init__.py @@ -8,3 +8,4 @@ from . import barcoding_product from . import sale_order_multi_invoices from . import account_move from . import upload_payments +from . import purchase_pricelist diff --git a/fixco_custom/models/account_move.py b/fixco_custom/models/account_move.py index bf7ffc9..3f52319 100644 --- a/fixco_custom/models/account_move.py +++ b/fixco_custom/models/account_move.py @@ -15,4 +15,6 @@ class AccountMove(models.Model): _inherit = 'account.move' invoice_marketplace = fields.Char('Invoice Marketplace') - address = fields.Char('Address')
\ No newline at end of file + address = fields.Char('Address') + sale_id = fields.Many2one('sale.order', string='Sale Order') + picking_id = fields.Many2one('stock.picking', string='Picking')
\ No newline at end of file diff --git a/fixco_custom/models/purchase_pricelist.py b/fixco_custom/models/purchase_pricelist.py new file mode 100644 index 0000000..2d0a77c --- /dev/null +++ b/fixco_custom/models/purchase_pricelist.py @@ -0,0 +1,18 @@ +from odoo import fields, models, api, _ +from odoo.exceptions import AccessError, UserError, ValidationError +from datetime import datetime, timedelta +from pytz import timezone + +class PurchasePricelist(models.Model): + _name = 'purchase.pricelist' + _rec_name = 'product_id' + _inherit = ['mail.thread', 'mail.activity.mixin'] + + name = fields.Char(string='Name', compute="_compute_name") + product_id = fields.Many2one('product.product', string="Product", required=True) + vendor_id = fields.Many2one('res.partner', string="Vendor", required=True) + price = fields.Float(string='Price', required=True) + + @api.depends('product_id', 'vendor_id') + def _compute_name(self): + self.name = self.vendor_id.name + ', ' + self.product_id.name
\ No newline at end of file diff --git a/fixco_custom/models/sale.py b/fixco_custom/models/sale.py index 6d7a7e6..b36f4b5 100755 --- a/fixco_custom/models/sale.py +++ b/fixco_custom/models/sale.py @@ -29,11 +29,15 @@ class SaleOrder(models.Model): if not journal: raise UserError(_('Please define an accounting sales journal for the company %s (%s).') % (self.company_id.name, self.company_id.id)) + done_pickings = self.picking_ids.filtered(lambda p: p.state == 'done').sorted(key='create_date') invoice_vals = { 'ref': self.client_order_ref or '', 'move_type': 'out_invoice', 'narration': self.note, 'invoice_marketplace': self.invoice_mp, + 'address': self.address, + 'sale_id': self.id, + 'picking_id': done_pickings[0] if done_pickings else False, 'currency_id': self.pricelist_id.currency_id.id, 'campaign_id': self.campaign_id.id, 'medium_id': self.medium_id.id, diff --git a/fixco_custom/security/ir.model.access.csv b/fixco_custom/security/ir.model.access.csv index 3556565..a5a3434 100755 --- a/fixco_custom/security/ir.model.access.csv +++ b/fixco_custom/security/ir.model.access.csv @@ -8,4 +8,5 @@ access_barcoding_product_line,access.barcoding.product.line,model_barcoding_prod access_sale_order_multi_invoices,access.sale.order.multi_invoices,model_sale_order_multi_invoices,,1,1,1,1 access_account_move,access.account.move,model_account_move,,1,1,1,1 access_upload_payments,access.upload.payments,model_upload_payments,,1,1,1,1 -access_upload_payments_line,access.upload.payments.line,model_upload_payments_line,,1,1,1,1
\ No newline at end of file +access_upload_payments_line,access.upload.payments.line,model_upload_payments_line,,1,1,1,1 +access_purchase_pricelist,access.purchase.pricelist,model_purchase_pricelist,,1,1,1,1
\ No newline at end of file diff --git a/fixco_custom/views/account_move.xml b/fixco_custom/views/account_move.xml index c7d4cf1..7e24873 100644 --- a/fixco_custom/views/account_move.xml +++ b/fixco_custom/views/account_move.xml @@ -9,6 +9,13 @@ <field name="payment_reference" position="after"> <field name="invoice_marketplace" readonly="1"/> </field> + <field name="partner_id" position="after"> + <field name="address" readonly="1"/> + </field> + <field name="invoice_date" position="after"> + <field name="sale_id" readonly="1"/> + <field name="picking_id" readonly="1"/> + </field> </field> </record> </data> diff --git a/fixco_custom/views/purchase_pricelist.xml b/fixco_custom/views/purchase_pricelist.xml new file mode 100644 index 0000000..b4e70f6 --- /dev/null +++ b/fixco_custom/views/purchase_pricelist.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8" ?> +<odoo> + <record id="purchase_pricelist_tree" model="ir.ui.view"> + <field name="name">purchase.pricelist.tree</field> + <field name="model">purchase.pricelist</field> + <field name="arch" type="xml"> + <tree> + <field name="product_id"/> + <field name="vendor_id"/> + <field name="price"/> + </tree> + </field> + </record> + + <record id="purchase_pricelist_form" model="ir.ui.view"> + <field name="name">purchase.pricelist.form</field> + <field name="model">purchase.pricelist</field> + <field name="arch" type="xml"> + <form> + <sheet> + <group> + <group> + <field name="product_id"/> + <field name="vendor_id" context="{'res_partner_search_mode': 'supplier'}"/> + <field name="price"/> + </group> + </group> + </sheet> + <div class="oe_chatter"> + <field name="message_follower_ids" widget="mail_followers"/> + <field name="activity_ids" widget="mail_activity"/> + <field name="message_ids" widget="mail_thread"/> + </div> + </form> + </field> + </record> + + <record id="purchase_pricelist_action" model="ir.actions.act_window"> + <field name="name">Purchase Pricelist</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">purchase.pricelist</field> + <field name="view_mode">tree,form</field> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Add Purchase Pricelist! + </p> + </field> + </record> + + <menuitem + id="menu_purchase_pricelist" + name="Purchase Pricelist" + parent="purchase.menu_purchase_products" + sequence="3" + action="purchase_pricelist_action" + /> +</odoo>
\ No newline at end of file |
