new: 'Indiviual Discount`' insted of 'Dealer Discount'; Additional Filter for Invoices 'Referenzbeleg'

develop
Andreas Osim 2020-04-08 15:21:04 +02:00
parent 68107851ee
commit 2246c6caa9
6 changed files with 77 additions and 20 deletions

View File

@ -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')

View File

@ -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>

View File

@ -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

View File

@ -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

View File

@ -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),'&amp;', ('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>

View File

@ -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),'&amp;', ('state','!=', 'draft'),('state','!=', 'sent')], 'required':[('dealer_discount','!=', False)]}"/> <field name='dealer_discount_product' class="oe_inline" nolabel="1" attrs="{'invisible': ['|',('dealer_discount','=', False),'&amp;', ('state','!=', 'draft'),('state','!=', 'sent')]}"/>
<field name='dealer_discount_amount' class="oe_inline" nolabel="1" attrs="{'invisible': ['|','|',('dealer_discount','=', False),('dealer_discount_type','!=','fixed'),'&amp;', ('state','!=', 'draft'),('state','!=', 'sent')]}"/> <field name='dealer_discount_type' class="oe_inline oe_edit_only" nolabel="1" attrs="{'invisible': ['|',('dealer_discount','=', False),'&amp;', ('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'),'&amp;', ('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'),'&amp;', ('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'),'&amp;', ('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>