Commit 47efdbea by Maria Agustina

1427 casi terminada

1 parent 30a0bc8d
......@@ -29,11 +29,13 @@
# always loaded
'data': [
'security/ir.model.access.csv',
'datos_xml/producto.xml',
'views/cobros.xml',
'views/intereses.xml',
'wizard/interes_negociado.xml',
'wizard/validar_nd.xml',
'wizard/pago_cliente_wizzard.xml',
'views/menu.xml',
],
# only loaded in demonstration mode
'demo': [
......
<odoo>
<data noupdate='1'>
<!-- <record id="asw_producto_saldo_inicial" model="asw.producto">
<field name='prod_descripcion'>Saldo inicial</field>
<field name='pro_puede_ser_comprado'>True</field>
<field name='pro_puede_ser_vendido'>True</field>
<field name='es_servicio'>False</field>
</record> -->
<record id="asw_producto_interes_default" model="asw.producto">
<field name='prod_descripcion'>INTERES</field>
<field name='pro_puede_ser_comprado'>True</field>
<field name='pro_puede_ser_vendido'>True</field>
</record>
</data>
</odoo>
\ No newline at end of file
......@@ -45,7 +45,7 @@ class vnt_cobros(models.Model):
co_estado = fields.Selection(
string=u'Estado Cobro',
selection=[('b', 'Borrador'), ('a', 'Adeudado'), ('p', 'Pagado'),('c', 'Cancelado')],
selection=[('b', 'Borrador'),('a', 'Confirmado'),('pr', 'Procesado'),('p', 'Cobrado'),('c', 'Cancelado')],
readonly= True,
default= 'b',
store= True
......@@ -58,7 +58,7 @@ class vnt_cobros(models.Model):
for record in self:
for lin in record.co_lin_deuda:
if lin.ld_select == True:
sumita += lin.ld_total
sumita += lin.ld_comp_adeudado
record.co_total_deuda = sumita
@api.depends('co_lin_deuda')
......@@ -87,11 +87,17 @@ class vnt_cobros(models.Model):
raise UserError("No hay deudas registradas del cliente seleccionado")
def volver_borrador(self):
if (self.co_estado == 'pr'):
for lin in self.co_lin_deuda:
nota = lin.ld_nd.id
nota = self.env['asw.comprobante'].search([('id', '=', nota)])
nota.comp_fecha_cancelacion = datetime.today()
self.co_estado = 'b'
def procesar(self):
def procesar_deuda(self):
if self.co_total == 0:
raise UserError('No hay valores seleccionados a cobrar')
raise UserError('No hay valores seleccionados a confirmar')
else:
for li in self.co_lin_deuda:
if li.ld_select:
......@@ -99,71 +105,128 @@ class vnt_cobros(models.Model):
raise UserError('Debe elegir un modo de cobro para cada línea seleccionada')
self.co_estado = 'a'
def pagar_deuda(self):
def procesar_notas(self):
for li in self.co_lin_deuda:
if li.ld_select:
#paga factura original
fac_id = li.ld_factura.id
fac = self.env['asw.comprobante'].search([('id', '=', fac_id)])
fac.comp_estado = 'p'
#obtener total. si hay interes se hace nota de debito
total_int = li.ld_interes
if (total_int != 0.0):
#crear notas de debito
#crear notas de debito que queden en pendientes de pago
#talonario
fac_id = li.ld_factura.id
fac = self.env['asw.comprobante'].search([('id', '=', fac_id)])
tal_original = fac.comp_talonario
tal_letra = tal_original.tal_letra
tal_pto = tal_original.tal_pto_vta
talonario = self.env['asw.talonario'].search([('tal_pto_vta','=',tal_pto),('tal_letra','=', tal_letra),('tal_codigo','=','NDEB')])
referencia = 'Nota de débito del comprobante : ' + fac.comp_talonario.tal_codigo + "/" +fac.comp_nro_letras
#crear talonario con mismo pto de venta y letra
tipo_comprobante = self.env['asw.tipo_comprobante'].search([('tc_descripcion', '=', 'NOTA DE DEBITO A')])
talonario_nvo = self.env['asw.talonario'].create({
'tal_pto_vta': tal_pto,
'tal_letra': tal_letra,
'tal_codigo': "NDEB"+ tal_original.tal_codigo + str(self.id),
'tal_descripcion': "NDEB-" + tal_original.tal_descripcion + str(self.id),
'tal_tipo': tal_original.tal_tipo,
'tal_menu': tal_original.tal_menu,
})
talonario_nvo.tal_tpc_id = tipo_comprobante.id
contra_comprobante = self.generar_comprobante(
talonario = talonario_nvo,
nota_debito = self.generar_comprobante(
talonario = talonario,
cliente = fac.comp_cliente,
total = total_int,
referencia = referencia,
comp_estado = fac.comp_estado,
comp_nro_letras = fac.comp_nro_letras,
comp_moneda = fac.comp_moneda.id,
comp_nota_credito = fac.id,
#comp_nota_credito = fac.id,
)
print ("se genero nuevo comprobante? de id " + str(contra_comprobante.id))
contra_comprobante.comp_fecha_validacion = datetime.today()
#crear lineas nd
inter_prod = self.env['asw.producto'].search([('prod_descripcion','=','INTERES')])
linea_comp = self.env['asw.linea_comprobante'].create({
'lcp_descripcion_producto': referencia,
'lcp_comprobante': contra_comprobante.id,
'lcp_importe': total_int
})
print ("se genero nueva linea de comprobante? de id " + str(linea_comp.id))
# contra_comprobante.comp_linea_facturas = (4,linea_comp.id)
#asociar nd a factura original
fac.write({
'comp_nota_credito' : contra_comprobante.id
'lcp_producto': inter_prod.id,
'lcp_comprobante': nota_debito.id,
'lcp_precio': total_int,
'lcp_importe': total_int,
})
#asociar nd a linea deuda tb
li.ld_nd = contra_comprobante.id
li.ld_nd = nota_debito.id
self.co_estado = 'pr'
self.co_estado = 'p'
def pagar_deuda(self):
#wizard primero para validar cada nota y luego wizard pago
lista = []
for li in self.co_lin_deuda:
if li.ld_select:
#lista tiene todas las nd
lista.append(li.ld_nd.id)
datos = {'vnd_cliente': self.co_cliente.id,
'vnd_total': self.co_total,
'vnd_cobro': self.id}
nvo_w = self.env['vnt.validar_nd'].create(datos)
nvo_w.vnd_notas = lista
return {
'type': 'ir.actions.act_window',
'res_model': 'vnt.validar_nd',
'view_mode': 'form',
'view_type': 'form',
'res_id': nvo_w.id,
'target': 'new',
}
# #paga factura original
# fac_id = li.ld_factura.id
# fac = self.env['asw.comprobante'].search([('id', '=', fac_id)])
# fac.comp_estado = 'p'
# #obtener total. si hay interes se hace nota de debito
# total_int = li.ld_interes
# if (total_int != 0.0):
# #crear notas de debito
# tal_original = fac.comp_talonario
# tal_letra = tal_original.tal_letra
# tal_pto = tal_original.tal_pto_vta
# referencia = 'Nota de débito del comprobante : ' + fac.comp_talonario.tal_codigo + "/" +fac.comp_nro_letras
# #crear talonario con mismo pto de venta y letra
# tipo_comprobante = self.env['asw.tipo_comprobante'].search([('tc_descripcion', '=', 'NOTA DE DEBITO A')])
# talonario_nvo = self.env['asw.talonario'].create({
# 'tal_pto_vta': tal_pto,
# 'tal_letra': tal_letra,
# 'tal_codigo': "NDEB"+ tal_original.tal_codigo + str(self.id),
# 'tal_descripcion': "NDEB-" + tal_original.tal_descripcion + str(self.id),
# 'tal_tipo': tal_original.tal_tipo,
# 'tal_menu': tal_original.tal_menu,
# })
# talonario_nvo.tal_tpc_id = tipo_comprobante.id
# contra_comprobante = self.generar_comprobante(
# talonario = talonario_nvo,
# cliente = fac.comp_cliente,
# total = total_int,
# referencia = referencia,
# comp_estado = fac.comp_estado,
# comp_nro_letras = fac.comp_nro_letras,
# comp_moneda = fac.comp_moneda.id,
# comp_nota_credito = fac.id,
# )
# contra_comprobante.comp_fecha_validacion = datetime.today()
# #crear lineas nd
# linea_comp = self.env['asw.linea_comprobante'].create({
# 'lcp_descripcion_producto': referencia,
# 'lcp_comprobante': contra_comprobante.id,
# 'lcp_importe': total_int
# })
# # contra_comprobante.comp_linea_facturas = (4,linea_comp.id)
# #asociar nd a factura original
# fac.write({
# 'comp_nota_credito' : contra_comprobante.id
# })
# #asociar nd a linea deuda tb
# li.ld_nd = contra_comprobante.id
# self.co_estado = 'p'
def cancelar(self):
......@@ -180,6 +243,43 @@ class vnt_cobros(models.Model):
nd = self.env['asw.comprobante'].search([('id', '=', nd_id)])
nd.comp_fecha_cancelacion = datetime.today()
def cobrar_todo(self):
for lin in self.co_lin_deuda:
if lin.ld_select:
lin.ld_cobro = 'todo'
return (True)
def cobrar_negociado(self):
lista =[]
for lin in self.co_lin_deuda:
if lin.ld_select:
lista.append(lin.id)
#abrir wizard con in_ld self id
datos = {'in_interes':0.0,
'in_intotal': self.co_total_interes,
'in_deutotal': self.co_total_deuda,
'in_cant_comp': len(lista),
'in_tottot': self.co_total}
nvo_w = self.env['vnt.interes_negociado'].create(datos)
nvo_w.in_ld2 = lista
return {
'type': 'ir.actions.act_window',
'res_model': 'vnt.interes_negociado',
'view_mode': 'form',
'view_type': 'form',
'res_id': nvo_w.id,
'target': 'new',
}
def interes_perdido(self):
for lin in self.co_lin_deuda:
if lin.ld_select:
lin.ld_cobro = 'perdido'
lin.ld_interes = 0
return (True)
......
# -*- coding: utf-8 -*-
from odoo import models, fields, api, exceptions
from odoo.exceptions import UserError, ValidationError
from datetime import datetime
import odoo.addons.decimal_precision as dp
import math
......@@ -9,4 +10,10 @@ import os
class asw_comprobante(models.Model):
_inherit = 'asw.comprobante'
def validarNotaD(self):
self.comp_fecha_validacion = datetime.today()
return {
"type": "ir.actions.do_nothing",
}
......@@ -33,7 +33,7 @@ class vnt_interes(models.Model):
)
int_tasa_anual = fields.Float(
string=u'Tasa Anual',
string=u'Tasa Anual (%)',
)
@api.onchange('int_todos')
......
......@@ -28,6 +28,11 @@ class vnt_linea_deuda(models.Model):
compute="_compute_ld_total",
)
ld_comp_adeudado = fields.Float(
string=u'Total Adeudado Factura',
compute="_compute_ld_total_adeudado",
)
ld_select = fields.Boolean(
string="Seleccionar",
......@@ -73,6 +78,11 @@ class vnt_linea_deuda(models.Model):
record.ld_total = record.ld_factura.comp_total
@api.depends('ld_factura')
def _compute_ld_total_adeudado(self):
for record in self:
record.ld_comp_adeudado = record.ld_factura.comp_adeudado
@api.depends('ld_factura')
def _compute_ld_interes(self):
for record in self:
dias_mes = record.number_of_days_in_month(datetime.now().year, datetime.now().month)
......@@ -80,27 +90,47 @@ class vnt_linea_deuda(models.Model):
fmt = '%Y-%m-%d'
d1= datetime.strptime(record.ld_fecha_vto, fmt)
d2= datetime.strptime(record.ld_fecha_calculo, fmt)
if d2>d1:
dias_pasados= (d2 - d1).days
cliente_id = record.ld_factura.comp_cliente.id
config_int = self.env['vnt.interes'].search([('int_cliente', '=', cliente_id)], limit=1)
tasa_an = config_int.int_tasa_anual
if not config_int:
raise UserError("No hay configuración de interés para el cliente seleccionado")
tasa_an = (config_int.int_tasa_anual * record.ld_total)/100
tasa_diaria = tasa_an/dias_anio
if config_int.int_ritmo == 'mensual':
tasa_mensual = tasa_diaria * dias_mes
cociente = dias_pasados // dias_mes
cociente =+ 1;
int_calculado = cociente * tasa_mensual
#en d2 tengo la fecha de hoy y en d1 la del vto, resto los meses y agrego el q paso desde el vto
meses_pasados = d2.month - d1.month + 12*(d2.year - d1.year)
meses_pasados = meses_pasados + 1
anio = d1.year
#calculo del intres
calc_int = 0
for i in range (meses_pasados):
mes= d1.month
mes = mes + i
if (mes % 12 == 0):
mes = 12
else:
mes = mes % 12
calc_int = calc_int + (tasa_diaria * record.number_of_days_in_month(anio, mes))
if (mes == 12):
anio = anio + 1
int_calculado = calc_int
if config_int.int_ritmo == 'quincenal':
tasa_quincenal = tasa_diaria * 15
cociente = dias_pasados // 15
cociente =+ 1;
cociente = cociente + 1
int_calculado = cociente * tasa_quincenal
if config_int.int_ritmo == 'semanal':
tasa_semanal = tasa_diaria * 7
cociente = dias_pasados // 7
cociente =+ 1;
cociente = cociente + 1
int_calculado = cociente * tasa_semanal
if config_int.int_ritmo == 'diaria':
int_calculado = dias_pasados * tasa_diaria
else:
......@@ -119,26 +149,26 @@ class vnt_linea_deuda(models.Model):
suma += self.number_of_days_in_month(anio, m)
return suma
def cobrar_todo(self):
self.ld_cobro = 'todo'
def cobrar_negociado(self):
self.ld_cobro = 'negociado'
#abrir wizard con in_ld self id
datos = {'in_ld': self.id}
nvo_w = self.env['vnt.interes_negociado'].create(datos)
return {
'type': 'ir.actions.act_window',
'res_model': 'vnt.interes_negociado',
'view_mode': 'form',
'view_type': 'form',
'res_id': nvo_w.id,
'target': 'new',
}
def interes_perdido(self):
self.ld_cobro = 'perdido'
self.ld_interes = 0
# def cobrar_todo(self):
# self.ld_cobro = 'todo'
# def cobrar_negociado(self):
# self.ld_cobro = 'negociado'
# #abrir wizard con in_ld self id
# datos = {'in_ld': self.id}
# nvo_w = self.env['vnt.interes_negociado'].create(datos)
# return {
# 'type': 'ir.actions.act_window',
# 'res_model': 'vnt.interes_negociado',
# 'view_mode': 'form',
# 'view_type': 'form',
# 'res_id': nvo_w.id,
# 'target': 'new',
# }
# def interes_perdido(self):
# self.ld_cobro = 'perdido'
# self.ld_interes = 0
......
......@@ -40,9 +40,10 @@
<!--<sheet>-->
<header>
<button type="object" class="oe_highlight" name="traer_ld" string="Cargar Deudas" attrs="{ 'invisible' : ['|',('co_deucarg','=',True),('co_cliente','=',False)]}" />
<button name="procesar" string="Procesar" type="object" class='btn btn-primary' attrs="{'invisible':[('co_estado','in',['a','p','c'])]}"/>
<button name="pagar_deuda" string="Pagar" type="object" class='btn btn-primary' attrs="{'invisible':[('co_estado','in',['b','p','c'])]}"/>
<button name="cancelar" string="Cancelar" type="object" class='btn btn-primary' attrs="{'invisible':[('co_estado','in',['b','a','c'])]}"/>
<button name="procesar_deuda" string="Confirmar Deuda" type="object" class='btn btn-primary' attrs="{'invisible':['|',('co_estado','in',['p','a','pr','c']),('co_deucarg','=',False)]}" />
<button name="procesar_notas" string="Procesar Cobro" type="object" class='btn btn-primary' attrs="{'invisible':[('co_estado','in',['pr','b','p','c'])]}"/>
<button name="pagar_deuda" string="Cobrar Todo" type="object" class='btn btn-primary' attrs="{'invisible':[('co_estado','in',['b','a','p','c'])]}"/>
<button name="cancelar" string="Cancelar" type="object" class='btn btn-primary' attrs="{'invisible':[('co_estado','in',['b','a','c','pr'])]}"/>
<button name="volver_borrador" string="Volver a Borrador" type="object" class='btn btn-primary' attrs="{'invisible':[('co_estado','in',['b','p','c'])]}"/>
<field name="co_estado" widget="statusbar"/>
......@@ -55,12 +56,16 @@
</group>
<notebook colspan="4">
<page string="Deudas">
<button type="object" class="btn btn-primary" style="margin:5px;" name="cobrar_todo" string="Cobrar Todo" attrs="{'invisible':[('co_estado','in',['a','p','c'])]}" />
<button type="object" class="btn btn-primary" style="margin:5px;" name="cobrar_negociado" string="Cobro Negociado" attrs="{'invisible':[('co_estado','in',['a','p','c'])]}" />
<button type="object" class="btn btn-primary" style="margin:5px;" name="interes_perdido" string="Interés Perdido" attrs="{'invisible':[('co_estado','in',['a','p','c'])]}" />
<field nolabel="1" name="co_lin_deuda">
<tree create="0" edit="1" editable="1">
<field name="ld_factura" readonly="1" />
<field name="ld_fecha_vto" readonly="1" />
<field name="ld_estado" readonly="1" />
<field name="ld_total" readonly="1"/>
<field name="ld_comp_adeudado" readonly="1"/>
<field name="ld_interes" readonly="1"/>
<field name="ld_fecha_calculo" readonly="1"/>
<field name="ld_co_estado" invisible="1"/>
......@@ -68,9 +73,6 @@
<field name="ld_estado" editable="0" readonly="1" />
<field name="ld_total" readonly="1" /> -->
<field name="ld_cobro" readonly="1"/>
<button type="object" class="btn btn-primary" name="cobrar_todo" string="Cobrar Todo" attrs="{'invisible':[('ld_co_estado','in',['a','p','c'])]}" />
<button type="object" class="btn btn-primary" name="cobrar_negociado" string="Cobro Negociado" attrs="{'invisible':[('ld_co_estado','in',['a','p','c'])]}" />
<button type="object" class="btn btn-primary" name="interes_perdido" string="Interés Perdido" attrs="{'invisible':[('ld_co_estado','in',['a','p','c'])]}" />
<field name="ld_select" attrs="{'readonly':[('ld_co_estado','in',['a','p','c'])]}"/>
<field name="ld_nd" readonly="1" attrs="{'invisible':[('ld_co_estado','in',['a','b','c'])]}"/>
</tree>
......
from . import interes_negociado
from . import validar_nd
from . import pago_cliente_wizzard
No preview for this file type
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.exceptions import UserError
class vnt_interes_negociado(models.TransientModel):
_name = 'vnt.interes_negociado'
......@@ -9,11 +10,65 @@ class vnt_interes_negociado(models.TransientModel):
string=u'Interés Negociado',
)
#viejo, cdo era una sola linea
in_ld = fields.Many2one(
string='Linea de deuda',
comodel_name='vnt.linea_deuda',
)
in_ld2 = fields.Many2many(
string=u"Línea Deuda",
comodel_name='vnt.linea_deuda',
)
in_tipo_int = fields.Selection(
string = 'Tipo de negociación',
selection = [
('monto', 'Monto Interés Negociado'),
('porcentaje', 'Porcentaje Interés Negociado'),
],
store = True,
)
in_intotal = fields.Float(
string=u"Total Interés",
readonly=True,
)
in_deutotal = fields.Float(
string=u"Total Deuda",
readonly=True,
)
in_cant_comp = fields.Integer(
string=u"Cant. de Comprobantes",
readonly=True,
)
in_tottot = fields.Float(
string=u"Total",
readonly=True,
)
@api.depends('in_tipo_int')
def aceptar_in(self):
linea = self.in_ld
linea.write({'ld_interes': self.in_interes})
\ No newline at end of file
if (self.in_tipo_int not in ['monto','porcentaje']):
raise UserError('Debe elegir un tipo de negociación')
if (self.in_interes == 0.0):
raise UserError('Debe introducir un monto o porcentaje. Si decide cancelar el interés debe pulsar el botón "Interés perdido" en la página anterior')
lineas = self.in_ld2
cant_lin = len(self.in_ld2)
if cant_lin != 0:
nvo_monto = self.in_interes/cant_lin
else:
raise UserError('No hay líneas de deuda seleccionadas')
if (self.in_tipo_int == 'monto'):
for lin in self.in_ld2:
lin.write({'ld_interes': nvo_monto})
lin.ld_cobro = 'negociado'
if (self.in_tipo_int == 'porcentaje'):
for lin in self.in_ld2:
nvo_monto = (lin.ld_interes * self.in_interes)/100
lin.write({'ld_interes': nvo_monto})
lin.ld_cobro = 'negociado'
return (True)
......@@ -5,11 +5,20 @@
<field name="model">vnt.interes_negociado</field>
<field name="arch" type="xml">
<form>
<group string="Subtotal">
<field name="in_cant_comp" />
<field name="in_deutotal" />
<field name="in_intotal" />
<field name="in_tottot" />
</group>
<group col="4" string="Ingresar el interés negociado">
<field name="in_tipo_int" />
<field name="in_interes" />
</group>
<footer>
<p>La opción Porcentaje aplicará el porcentaje a todas las líneas de deuda seleccionadas</p>
<p>La opción Monto distribuirá el monto elegido entre las líneas de deuda seleccionadas</p>
<button name="aceptar_in" string="Aceptar" type="object" class="oe_highlight"/>
<button special="cancel" string="Cancel"/>
</footer>
......
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.exceptions import UserError
class asw_pago_cliente_wizzard(models.TransientModel):
_inherit = 'asw.pago_cliente_wizzard'
pcw_totalcobrar = fields.Float(
string="Total a Cobrar",
readonly=True,
)
pcw_cliente = fields.Many2one(
string='Cliente',
comodel_name='asw.cliente',
readonly=True,
)
pcw_cobro_deu = fields.Many2one(
string='Cobro',
comodel_name='vnt.cobros',
)
@api.multi
def generar_recibo(self):
self.chequear_montos()
self.armar_recibo()
self.validar_afectar(self.pcw_recibo)
self.pcw_recibo.eliminar_valores_cero()
self.pcw_recibo.comp_estado = 'p'
self.pcw_cobro_deu.co_estado = 'p'
accion = self.get_action_navega('asw_recibos_list_action', self.pcw_recibo.id)
return accion
def chequear_montos(self):
if self.pcw_totalcobrar > self.pcw_total:
raise UserError("El monto adeudado aún no fue saldado")
<odoo>
<data>
<record id="asw_pago_cliente_wizzard_inherit_form" model="ir.ui.view">
<field name="name">Cobro a Cliente</field>
<field name="model">asw.pago_cliente_wizzard</field>
<field name="inherit_id" ref="asw_tpv.asw_pago_cliente_wizzard_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='pcw_cli_razon_social']" position="before">
<group>
<field name="pcw_totalcobrar"/>
</group>
</xpath>
</field>
</record>
</data>
</odoo>
\ No newline at end of file
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.exceptions import UserError
class vnt_validar_nd(models.TransientModel):
_name = 'vnt.validar_nd'
_description = 'Validar Notas de Débito'
vnd_notas = fields.Many2many(
string=u"Nota Débito",
comodel_name='asw.comprobante',
)
vnd_total = fields.Float(
string="Total",
)
vnd_cliente = fields.Many2one(
string='Cliente',
comodel_name='asw.cliente',
)
vnd_cobro = fields.Many2one(
string='Cobro',
comodel_name='vnt.cobros',
)
#metodo para abrir wizard pago
def cobrar_todo(self):
datos = {'pcw_cliente': self.vnd_cliente.id,
'pcw_totalcobrar': self.vnd_total,
'pcw_cobro_deu': self.vnd_cobro.id}
wizard = self.env['asw.pago_cliente_wizzard'].create(datos)
return {
'type': 'ir.actions.act_window',
'res_model': 'asw.pago_cliente_wizzard',
'view_mode': 'form',
'view_type': 'form',
'res_id': wizard.id,
'target': 'new',
}
<odoo>
<data>
<record id="vnt_validar_nd_wizard_form" model="ir.ui.view">
<field name="name">Validar Notas Débito</field>
<field name="model">vnt.validar_nd</field>
<field name="arch" type="xml">
<form>
<group>
<field name="vnd_notas" nolabel="1">
<tree create="0" edit="1" editable="1">
<field name="name"/>
<field name="comp_talonario"/>
<field name="comp_nro"/>
<field name="comp_pto_vta"/>
<field name="comp_cliente"/>
<field name="comp_estado"/>
<button name="validarNotaD" string="Validar" type="object" class="oe_highlight"/>
</tree>
</field>
</group>
<footer>
<p>La validación de las Notas de Débito debe realizarse de esta manera debido a las limitaciones generadas por el sistema de AFIP</p>
<p>Una vez que las notas están validadas sólo pueden cancelarse manualmente, no desde este menú</p>
<button name="cobrar_todo" string="Pasar a Cobro" type="object" class="oe_highlight"/>
</footer>
</form>
</field>
</record>
<act_window id="vnt_validar_nd_wizard_action"
name="Validar Notas Débito"
src_model="vnt.validar_nd"
res_model="vnt.validar_nd"
view_mode="form"
target="new"
multi="True"/>
</data>
</odoo>
\ No newline at end of file
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!