conciliaciones.py
3.7 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
# -*- coding: utf-8 -*-
###############################################################################
# License, author and contributors information in: #
# __manifest__.py file at the root folder of this module. #
###############################################################################
from odoo import models, fields, api, _
from odoo.exceptions import UserError, ValidationError, Warning
import datetime
class tpv_conciliacion(models.Model):
_name = 'tpv_c.conciliacion'
_description = 'Conciliacion de Cuenta Corriente CUIT'
name = fields.Char(string='Titulo')
notas = fields.Text(string='Notas')
fecha = fields.Date(string='Fecha')
estado = fields.Selection(
string='Estado',
selection=[
('b', 'Borrador'),
('p', 'Conciliado'),
],
required=True,
default="b"
)
cuit = fields.Many2one(
comodel_name='asw.cliente',
string='Cuit')
facturas = fields.Many2many(
comodel_name='asw.comprobante',
string='Duedas de cliete y resivos propios',
relation = 'tpv_correcciones_conciliaciones_facturas2',
column1 = 'conciliacion_id',
column2 = 'factura_id'
)
resivos = fields.Many2many(
comodel_name='asw.comprobante',
string='Resivos de cliente y facturas de proveedor',
relation = 'tpv_correcciones_conciliaciones_resivos2',
column1 = 'conciliacion_id',
column2 = 'resivos_id'
)
def Reinicio(self):
for Id in self.facturas.ids:
self.facturas = [3,Id]
self.resivos = []
def TraerConfiguracion(self):
if self.cuit.id == False:
raise Warning("Debe seleccionar un cuit antes de proseguir")
config = self.env["tpv_c.conciliacion_config"].search([])
if len(config) != 1:
raise Warning("Debe haber exactamente una configuracion de conciliacion borre la que no corresponda si hay mas de una o creela si no hay, si no puede hacerlo contacte a soporte")
return config
def BuscarComprobantes(self):
self.BusquedaDeuda()
self.BusquedaResivos()
def BusquedaDeuda(self):
config = self.TraerConfiguracion()
estado = ["comp_estado","not in",["c","b"]]
domain_deuda = ["&","&",
["comp_talonario","in",config.facturas.ids],
["comp_cliente","=",self.cuit.id],
estado
]
deudas = self.env["asw.comprobante"].search(domain_deuda)
DeudaIds = []
for deuda in deudas:
if deuda.comp_adeudado != 0:
DeudaIds.append(deuda.id)
if len(DeudaIds) != 0:
self.write({'facturas': [(6, 0, DeudaIds)]})
else:
self.write({'facturas': [(6, 0, [])]})
def BusquedaResivos(self):
config = self.TraerConfiguracion()
estado = ["comp_estado","not in",["c","b"]]
domain_deuda = ["&","&",
["comp_talonario","in",config.resivos.ids],
["comp_cliente","=",self.cuit.id],
estado
]
deudas = self.env["asw.comprobante"].search(domain_deuda)
DeudaIds = []
for deuda in deudas:
if deuda.comp_adeudado != 0:
DeudaIds.append(deuda.id)
if len(DeudaIds) != 0:
self.write({'resivos': [(6, 0, DeudaIds)]})
else:
self.write({'resivos': [(6, 0, [])]})
def Conciliar(self):
config = self.TraerConfiguracion()
if (self.resivos.ids == []) or (self.facturas.ids == []):
raise Warning("O no hay comprobante o no hay resivos para conciliar")