new: 'Indiviual Discount`' insted of 'Dealer Discount'; Additional Filter for Invoices 'Referenzbeleg'
							parent
							
								
									68107851ee
								
							
						
					
					
						commit
						2246c6caa9
					
				|  | @ -80,6 +80,8 @@ class AccountInvoice(models.Model): | ||||||
|     num_items = fields.Integer(string='Anzahl der Artikel', compute='_compute_num_items') |     num_items = fields.Integer(string='Anzahl der Artikel', compute='_compute_num_items') | ||||||
|     weight_total = fields.Float(string='Gesamtgewicht', compute='_compute_weight_total') |     weight_total = fields.Float(string='Gesamtgewicht', compute='_compute_weight_total') | ||||||
| 
 | 
 | ||||||
|  |     layout_category_id = fields.Many2one('sale.layout_category', related='invoice_line_ids.layout_category_id', string='Section') | ||||||
|  | 
 | ||||||
|     @api.multi |     @api.multi | ||||||
|     def action_invoice_open(self): |     def action_invoice_open(self): | ||||||
|         to_open_invoices = self.filtered(lambda inv: inv.state != 'open') |         to_open_invoices = self.filtered(lambda inv: inv.state != 'open') | ||||||
|  |  | ||||||
|  | @ -14,6 +14,7 @@ | ||||||
|                 <button name="%(action_wizard_confirm_null_invoice)d" type="action" string="Validate" states="draft" class="oe_highlight o_invoice_validate" groups="account.group_account_invoice"/> |                 <button name="%(action_wizard_confirm_null_invoice)d" type="action" string="Validate" states="draft" class="oe_highlight o_invoice_validate" groups="account.group_account_invoice"/> | ||||||
|             </xpath> |             </xpath> | ||||||
| --> | --> | ||||||
|  |             <field name="layout_category_id"/> | ||||||
|             <xpath expr="//field[@name='invoice_line_ids']/tree//field[@name='name']" position="after"> |             <xpath expr="//field[@name='invoice_line_ids']/tree//field[@name='name']" position="after"> | ||||||
|                 <field name="intrastat_id" options="{'no_quick_create':True}"/> |                 <field name="intrastat_id" options="{'no_quick_create':True}"/> | ||||||
|             </xpath> |             </xpath> | ||||||
|  | @ -44,11 +45,25 @@ | ||||||
|         </field> |         </field> | ||||||
|     </record> |     </record> | ||||||
| 
 | 
 | ||||||
|  |     <record id="account_invoice_tree_section" model="ir.ui.view"> | ||||||
|  |         <field name="name">account.invoice.tree_section</field> | ||||||
|  |         <field name="model">account.invoice</field> | ||||||
|  |         <field name="inherit_id" ref="account.invoice_tree"/> | ||||||
|  |         <field name="arch" type="xml"> | ||||||
|  |             <field name="number" position="after"> | ||||||
|  |                 <field name="layout_category_id"/> | ||||||
|  |             </field> | ||||||
|  |         </field> | ||||||
|  |     </record> | ||||||
|  | 
 | ||||||
|     <record id="view_account_invoice_filter_active" model="ir.ui.view"> |     <record id="view_account_invoice_filter_active" model="ir.ui.view"> | ||||||
|         <field name="name">account.invoice.select</field> |         <field name="name">account.invoice.select</field> | ||||||
|         <field name="model">account.invoice</field> |         <field name="model">account.invoice</field> | ||||||
|         <field name="inherit_id" ref="account.view_account_invoice_filter"/> |         <field name="inherit_id" ref="account.view_account_invoice_filter"/> | ||||||
|         <field name="arch" type="xml"> |         <field name="arch" type="xml"> | ||||||
|  |             <field name="journal_id" position="after"> | ||||||
|  |                 <field name="layout_category_id" string="Referenzbeleg"/> | ||||||
|  |             </field> | ||||||
|             <xpath expr="//filter[@name='late']" position="after"> |             <xpath expr="//filter[@name='late']" position="after"> | ||||||
|                  <filter name="active" string="Nicht abgebrochen" domain="[('state', '!=', 'cancel')]"/> |                  <filter name="active" string="Nicht abgebrochen" domain="[('state', '!=', 'cancel')]"/> | ||||||
|             </xpath> |             </xpath> | ||||||
|  |  | ||||||
|  | @ -7,9 +7,10 @@ from lxml import html | ||||||
| class Invoice(models.Model): | class Invoice(models.Model): | ||||||
|     _inherit = "account.invoice" |     _inherit = "account.invoice" | ||||||
| 
 | 
 | ||||||
