generar_nota.py
6.16 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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.exceptions import UserError
from datetime import datetime
class tpv_generar_nota(models.TransientModel):
_name = 'tpv.generar_nota'
_description = 'Generar Nota'
_inherit = ['asw.generador_comprobante', 'asw.action.manager']
gn_comprobante = fields.Many2one(
string=u'Comprobante Original',
comodel_name='asw.comprobante',
)
def iva_21(self):
return(self.env["asw.impuesto"].search([["name","=","21%"]], limit=1).id)
def generar_notaCred(self):
comprobante = self.gn_comprobante
referencia = 'Reintegro del comprobante : ' + comprobante.comp_talonario.tal_codigo + "/" +comprobante.comp_nro_letras
talonario = self.env["hgt.relaciones_talonarios"].Credito(comprobante.comp_talonario.id)
if talonario == False:
talonario = self.env['asw.talonario'].search([('tal_pto_vta','=',comprobante.comp_talonario.tal_pto_vta),('tal_letra','=', comprobante.comp_talonario.tal_letra),('tal_codigo','in',['NCAE','NCBE'])])#es variable mover a preferecias
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,
comprobante_caja_ids = comprobante.comprobante_caja_ids.id
)
contra_comprobante.write({
'referencia_orig_ptv': comprobante.comp_talonario.tal_pto_vta,
'referencia_orig_numero': comprobante.comp_nro,
'referencia_orig_letra': comprobante.comp_talonario.tal_letra,
'referencia_orig_fact': comprobante.id,
})
contra_comprobante.comp_fecha = datetime.today()
#linea de NCred
inter_prod = self.env['asw.producto'].search([('prod_descripcion','=','INTERES')])
linea_comp = self.env['asw.linea_comprobante'].create({
'lcp_producto': inter_prod.id,
'lcp_comprobante': contra_comprobante.id,
'lcp_precio': comprobante.comp_total / (121/100),
'lcp_importe': comprobante.comp_total / (121/100),
'lcp_iva': self.iva_21(),
})
linea_comp._onchange_precio_venta()
contra_comprobante.recalcularTotal()
#contra_comprobante._onchange_precio_venta()
#se agrega al recibo original
#comprobante.write({
# 'comp_nota_credito' : contra_comprobante.id
#})
return {
'name': "Nota de Crédito",
'type': 'ir.actions.act_window',
'res_model': 'asw.comprobante',
'view_mode': 'form',
'view_type': 'form',
'res_id': contra_comprobante.id,
'target': 'self',
}
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ú')
def generar_notaDeb(self):
comprobante = self.gn_comprobante
referencia = 'Nota de débito del comprobante : ' + comprobante.comp_talonario.tal_codigo + "/" +comprobante.comp_nro_letras
talonario = self.env["hgt.relaciones_talonarios"].Dedito(comprobante.comp_talonario.id)
if talonario == False:
talonario = self.env['asw.talonario'].search([('tal_pto_vta','=',comprobante.comp_talonario.tal_pto_vta),('tal_letra','=', comprobante.comp_talonario.tal_letra),('tal_codigo','in',['NDAN','NDBN','NDAE', 'NDBE'])])
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.write({
'referencia_orig_ptv': comprobante.comp_talonario.tal_pto_vta,
'referencia_orig_numero': comprobante.comp_nro,
'referencia_orig_letra': comprobante.comp_talonario.tal_letra,
'referencia_orig_fact': comprobante.id,
})
contra_comprobante.comp_fecha = datetime.today()
#linea de NDEB
inter_prod = self.env['asw.producto'].search([('prod_descripcion','=','INTERES')])
linea_comp = self.env['asw.linea_comprobante'].create({
'lcp_producto': inter_prod.id,
'lcp_comprobante': contra_comprobante.id,
'lcp_precio': comprobante.comp_total / (121/100),
'lcp_importe': comprobante.comp_total / (121/100),
})
linea_comp._onchange_precio_venta()
contra_comprobante.recalcularTotal()
return {
'name': "Nota de Débito",
'type': 'ir.actions.act_window',
'res_model': 'asw.comprobante',
'view_mode': 'form',
'view_type': 'form',
'res_id': contra_comprobante.id,
'target': 'self',
}
else:
raise UserError('No existe talonario para la Nota de Débito correspondiente. Créelo o diríjase a soporte para que lo haga, y vuelva a este menú')