Переглянути джерело

Agregar fecha de emision en factura

sebas 4 роки тому
коміт
a4d2854e2c

+ 2 - 0
__init__.py

@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+import models


+ 15 - 0
__openerp__.py

@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+{
+    'name' : 'Fecha de emision en factura',
+    'version' : '2.1',
+    'description' : """
+    """,
+    'author' : 'Eiru/Sebastian Penayo',
+    'category' : 'account',
+    'depends' : [
+        'account',
+    ],
+    'data' : [
+        'views/views.xml',
+    ],
+}

+ 2 - 0
models/__init__.py

@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+import account_invoice_date

BIN
models/__init__.pyc


+ 224 - 0
models/account_invoice_date.py

@@ -0,0 +1,224 @@
+# -*- coding: utf-8 -*-
+from openerp import api, fields, models
+from openerp.exceptions import except_orm
+from datetime import datetime, timedelta
+from openerp.tools import DEFAULT_SERVER_DATE_FORMAT
+from dateutil.relativedelta import relativedelta
+
+
+class AccountInvoice(models.Model):
+    _inherit = 'account.invoice'
+
+    date_emision = fields.Date("Fecha de Emisión")
+
+
+
+	# def sale_convert_str_to_datetime(self, date):
+	# 	return datetime.strptime(date, DEFAULT_SERVER_DATE_FORMAT)
+	#
+	# @api.model
+	# def getSaleOrder(self,idOrder):
+	# 	return[{
+	# 		'id': order.id,
+	# 		'dateOrder': order.date_order.split(" ")[0],
+	# 		'dateQuota': order.date_emision or order.date_order.split(" ")[0],
+	# 	} for order in self.env['sale.order'].browse(idOrder)]
+
+	# @api.model
+	# def getSaleOrderInterest(self,idOrder):
+	# 	termConfig = self.env['accont.payments.term.config'].search([('compute', '=', True)])
+	# 	if (not termConfig):
+	# 		return []
+	#
+	# 	saleOrder = self.env['sale.order'].browse(idOrder)
+	# 	if (not saleOrder):
+	# 		return []
+	# 	dateSale = self.sale_convert_str_to_datetime(saleOrder.date_order.split(" ")[0])
+	# 	datefirst = self.sale_convert_str_to_datetime(saleOrder.date_quota or saleOrder.date_order.split(" ")[0])
+	# 	daysDiference = datefirst - dateSale
+	#
+	# 	orderLine = self.env['sale.order.line'].search([('order_id', '=', idOrder),('is_interest','=',True)])
+	# 	amountInteres = orderLine.price_subtotal or 0
+	#
+	# 	return [{
+	# 		'id': order.id,
+	# 		'amountTotal': (order.amount_total - amountInteres),
+	# 		'dateOrder': order.date_order.split(" ")[0],
+	# 		'dateQuota': order.date_quota or order.date_order.split(" ")[0],
+	# 		'amountInteres': round(daysDiference.days * ((order.amount_total - amountInteres) * (termConfig.interest_rate / 100)),order.pricelist_id.currency_id.decimal_places),
+	# 		'differenceDay': daysDiference.days,
+	# 		'messageDefault': termConfig.message_default,
+	# 		'currency': {
+	# 			'id': order.pricelist_id.currency_id.id,
+	# 			'symbol': order.pricelist_id.currency_id.symbol,
+	# 			'decimalSeparator': order.pricelist_id.currency_id.decimal_separator,
+	# 			'decimalPlaces': order.pricelist_id.currency_id.decimal_places,
+	# 			'thousandsSeparator': order.pricelist_id.currency_id.thousands_separator,
+	# 		}
+	# 	} for order in saleOrder]
+
+	# ''' Discount '''
+	# @api.model
+	# def account_Sale_line_add_discount(self,idOrder, newAmount):
+	# 	saleOrder = self.env['sale.order'].browse(idOrder)
+	# 	if (not saleOrder):
+	# 		return {'state': False }
+	#
+	# 	discount = abs(saleOrder.amount_total - newAmount)
+	#
+	# 	discountLine = {
+	# 		'order_id': saleOrder.id,
+	# 		'name':"DESCUENTO APLICADO",
+	# 		'price_unit': - discount,
+	# 		'price_subtotal': - discount,
+	# 	}
+	#
+	# 	line = self.env['sale.order.line'].create(discountLine)
+	# 	if (not line):
+	# 		return { 'state': False }
+	#
+	# 	return { 'state': True }
+
+
+	# ''' Interest '''
+	# @api.model
+	# def account_sale_line_interest(self, values):
+	# 	interestLine = {
+	# 		'order_id': values['saleId'],
+	# 		'name':"Cambio de fecha de vencimiento, Diferencia("+str(values['differenceDay'])+") días.",
+	# 		'price_unit':values['amountInteres'],
+	# 		'price_subtotal':values['amountInteres'],
+	# 		'is_interest': True
+	# 	}
+	#
+	# 	saleLine = self.env['sale.order.line'].search([('order_id', '=', values['saleId']),('is_interest','=',True)])
+	#
+	# 	if (not saleLine):
+	# 		if (values['amountInteres'] <= 0):
+	# 			return { 'state': True }
+	#
+	# 		saleLine.create(interestLine)
+	# 		return { 'state': True }
+	#
+	# 	if (values['amountInteres'] <= 0):
+	# 		saleLine.unlink()
+	# 		return { 'state': True }
+	#
+	# 	saleLine.write(interestLine)
+	# 	return { 'state': True }
+	#
+	# @api.model
+	# def calculatePaymentTermSaleOrder(self, values):
+	# 	order = self.env['sale.order'].browse(values['orderId'])
+	#
+	# 	if (not order):
+	# 		return False
+	#
+	# 	dateSale = self.sale_convert_str_to_datetime(order.date_order.split(" ")[0])
+	# 	datefirst = self.sale_convert_str_to_datetime(order.date_quota or order.date_order.split(" ")[0])
+	#
+	# 	amountTotal = order.amount_total
+	# 	amountPayments  = values['amountPayments']
+	# 	amountResidual = amountTotal - amountPayments
+	# 	cuotaCant = (amountResidual /values['amountCuota'])
+	#
+	# 	if (amountPayments > 0):
+	# 		cuotaCant +=1
+	#
+	# 	termCalculator = []
+	#
+	# 	cuotaTotal= int(cuotaCant) if ((cuotaCant - int(cuotaCant)) <= 0) else int(cuotaCant)+1
+	#
+	# 	termType = self.env['account.payment.term.type'].browse(values['typeTerm'])
+	# 	if (not termType):
+	# 		return False
+	#
+	# 	numberCuota = 0
+	# 	for cuota in xrange(int(cuotaCant)):
+	# 		numberCuota = cuota+1
+	# 		amount = values['amountCuota']
+	# 		adddaysMaturity = datefirst - dateSale
+	# 		date = datefirst
+	#
+	# 		if (numberCuota == 1 and (amountPayments > 0)):
+	# 			amount = amountPayments
+	# 			if (adddaysMaturity.days > 0):
+	# 				adddaysMaturity = dateSale - dateSale
+	# 			date = dateSale
+	#
+	# 		amountTotal -= amount
+	#
+	# 		termCalculator.append({
+	# 			'number' : numberCuota,
+	# 			'cuotaNumber': str(numberCuota)+"/"+str(cuotaTotal),
+	# 			'date': date.strftime(DEFAULT_SERVER_DATE_FORMAT),
+	# 			'amount': amount,
+	# 			'days': adddaysMaturity.days,
+	# 			'value': 'fixed' if (numberCuota < cuotaTotal) else 'balance'
+	# 		})
+	#
+	# 		days = datefirst - dateSale
+	# 		if(numberCuota == 1 and (amountPayments > 0) and days.days > 0 ):
+	# 			continue
+	#
+	# 		if (termType.type_calculation == 'month' ):
+	# 			datefirst += relativedelta(months=termType.qty_add)
+	# 		else :
+	# 			datefirst += timedelta(days=termType.qty_add)
+	#
+	# 	if (amountTotal > 0 ):
+	# 		numberCuota +=1
+	# 		adddaysMaturity = datefirst - dateSale
+	#
+	# 		termCalculator.append({
+	# 			'number' : numberCuota,
+	# 			'cuotaNumber': str(numberCuota)+"/"+str(cuotaTotal),
+	# 			'date': datefirst.strftime(DEFAULT_SERVER_DATE_FORMAT),
+	# 			'amount': amountTotal,
+	# 			'days': adddaysMaturity.days,
+	# 			'value': 'fixed' if (numberCuota < cuotaTotal) else 'balance'
+	# 		})
+	#
+	# 	return termCalculator
+	#
+	# ''' Payments Term '''
+	# @api.model
+	# def accountPaymentTermConfiguratorSale(self, values, orderId):
+	# 	resUser = self.env.user
+	# 	if (not resUser):
+	# 		return {
+	# 			'state': False,
+	# 			'message': 'No fue posible localizar el usuario.'
+	# 		}
+	#
+	# 	term = self.env['account.payment.term'].search([('config', '=', True),('user_term', '=', resUser.id),('type_operation', '=', 'sale')])
+	# 	if (term):
+	# 		term.unlink()
+	#
+	# 	line = []
+	# 	for configTerm in values:
+	# 		line.append([0,False,{
+	# 			'payment_id': term.id,
+	# 			'value': configTerm['value'],
+	# 			'days': configTerm['days'],
+	# 			'value_amount': configTerm['amount'] if (configTerm['value'] == 'fixed') else  0
+	# 		}])
+	#
+	# 	term = self.env['account.payment.term'].create({
+	# 		'name': 'Plazos Configurables %s - %s'%('Ventas', resUser.name),
+	# 		'type_operation': 'sale',
+	# 		'user_term': resUser.id,
+	# 		'config': True,
+	# 		'line_ids': line,
+	# 	})
+	#
+	# 	''' Actualizar condiciones de pago en la venta '''
+	#
+	# 	order = self.env['sale.order'].browse(orderId)
+	# 	if (order):
+	# 		order.write({'payment_term': term.id})
+	#
+	# 	return {
+	# 		'state': True,
+	# 		'message': 'Condiciones de pago configurado con éxito'
+	# 	}

BIN
static/description/icon.png


+ 27 - 0
views/views.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+	<data>
+		<!-- sale.order -->
+        <record id="views_eiru_sale_date" model="ir.ui.view">
+            <field name="name">eiru.sale.date</field>
+            <field name="model">account.invoice</field>
+            <field name="inherit_id" ref="account.invoice_form"/>
+            <field name="arch" type="xml">
+				    <field name="date_invoice" position="after">
+                    <field name="date_emision"/>
+                    </field>
+            </field>
+        </record>
+
+				<!-- Model: account.invoice -->
+        <record id="view_form_eiru_sale_date" model="ir.ui.view">
+            <field name="model">account.invoice</field>
+            <field name="inherit_id" ref="account.invoice_tree"/>
+            <field name="arch" type="xml">
+                <xpath expr="//field[@name='date_invoice']" position="after">
+                    <field name="date_emision"/>
+                </xpath>
+            </field>
+        </record>
+	</data>
+</openerp>