|     dealer_discount = fields.Boolean("Add Dealer Discount", readonly=True, states={'draft': [('readonly', False)]},) |     dealer_discount = fields.Boolean("Add Individual Discount", readonly=True, states={'draft': [('readonly', False)]},) | ||||||
|     dealer_discount_type = fields.Selection([('fixed','Fixed'),('percentage','Percentage')], |     dealer_discount_type = fields.Selection([('fixed','Fixed'),('percentage','Percentage')], | ||||||
|         "Discount Type", readonly=True, states={'draft': [('readonly', False)]}, default='fixed') |         "Discount Type", readonly=True, states={'draft': [('readonly', False)]}, default='percentage') | ||||||
|  |     dealer_discount_product = fields.Many2one('product.product', string='Rabatt-Artikel', domain=[('categ_id.name', '=', 'Discount')]) | ||||||
|     dealer_discount_amount = fields.Float("Discount Amount", readonly=True, states={'draft': [('readonly', False)]},) |     dealer_discount_amount = fields.Float("Discount Amount", readonly=True, states={'draft': [('readonly', False)]},) | ||||||
|     dealer_discount_percentage = fields.Float("Discount Percentage", readonly=True, states={'draft': [('readonly', False)]},) |     dealer_discount_percentage = fields.Float("Discount Percentage", readonly=True, states={'draft': [('readonly', False)]},) | ||||||
| 
 | 
 | ||||||
|  | @ -18,16 +19,24 @@ class Invoice(models.Model): | ||||||
|         if self.env.user.company_id.invoice_dealer_discount_product_id: |         if self.env.user.company_id.invoice_dealer_discount_product_id: | ||||||
|             self.env['account.invoice.line'].search([('invoice_id', 'in', self.ids), ('product_id', '=', self.env.user.company_id.invoice_dealer_discount_product_id.id)]).unlink() |             self.env['account.invoice.line'].search([('invoice_id', 'in', self.ids), ('product_id', '=', self.env.user.company_id.invoice_dealer_discount_product_id.id)]).unlink() | ||||||
| 
 | 
 | ||||||
|  |     @api.multi | ||||||
|  |     def unset_dealer_discount(self): | ||||||
|  |         discount_products_ids = self.env['product.product'].search([('categ_id', '=', 'Discount')]).ids | ||||||
|  |         self.env['account.invoice.line'].search([('invoice_id', 'in', self.ids), ('product_id', 'in', discount_products_ids)]).unlink() | ||||||
|  | 
 | ||||||
|     @api.multi |     @api.multi | ||||||
|     def create_dealer_discount(self): |     def create_dealer_discount(self): | ||||||
|         InvoiceLine = self.env['account.invoice.line'] |         InvoiceLine = self.env['account.invoice.line'] | ||||||
| 
 | 
 | ||||||
|         discount_product_id = self.env.user.company_id.invoice_dealer_discount_product_id |         if self.dealer_discount_product: | ||||||
|         if not discount_product_id: |             discount_product_id = self.dealer_discount_product | ||||||
|             raise UserError(_('Please set Invoice Dealer Discount product in General Settings first.')) |         else: | ||||||
|  |         #     discount_product_id = self.env.user.company_id.invoice_dealer_discount_product_id | ||||||
|  |         # if not discount_product_id: | ||||||
|  |             raise UserError(_('Please select Discount product first.')) | ||||||
| 
 | 
 | ||||||
|         # Remove Discount line first |         # Remove Discount line first | ||||||
|         self._dealer_discount_unset() | #        self._dealer_discount_unset() | ||||||
| 
 | 
 | ||||||
|         account_id = discount_product_id.property_account_income_id.id |         account_id = discount_product_id.property_account_income_id.id | ||||||
|         if not account_id: |         if not account_id: | ||||||
|  | @ -94,4 +103,6 @@ class Invoice(models.Model): | ||||||
| 
 | 
 | ||||||
|         super()._onchange_invoice_line_ids() |         super()._onchange_invoice_line_ids() | ||||||
| 
 | 
 | ||||||
|  |         self.dealer_discount_product = '' | ||||||
|  | 
 | ||||||
|         return True |         return True | ||||||
|  |  | ||||||
|  | @ -7,27 +7,39 @@ from lxml import html | ||||||
| class SaleOrder(models.Model): | class SaleOrder(models.Model): | ||||||
|     _inherit = "sale.order" |     _inherit = "sale.order" | ||||||
| 
 | 
 | ||||||
