Parcourir la source

Agregar en ventas columna total

sebas il y a 3 ans
commit
b839fd9a9a
8 fichiers modifiés avec 193 ajouts et 0 suppressions
  1. 1 0
      __init__.py
  2. BIN
      __init__.pyc
  3. 35 0
      __openerp__.py
  4. 1 0
      models/__init__.py
  5. BIN
      models/__init__.pyc
  6. 62 0
      models/sale_order.py
  7. BIN
      models/sale_order.pyc
  8. 94 0
      views/sale_order_view.xml

+ 1 - 0
__init__.py

@@ -0,0 +1 @@
+import models

BIN
__init__.pyc


+ 35 - 0
__openerp__.py

@@ -0,0 +1,35 @@
+# -*- encoding: utf-8 -*-
+
+{
+    'name': 'Sale Order - Total',
+    'version': '1.2',
+    'category': 'Sale',
+    'summary': 'Configuracion de ventas con total',
+    'description': """
+
+* Permite registrar el numero de factura fisica en ventas.
+* Automatiza el proceso de venta transferencia, factura.
+* Cambia el estado de la venta al estado hecho.
+* La fecha de la venta se registra en la factura.
+	""",
+    'author': 'OERP - Rodney Enciso Arias',
+    'website': 'www.oerp.eu',
+    'depends': [
+        'sale',
+        'account',
+        'sale_stock',
+    ],
+    'data': [
+        'views/sale_order_view.xml'
+    ],
+    'demo': [
+    ],
+    'test': [
+
+    ],
+    'installable': True,
+    'application': False,
+    'auto_install': False,
+    'images': [],
+}
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

+ 1 - 0
models/__init__.py

@@ -0,0 +1 @@
+import sale_order

BIN
models/__init__.pyc


+ 62 - 0
models/sale_order.py

@@ -0,0 +1,62 @@
+# -*- encoding: utf-8 -*-
+
+from openerp import models, api, fields
+from pytz import timezone
+from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT, DEFAULT_SERVER_DATE_FORMAT
+from datetime import datetime,timedelta
+
+DATE_FORMAT = '%Y-%m-%d'
+
+class SaleOrder(models.Model):
+    _inherit = 'sale.order'
+    _name = 'sale.order'
+
+    invoice_number = fields.Char('Numero de Factura')
+
+    ''' Timezone '''
+    def get_timezone(self):
+        return timezone(self._context.get('tz') or self.env.user.tz)
+
+    def _convert_str_to_datetime(self, date):
+        return datetime.strptime(date,DEFAULT_SERVER_DATETIME_FORMAT)
+
+    @api.multi
+    def order_process_now(self):
+        """
+        Confirms order and creates and validates invoice, confirms pickings.
+        """
+        for sale in self:
+            sale.action_button_confirm()
+            inv_id = sale.action_invoice_create()
+            if inv_id:
+                inv = self.env['account.invoice'].browse(inv_id)
+                date = self._convert_str_to_datetime(sale.date_order)
+                date = date.strftime(DATE_FORMAT)
+                inv.write({
+                    'date_invoice':date,
+                    'supplier_invoice_number':self.invoice_number
+                })
+                self.update_state()
+                inv.signal_workflow('invoice_open')
+            for picking in sale.picking_ids:
+                picking.force_assign()
+                picking.action_done()
+
+    @api.multi
+    def update_state(self):
+        for order in self:
+            order.write({'state': 'done'})
+        return True
+
+
+
+class SaleOrderLine(models.Model):
+    _inherit = 'sale.order.line'
+    _name = 'sale.order.line'
+
+    amount_total = fields.Float(compute='_calculate_total_sale_line',string='Total',default=0.0)
+
+    @api.depends('price_unit','product_uom_qty')
+    def _calculate_total_sale_line(self):
+        for line in self:
+            line.amount_total = line.product_uom_qty * line.price_unit

BIN
models/sale_order.pyc


+ 94 - 0
views/sale_order_view.xml

@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+        <record id="view_order_confirm_form" model="ir.ui.view">
+            <field name="name">sale.order.form - Confirm</field>
+            <field name="model">sale.order</field>
+            <field name="inherit_id" ref="sale.view_order_form"/>
+            <field name="arch" type="xml">
+
+                <xpath expr="//tree[@string='Sales Order Lines']//field[@name='name']" position="attributes">
+                    <attribute name="invisible">1</attribute>
+                </xpath>
+
+                <!-- <xpath expr="//tree[@string='Sales Order Lines']//field[@name='discount']" position="attributes">
+                    <attribute name="invisible">1</attribute>
+                </xpath> -->
+
+                <!-- <xpath expr="//tree[@string='Sales Order Lines']//field[@name='price_unit']" position="before">
+                    <field name="standard_price" readonly="1"/>
+                </xpath> -->
+
+                <xpath expr="//tree[@string='Sales Order Lines']//field[@name='price_subtotal']" position="after">
+                    <field name="amount_total" readonly="1"/>
+                </xpath>
+
+                <field name="pricelist_id" position="after">
+                    <field name="invoice_number"/>
+                </field>
+
+                <!--
+                    BUTTONS
+                -->
+                <button name="action_button_confirm" states="sent" position="after">
+                    <button name="order_process_now" string="Procesar Venta" type="object" states="draft,sent" groups="base.group_user"/>
+                </button>
+                <!-- <button name="action_quotation_send" position="replace">
+                    <button name="action_quotation_send" string="Send by Email" type="object" states="draft" class="oe_highlight" groups="base.group_user" invisible="1"/>
+                </button> -->
+                <!-- <button name="action_quotation_send" states="sent,progress,manual" position="replace">
+                    <button name="action_quotation_send" string="Send by Email" type="object" groups="base.group_user" invisible="1"/>
+                </button> -->
+                <button name="print_quotation" states="draft" position="replace">
+                    <button name="print_quotation" string="Print" type="object" states="draft" class="oe_highlight" groups="base.group_user" invisible="1"/>
+                </button>
+                <button name="print_quotation" states="sent,progress,manual" position="replace">
+                     <button name="print_quotation" string="Print" type="object" states="sent,progress,manual" groups="base.group_user" invisible="1"/>
+                </button>
+                <button name="action_button_confirm" position="replace">
+                   <button name="action_button_confirm" states="draft" string="Confirm Sale" type="object" groups="base.group_user" invisible="1"/>
+                </button>
+                <button name="action_button_confirm" position="replace">
+                    <button name="action_button_confirm" states="sent" string="Confirm Sale" class="oe_highlight" type="object" groups="base.group_user" invisible="1"/>
+                </button>
+                <button name="invoice_cancel" position="replace">
+                    <button name="invoice_cancel" states="invoice_except" string="Cancel Order" groups="base.group_user" invisible="1"/>
+                </button>
+                <button name="cancel" position="replace">
+                    <button name="cancel" states="draft,sent" string="Cancel Quotation" groups="base.group_user" invisible="1"/>
+                </button>
+                <button name="action_cancel" position="replace">
+                    <button name="action_cancel" states="manual,progress" string="Cancel Order" type="object" groups="base.group_user" invisible="1"/>
+                </button>
+            </field>
+        </record>
+
+        <record id="account_invoice_cred_cont" model="ir.ui.view">
+            <field name="name">account.invoice.cred.cont</field>
+            <field name="model">account.invoice</field>
+            <field name="inherit_id" ref="account.invoice_form" />
+            <field name="arch" type="xml">
+                <field name="fiscal_position" position="after">
+                    <field name="supplier_invoice_number"/>
+                </field>
+            </field>
+        </record>
+
+        <record id="order_process_now_action" model="ir.actions.server">
+            <field name="name">Fast Confirm</field>
+            <field name="model_id" ref="model_sale_order"/>
+            <field name="state">code</field>
+            <field name="code">
+                if context.get('active_model') == 'sale.order' and context.get('active_ids'):
+                    self.order_process_now(cr, uid, context['active_ids'], context=context)
+            </field>
+        </record>
+
+        <record id="ir_order_process_now" model="ir.values">
+            <field eval="'client_action_multi'" name="key2"/>
+            <field eval="'sale.order'" name="model"/>
+            <field name="name">Fast Confirm</field>
+            <field eval="'ir.actions.server,%d'%order_process_now_action" name="value"/>
+        </record>
+    </data>
+</openerp>