Commit a8461f78 by Juan

A pasar a master

1 parent b64eba18
......@@ -15,6 +15,7 @@
Se Agrega generacion manual para notas de credito y notas
de debito
Se agrega soporte a gastos mobil
Se agrega cobro Avanzado
""",
'author': 'HGT',
......
......@@ -26,6 +26,11 @@ class hgt_cobro_multiple(models.TransientModel):
string='Caja Efectivo',
)
caja_cheque = fields.Many2one(
comodel_name='asw.caja',
string='Caja Cheques',
)
nota = fields.Text(string='nota',readonly=True)
pcw_referencia = fields.Char(
......@@ -96,9 +101,17 @@ class hgt_cobro_multiple(models.TransientModel):
string='Transferencias Emitidas'
)
#pcw_tarjetas = fields.Many2many(
# comodel_name='asw.valores',
# relation='pago_cliente_tarjeta',
# column1='pago_cliente_id',
# column2='asw_valores_id',
# string='Tarjetas'
#)
pcw_tarjetas = fields.Many2many(
comodel_name='asw.valores',
relation='pago_cliente_tarjeta',
relation='hgt_pago_cliente_tarjeta',
column1='pago_cliente_id',
column2='asw_valores_id',
string='Tarjetas'
......@@ -123,6 +136,7 @@ class hgt_cobro_multiple(models.TransientModel):
comodel_name='asw.comprobante'
)
###########################################Validaciones y calculos ######################################
@api.depends('pcw_total')
def _compute_cliente(self):
if not len(self.pcw_cliente) == 0:
......@@ -146,14 +160,12 @@ class hgt_cobro_multiple(models.TransientModel):
Texto = f"{Texto}\n{factura.display_name} {factura.comp_adeudado}"
if not len(idc) == 1:
raise UserError("Solo se puede cobrar a un cliente a la vez, cierre la ventana y seleccione de vuelta los comprobantes a operar")
Texto = f"{Texto}\nTotal {Total}"
Texto = f"{Texto}\nTotal {Total}".replace(".",",")
self.pcw_cliente = idc[0]
self.nota = Texto
@api.depends('pcw_efectivo', 'pcw_che_recibidos', 'pcw_transferencias_recibidas', 'pcw_tarjetas', 'pcw_chq_resiv2', 'pcw_transferencias_emitidas', 'pcw_retencion_recibida','pcw_retenciones')
def _calcular_total(self):
total = 0
......@@ -193,16 +205,26 @@ class hgt_cobro_multiple(models.TransientModel):
if(not factura.comp_talonario.tal_genera_cta_cte):
raise Warning(f"Factura {factura.display_name} no mueve cuenta corriente no puedo manejarla")
total = self.LogicaFacturas(factura,resivo,total)
#obserbacion = f"""{obserbacion}\n{factura.display_name}"""
resivo.aumentar_numeracion_talonario()
resivo.comp_fecha_validacion = fields.Datetime.now()
resivo.generar_monto_adeudado()
resivo.validar_nro_comprobante()
self.ArmarObservaciones(facturas,resivo)
resivo.generar_monto_adeudado()#a prueba
return(resivo)
def ArmarObservaciones(self,facturas,resivo):
obserbacion = "\nFacturas Afectadas | Total | Saldo"
for factura in facturas:
obserbacion = f"""{obserbacion}\n{factura.display_name} | {factura.comp_total} | {factura.comp_adeudado}""".replace(".",",")
resivo.comp_observaciones = obserbacion
@api.multi
def generar_recibo(self):
resivo = self.pago_facturas_masivo()
self.ValoresEnCajas(resivo)
return {
'view_type': 'form',
'view_mode': 'form',
......@@ -213,10 +235,10 @@ class hgt_cobro_multiple(models.TransientModel):
}
def LogicaFacturas(self,factura,resivo,total):
print(factura.id,factura.comp_adeudado,total )
#print(f"factura {factura.display_name},adeudado {factura.comp_adeudado}, total {total}")
tmp = total
total = total - factura.comp_adeudado
if total >= 0.0:
if tmp >= 0.0:
self.MovimientoCuentaCorriente(factura,resivo,tmp)
#if total < 0.0:
# total = 0.0
......@@ -229,7 +251,7 @@ class hgt_cobro_multiple(models.TransientModel):
movimiento = factura.comp_adeudado
if factura.comp_adeudado >= total: #diff < 0.0:
movimiento = total
print( movimiento, factura.display_name)
#print( movimiento, factura.display_name)
if movimiento < 0.0:
raise Warning("debug")
cta_cte = self.env['asw.cta_cte'].create({
......@@ -298,3 +320,42 @@ class hgt_cobro_multiple(models.TransientModel):
record.write({'val_comprobante' : self.pcw_recibo.id, 'val_tipo' : tarjeta_credito.id})
if(record.val_tipo.tv_descripcion == 'Tarjeta de Débito'):
record.write({'val_comprobante' : self.pcw_recibo.id, 'val_tipo' : tarjeta_debito.id})
########################################LOGICA GESTION DE VALORES Y CAJAS ######################################################
def ValoresEnCajas(self,resivo):
#Clasifico el tipo de valor
efectivo = []
cheques = []
transferencias = []
tarjetas = []
for valor in resivo.comp_valores:
if valor.val_tipo.tv_tipo == "ef":
efectivo.append(valor)
if valor.val_tipo.tv_tipo == "chr":
cheques.append(valor)
if valor.val_tipo.tv_tipo == "trr":
transferencias.append(valor)
if valor.val_tipo.tv_tipo == "ta":
tarjetas.append(valor)
#Asocio segun el tipo de valor
self.MoverValores(efectivo, self.caja_efectivo.id)
self.MoverValores(cheques, self.caja_cheque.id)
self.MoverValores(transferencias)
self.MoverValores(tarjetas)
def MoverValores(self, valores, caja_destino_id=True):
"""mueve los valores de los recivos segun se configure"""
for valor in valores:
if caja_destino_id == True:
caja_destino_id = valor.valor_caja_id.id
if caja_destino_id == False:
raise Warning("No esta definida una de las cajas, todos los valores deven tener cajas asignadas")
valor.valor_caja_id.caja_valor_ids = [(3,valor.id,)]#elimino el valor de la caja actual
valor.valor_caja_id = caja_destino_id #cambio la caja en el valor
valor.valor_caja_id.caja_valor_ids = [(4,valor.id,)]#agrego el valor a la caja destino
......@@ -25,6 +25,7 @@
<notebook colspan="4">
<page string="Cheques Recibidos">
<group col="4">
<field name="caja_cheque" colspan='4'/>
<field name="pcw_chq_resiv2" colspan='4' nolabel='1' widget='one2many' context="{'default_val_razon_social' : pcw_cli_razon_social}">
<tree create="1" delete="1" edit="1" editable="bottom">
<field name="che_banco"/>
......@@ -58,6 +59,7 @@
<tree create="1" delete="1" edit="1" editable="bottom">
<field name="val_tipo" domain="[('tv_tipo','=', 'ta' )]" string='Tarjeta' options="{'no_create': True, 'no_create_edit':True}"/>
<field name="val_nro_pago"/>
<field name="valor_caja_id"/>
<field name="val_monto" required='1'/>
</tree>
</field>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!