|     dealer_discount = fields.Boolean("Add Dealer Discount", readonly=True, states={'draft': [('readonly', False),],'sent': [('readonly', False)]},) |     dealer_discount = fields.Boolean("Add Discount", readonly=True, states={'draft': [('readonly', False),],'sent': [('readonly', False)]},) | ||||||
|     dealer_discount_type = fields.Selection([('fixed','Fixed'),('percentage','Percentage')], |     dealer_discount_type = fields.Selection([('fixed','Fixed'),('percentage','Percentage')], | ||||||
|         "Discount Type", readonly=True, states={'draft': [('readonly', False)],'sent': [('readonly', False)]}, default='percentage') |         "Discount Type", readonly=True, states={'draft': [('readonly', False)],'sent': [('readonly', False)]}, default='percentage') | ||||||
|     dealer_discount_amount = fields.Float("Discount Amount", readonly=True, states={'draft': [('readonly', False)],'sent': [('readonly', False)]},) |     dealer_discount_product = fields.Many2one('product.product', string='Rabatt-Artikel', domain=[('categ_id.name', '=', 'Discount')]) | ||||||
|     dealer_discount_percentage = fields.Float("Discount Percentage", readonly=True, states={'draft': [('readonly', False)],'sent': [('readonly', False)]},) |     dealer_discount_amount = fields.Float("Discount Amount", readonly=True, states={'draft': [('readonly', False)],'sent': [('readonly', False)]}, | ||||||
|  |                                           size = 10,) | ||||||
|  |     dealer_discount_percentage = fields.Float("Discount Percentage", readonly=True, | ||||||
|  |                                               states={'draft': [('readonly', False)],'sent': [('readonly', False)]}, | ||||||
|  |                                               size = 5,) | ||||||
| 
 | 
 | ||||||
|     @api.multi |     @api.multi | ||||||
|     def _dealer_discount_unset(self): |     def _dealer_discount_unset(self): | ||||||
|         if self.env.user.company_id.sale_dealer_discount_product_id: |         if self.env.user.company_id.sale_dealer_discount_product_id: | ||||||
|             self.env['sale.order.line'].search([('order_id', 'in', self.ids), ('product_id', '=', self.env.user.company_id.sale_dealer_discount_product_id.id)]).unlink() |             self.env['sale.order.line'].search([('order_id', 'in', self.ids), ('product_id', '=', self.env.user.company_id.sale_dealer_discount_product_id.id)]).unlink() | ||||||
| 
 | 
 | ||||||
|  |     @api.multi | ||||||
|  |     def unset_dealer_discount(self): | ||||||
|  |         discount_products_ids = self.env['product.product'].search([('categ_id', '=', 'Discount')]).ids | ||||||
|  |         self.env['sale.order.line'].search([('order_id', 'in', self.ids), ('product_id', 'in', discount_products_ids)]).unlink() | ||||||
|  | 
 | ||||||
|     @api.multi |     @api.multi | ||||||
|     def create_dealer_discount(self): |     def create_dealer_discount(self): | ||||||
|         Line = self.env['sale.order.line'] |         Line = self.env['sale.order.line'] | ||||||
| 
 | 
 | ||||||
|         discount_product_id = self.env.user.company_id.sale_dealer_discount_product_id |         if self.dealer_discount_product: | ||||||
|         if not discount_product_id: |             discount_product_id = self.dealer_discount_product | ||||||
|             raise UserError(_('Please set Sale Dealer Discount product in General Settings first.')) |         else: | ||||||
|  |         #     discount_product_id = self.env.user.company_id.sale_dealer_discount_product_id | ||||||
|  |         # if not discount_product_id: | ||||||
|  |             raise UserError(_('Please select Discount product first.')) | ||||||
| 
 | 
 | ||||||
|         # Remove Discount line first |         # Remove Discount line first | ||||||
|         self._dealer_discount_unset() | #        self._dealer_discount_unset() | ||||||
| 
 | 
 | ||||||
|         for order in self: |         for order in self: | ||||||
|             amount = 0 |             amount = 0 | ||||||
|  | @ -70,4 +82,6 @@ class SaleOrder(models.Model): | ||||||
|                     'sequence': 99999, |                     'sequence': 99999, | ||||||
|                 }) |                 }) | ||||||
| 
 | 
 | ||||||
|  |             self.dealer_discount_product = '' | ||||||
|  | 
 | ||||||
