confirmar_cancelacion_wizzard.py
2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.exceptions import UserError
from datetime import datetime
class vnt_confirmar_cancelacion(models.TransientModel):
_name = 'vnt.confirmar_cancelacion'
_description = 'Confirmar Cancelación'
_inherit = ['asw.generador_comprobante', 'asw.action.manager']
cc_notas = fields.Many2many(
string=u"Nota Débito",
comodel_name='asw.comprobante',
)
cc_facturas = fields.Many2many(
string=u"Facturas Originales",
comodel_name='asw.comprobante',
)
cc_cobro = fields.Many2one(
string='Cobro',
comodel_name='vnt.cobros',
)
def cancelar(self):
self.chequear_cancelacion_notas()
self.cancelar_facturas()
self.crear_notacred()
self.cc_cobro.cancelar_cobro()
def cancelar_facturas(self):
for fac in self.cc_facturas:
fac.comp_estado = 'a'
def chequear_cancelacion_notas(self):
for nota in self.cc_notas:
if nota.comp_fecha_cancelacion == False:
raise UserError("Todas las notas deben ser canceladas para continuar con la cancelación")
def crear_notacred(self):
comprobante = self.cc_cobro.co_recibos.filtered(lambda t: t.comp_talonario.tal_menu == 'rec')
referencia = 'Reintegro del comprobante : ' + comprobante.comp_talonario.tal_codigo + "/" +comprobante.comp_nro_letras
talonario = self.env['asw.talonario'].search([('tal_pto_vta','=',comprobante.comp_talonario.tal_pto_vta),('tal_letra','=', comprobante.comp_talonario.tal_letra),('tal_codigo','=','NCRED')])
if talonario:
contra_comprobante = self.generar_comprobante(
talonario = talonario,
cliente = comprobante.comp_cliente,
total = comprobante.comp_total,
referencia = referencia,
comp_estado = comprobante.comp_estado,
comp_nro_letras = comprobante.comp_nro_letras,
comp_subtotal = comprobante.comp_subtotal,
comp_moneda = comprobante.comp_moneda.id,
comp_nota_credito = comprobante.id
)
contra_comprobante.comp_fecha = datetime.today()
contra_comprobante.duplicar_lineas(comprobante)
comprobante.write({
'comp_nota_credito' : contra_comprobante.id
})
else:
raise UserError('No existe talonario para la Nota de Crédito correspondiente. Créelo o diríjase a soporte para que lo haga, y vuelva a este menú')