|         return True |         return True | ||||||
|  |  | ||||||
|  | @ -13,10 +13,16 @@ | ||||||
|                     <div name='dealer_discount'> |                     <div name='dealer_discount'> | ||||||
|                         <div> |                         <div> | ||||||
|                             <field name='dealer_discount' class="oe_inline" nolabel="1" attrs="{'invisible': [('state','!=', 'draft')]}"/> |                             <field name='dealer_discount' class="oe_inline" nolabel="1" attrs="{'invisible': [('state','!=', 'draft')]}"/> | ||||||
|  |                             <field name='dealer_discount_product' class="oe_inline" nolabel="1" attrs="{'invisible': ['|',('dealer_discount','=', False),'&', ('state','!=', 'draft')]}"/> | ||||||
|                             <field name='dealer_discount_type' class="oe_inline" nolabel="1" attrs="{'invisible': ['|',('dealer_discount','=', False), ('state','!=', 'draft')], 'required':[('dealer_discount','!=', False)]}"/> |                             <field name='dealer_discount_type' class="oe_inline" nolabel="1" attrs="{'invisible': ['|',('dealer_discount','=', False), ('state','!=', 'draft')], 'required':[('dealer_discount','!=', False)]}"/> | ||||||
|                             <field name='dealer_discount_amount' class="oe_inline" nolabel="1" attrs="{'invisible': ['|','|',('dealer_discount','=', False), ('state','!=', 'draft'),('dealer_discount_type','!=','fixed')]}"/> |                             <field name='dealer_discount_amount' style="min-width:80px;max-width:80px;width:80px;"  class="oe_inline" nolabel="1" attrs="{'invisible': ['|','|',('dealer_discount','=', False), ('state','!=', 'draft'),('dealer_discount_type','!=','fixed')]}"/> | ||||||
|                             <field name='dealer_discount_percentage' class="oe_inline" nolabel="1" attrs="{'invisible': ['|','|',('dealer_discount','=', False), ('state','!=', 'draft'),('dealer_discount_type','!=','percentage')]}"/> |                             <field name='dealer_discount_percentage' style="min-width:50px;max-width:50px;width:50px;"  class="oe_inline" nolabel="1" attrs="{'invisible': ['|','|',('dealer_discount','=', False), ('state','!=', 'draft'),('dealer_discount_type','!=','percentage')]}"/> | ||||||
|                             <button name="create_dealer_discount" string="Add Line" type="object" class="oe_inline fa fa-arrow-right oe_link" attrs="{'invisible': ['|',('dealer_discount','=', False), ('state','!=', 'draft')]}"/> |                             <button name="create_dealer_discount" string="Add Line" type="object" class="oe_inline fa fa-arrow-right oe_link oe_edit_only" | ||||||
|  |                                 attrs="{'invisible': ['|',('state','not in', ['draft','sent']),('dealer_discount','=', False)]}" | ||||||
|  |                                 style="margin-right:0px;"/> | ||||||
|  |                         </div> | ||||||
|  |                         <div> | ||||||
|  |                             <button name="unset_dealer_discount" string="Remove Lines" type="object" class="oe_inline fa fa-arrow-left oe_link oe_edit_only" attrs="{'invisible': ['|',('state','not in', ['draft','sent']),('dealer_discount','=', False)]}"/> | ||||||
|                         </div> |                         </div> | ||||||
|                     </div> |                     </div> | ||||||
|                 </xpath> |                 </xpath> | ||||||
|  | @ -39,7 +45,10 @@ | ||||||
|                             <field name='dealer_discount_type' class="oe_inline" nolabel="1" attrs="{'invisible': ['|',('dealer_discount','=', False), ('state','!=', 'draft')], 'required':[('dealer_discount','!=', False)]}"/> |                             <field name='dealer_discount_type' class="oe_inline" nolabel="1" attrs="{'invisible': ['|',('dealer_discount','=', False), ('state','!=', 'draft')], 'required':[('dealer_discount','!=', False)]}"/> | ||||||
|                             <field name='dealer_discount_amount' class="oe_inline" nolabel="1" attrs="{'invisible': ['|','|',('dealer_discount','=', False), ('state','!=', 'draft'),('dealer_discount_type','!=','fixed')]}"/> |                             <field name='dealer_discount_amount' class="oe_inline" nolabel="1" attrs="{'invisible': ['|','|',('dealer_discount','=', False), ('state','!=', 'draft'),('dealer_discount_type','!=','fixed')]}"/> | ||||||
|                             <field name='dealer_discount_percentage' class="oe_inline" nolabel="1" attrs="{'invisible': ['|','|',('dealer_discount','=', False), ('state','!=', 'draft'),('dealer_discount_type','!=','percentage')]}"/> |                             <field name='dealer_discount_percentage' class="oe_inline" nolabel="1" attrs="{'invisible': ['|','|',('dealer_discount','=', False), ('state','!=', 'draft'),('dealer_discount_type','!=','percentage')]}"/> | ||||||
|  |                         </div> | ||||||
|  |                         <div> | ||||||
|                             <button name="create_dealer_discount" string="Add Line" type="object" class="oe_inline fa fa-arrow-right oe_link" attrs="{'invisible': ['|',('dealer_discount','=', False), ('state','!=', 'draft')]}"/> |                             <button name="create_dealer_discount" string="Add Line" type="object" class="oe_inline fa fa-arrow-right oe_link" attrs="{'invisible': ['|',('dealer_discount','=', False), ('state','!=', 'draft')]}"/> | ||||||
|  |                             <button name="unset_dealer_discount" string="Remove Lines" type="object" class="oe_inline fa fa-arrow-left oe_link" attrs="{'invisible': ['|',('dealer_discount','=', False), ('state','!=', 'draft')]}"/> | ||||||
|                         </div> |                         </div> | ||||||
|                     </div> |                     </div> | ||||||
|                 </xpath> |                 </xpath> | ||||||
|  |  | ||||||
|  | @ -13,10 +13,16 @@ | ||||||
|                   <div name='dealer_discount'> |                   <div name='dealer_discount'> | ||||||
|                       <div> |                       <div> | ||||||
|                         <field name='dealer_discount' class="oe_inline" nolabel="1" attrs="{'invisible': [('state','!=', 'draft'),('state','!=', 'sent')]}"/> |                         <field name='dealer_discount' class="oe_inline" nolabel="1" attrs="{'invisible': [('state','!=', 'draft'),('state','!=', 'sent')]}"/> | ||||||
|                         <field name='dealer_discount_type' class="oe_inline" nolabel="1" attrs="{'invisible': ['|',('dealer_discount','=', False),'&', ('state','!=', 'draft'),('state','!=', 'sent')], 'required':[('dealer_discount','!=', False)]}"/> |                         <field name='dealer_discount_product' class="oe_inline" nolabel="1" attrs="{'invisible': ['|',('dealer_discount','=', False),'&', ('state','!=', 'draft'),('state','!=', 'sent')]}"/> | ||||||
|                         <field name='dealer_discount_amount' class="oe_inline" nolabel="1" attrs="{'invisible': ['|','|',('dealer_discount','=', False),('dealer_discount_type','!=','fixed'),'&', ('state','!=', 'draft'),('state','!=', 'sent')]}"/> |                         <field name='dealer_discount_type' class="oe_inline oe_edit_only" nolabel="1" attrs="{'invisible': ['|',('dealer_discount','=', False),'&', ('state','!=', 'draft'),('state','!=', 'sent')], 'required':[('dealer_discount','!=', False)]}"/> | ||||||
|                         <field name='dealer_discount_percentage' class="oe_inline" nolabel="1" attrs="{'invisible': ['|','|',('dealer_discount','=', False),('dealer_discount_type','!=','percentage'),'&', ('state','!=', 'draft'),('state','!=', 'sent')]}"/> |                         <field name='dealer_discount_amount' style="min-width:80px;max-width:80px;width:80px;" class="oe_inline oe_edit_only" nolabel="1" attrs="{'invisible': ['|','|',('dealer_discount','=', False),('dealer_discount_type','!=','fixed'),'&', ('state','!=', 'draft'),('state','!=', 'sent')]}"/> | ||||||
|                         <button name="create_dealer_discount" string="Add Line" type="object" class="oe_inline fa fa-arrow-right oe_link oe_edit_only" attrs="{'invisible': ['|',('state','not in', ['draft','sent']),('dealer_discount','=', False)]}"/> |                         <field name='dealer_discount_percentage' style="min-width:50px;max-width:50px;width:50px;" class="oe_inline oe_edit_only" nolabel="1" attrs="{'invisible': ['|','|',('dealer_discount','=', False),('dealer_discount_type','!=','percentage'),'&', ('state','!=', 'draft'),('state','!=', 'sent')]}"/> | ||||||
|  |                         <button name="create_dealer_discount" string="Add Line" type="object" class="oe_inline fa fa-arrow-right oe_link oe_edit_only" | ||||||
|  |                                 attrs="{'invisible': ['|',('state','not in', ['draft','sent']),('dealer_discount','=', False)]}" | ||||||
|  |                                 style="margin-right:0px;"/> | ||||||
|  |                       </div> | ||||||
|  |                       <div> | ||||||
|  |                         <button name="unset_dealer_discount" string="Remove Lines" type="object" class="oe_inline fa fa-arrow-left oe_link oe_edit_only" attrs="{'invisible': ['|',('state','not in', ['draft','sent']),('dealer_discount','=', False)]}"/> | ||||||
|                       </div> |                       </div> | ||||||
|                   </div> |                   </div> | ||||||
|                 </xpath> |                 </xpath> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue