Commit ff970d37 by Your Name

Merge branch 'master' of git.anacsoft.com:matu/tpv_correcciones

2 parents 26c69a0c c1fdf6b0
......@@ -37,8 +37,8 @@
# always loaded
'data': [
'security/ir.model.access.csv',
'security/permisos.xml',
'security/ir.model.access.csv',
'wizard/vista_prod_pfinal.xml',
'wizard/vista_corregir_nro_tal.xml',
'wizard/vista_generar_nota.xml',
......@@ -51,6 +51,9 @@
'wizard/vista_cobro_discriminado.xml',
'wizard/vista_pago_discriminado.xml',
'views/menu_compras.xml',
'views/conciliaciones.xml',
'views/conciliaciones_config.xml',
'views/menu_concilacion.xml',
],
# only loaded in demonstration mode
'demo': [
......
......@@ -9,4 +9,6 @@ from . import pago_discriminado
from . import cheque
from . import valor
from . import cta_cte
from . import ralaciones_talonarios
\ No newline at end of file
from . import ralaciones_talonarios
from . import conciliaciones
from . import conciliaciones_config
\ No newline at end of file
......@@ -158,7 +158,11 @@ class asw_comprobante(models.Model):
def CorrejirFacturaSinCAE(self):
if not self.env.user.has_group("tpv_correcciones.module_category_tpv_corrector_electronica_admin"):
raise Warning("No tenes permiso para correjir facturas")
if self.comp_talonario.tal_es_fe == False:
try:
electronica = self.comp_talonario.tal_es_fe
except:
electronica = self.comp_talonario.tal_ptv_id.ptv_type == 'electronica'
if electronica == False:
raise Warning("No es factura electronica, no puedo hacer nada")
if not self.afip_auth_code_due == False:
raise Warning("Esta factura ya fue Autorizada en AFIP, si no ves el CAE, por favor reporte a soporte")
......@@ -169,6 +173,15 @@ class asw_comprobante(models.Model):
self.comp_fecha = datetime.datetime.now().strftime('%Y-%m-%d')
self.validar() #revalido en este punto si falla se cancela todo el proceso
self.comp_estado = estado_actual #le dejo el estado original
def ForzarMarcarPagado(self):
if self.comp_estado in ["b","c"]:
raise Warning("El comprobante tiene que estar validado y no puede estar cancelado")
if self.comp_adeudado != 0.0:
raise Warning("El comprobante tiene que estar saldado para marcar como pagado")
self.comp_estado = "p"
# -*- 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")
\ No newline at end of file
# -*- 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_config'
_description = 'Configuracuion de conciliaciones de cuit'
facturas = fields.Many2many(
comodel_name='asw.talonario',
string='Duedas de cliete y resivos propios',
relation = 'tpv_conf_conciliaciones_facturas',
column1 = 'conciliacion_id',
column2 = 'factura_id'
)
resivos = fields.Many2many(
comodel_name='asw.talonario',
string='Resivos de cliente y facturas de proveedor',
relation = 'tpv_conf_conciliaciones_resivos',
column1 = 'conciliacion_id',
column2 = 'resivos_id'
)
\ No newline at end of file
No preview for this file type
......@@ -4,4 +4,6 @@ access_hgt_refcompra,access_hgt_refcompra,model_hgt_refcompra,asw_tpv.module_cat
access_hgt_mobil_gastos_config,access_hgt_mobil_gastos_config,model_hgt_mobil_gastos_config,,1,1,1,0
access_hgt_pago_multiple_avanzado,access_hgt_pago_multiple_avanzado,model_hgt_pago_multiple_avanzado,asw_tpv.module_category_asw_falange_usuario,1,1,1,0
access_hgt_relaciones_talonarios,access_hgt_relaciones_talonarios,model_hgt_relaciones_talonarios,,1,0,0,0
access_hgt_relaciones_talonarios_admin,access_hgt_relaciones_talonarios_admin,model_hgt_relaciones_talonarios,asw_tpv.module_category_asw_falange_administrador,1,1,1,1
\ No newline at end of file
access_hgt_relaciones_talonarios_admin,access_hgt_relaciones_talonarios_admin,model_hgt_relaciones_talonarios,asw_tpv.module_category_asw_falange_administrador,1,1,1,1
access_tpv_c_conciliacion,access_tpv_c_conciliacion,model_tpv_c_conciliacion,module_category_tpv_conciliador_registro,1,1,1,0
access_tpv_c_conciliacion_config,access_tpv_c_conciliacion_config,model_tpv_c_conciliacion_config,module_category_tpv_conciliador_accion,1,1,1,1
\ No newline at end of file
<odoo>
<data>
<!-- ####################### CORRECION AFIP #####################################-->
<record model="ir.module.category" id="module_category_tpv_corrector_tal">
<field name="name">Ajuste Talonario AFIP</field>
<field name="description">Ajuste Talonario</field>
......@@ -14,6 +15,20 @@
<field name="name">Puede correjir facturas sin cae</field>
<field name="category_id" eval="ref('module_category_tpv_corrector_tal')"/>
</record>
<!-- #########################CONCILIADOR GENERAL###############################-->
<record model="ir.module.category" id="module_category_tpv_conciliador_corr">
<field name="name">Gestion Concilacion (CUIT)</field>
<field name="description">Gestion Concilacion (CUIT)</field>
</record>
<record model="res.groups" id="module_category_tpv_conciliador_accion">
<field name="name">Puede hacer conciliaciones</field>
<field name="category_id" eval="ref('module_category_tpv_conciliador_corr')"/>
</record>
<record model="res.groups" id="module_category_tpv_conciliador_registro">
<field name="name">Puede ver registro de conciliacion</field>
<field name="category_id" eval="ref('module_category_tpv_conciliador_corr')"/>
</record>
</data>
</odoo>
\ No newline at end of file
<odoo>
<data>
<record id="tpv_correcciones_conciliacon_xcuit_form" model="ir.ui.view">
<field name="name">Conciliacion de Cuenta Corriente CUIT</field>
<field name="model">tpv_c.conciliacion</field>
<field name="arch" type="xml">
<form>
<header>
<button name="BuscarComprobantes" class="btn btn-success" string="Buscar Comprobante" type="object" attrs="{ 'invisible':[('estado', '!=', 'b')]}"/>
<button name="Reinicio" class="btn btn-success" string="Reinicio" type="object" attrs="{ 'invisible':[('estado', '!=', 'b')]}"/>
<field name="estado" widget="statusbar" readnoly="1"/>
</header>
<br></br>
<!--
<h4>Nota 1: Si el monto a pagar no llega a cubrir totalmente el saldo de las facturas elegidas, saldará completamente de la más vieja a la más nueva quedando la última con un saldo parcial.</h4>
<h4>Nota 2: Si el pago excede a las facturas elegidas, el excedente se destinará automáticamente a saldar (total o parcialmente) a la factura con saldos pendientes más antigua en existencia.</h4>
<h4>Nota 3: Si el pago excede a las facturas elegsssssssssssidas y no existen facturas con saldos pendientes, por fuera de las elegidas, el excedente quedará a favor de la empresa en la cuenta corriente y podrá ser imputado a la primer factura nueva de forma automática.</h4>
-->
<group col="2">
<group col="2" string="Notas" >
<field name="notas" nolabel="1"/>
</group>
<group col="2" string="Cliente o proveedor" >
<field name="cuit" nolabel="1" domain="[]"/>
</group>
</group>
<group string="Duedas de cliente y recibos propios" col="4">
<field name="facturas" nolabel="1" widget="one2many" >
<tree create="0" edit="0" delete="1">
<field name="display_name"/>
<field name="comp_talonario"/>
<field name="comp_adeudado_consigno"/>
<field name="comp_total_consigno"/>
<field name="comp_estado"/>
<button name="ForzarMarcarPagado" class="btn btn-danger" string="Marcar como pago" type="object" />
</tree>
</field>
</group>
<group string="Recibos de cliente y facturas de proveedor" col="4">
<field name="resivos" nolabel="1" widget="one2many" >
<tree create="0" edit="0" delete="1">
<field name="display_name"/>
<field name="comp_talonario"/>
<field name="comp_adeudado_consigno"/>
<field name="comp_total_consigno"/>
<field name="comp_estado"/>
</tree>
</field>
</group>
<!-- <h4>Nota 4: La diferencia si es negativa implica que se esta abonando más que lo adeudado en las facturas seleccionadas impactando un saldo a favor de la empresa en la cta cte del proveedor, de existir facturas pendientes no seleccionadas dicho saldo se aplicará a la más vieja</h4>-->
<footer>
<button name="Conciliar" class="btn btn-danger" string="Conciliar!!" type="object"
attrs="{ 'invisible':[('estado', '=', 'p')]}"
confirm="¿Estás seguro de que deseas continuar? (Operacion sin retorno)"/>
<button name="Ayuda" class="oe_right oe_button_box" icon='fa-exclamation-circle' string="Ayuda" type="object" />
</footer>
</form>
</field>
</record>
<record model="ir.ui.view" id="tpv_correcciones_conciliacon_xcuit_tree">
<field name="name">Conciliacion de Cuenta Corriente CUIT</field>
<field name="model">tpv_c.conciliacion</field>
<field name="arch" type="xml">
<tree>
<field name="cuit"/>
<field name="name"/>
<field name="fecha"/>
<field name="estado"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="tpv_correcciones_conciliacon_xcuit_accion">
<field name="name">Conciliacion de Cuenta Corriente CUIT</field>
<field name="res_model">tpv_c.conciliacion</field>
<field name="view_mode">tree,form</field>
</record>
<!-- accion con reglas de acceso-->
<!--<act_window id="hgt_pago_masivo_avanzado_wizzard_action" name="Pago masivo Avanzado" src_model="asw.comprobante"
res_model="hgt.pago_multiple" view_mode="form" target="new" multi="True"/>-->
</data>
</odoo>
\ No newline at end of file
<odoo>
<data>
<record id="tpv_conf_conciliacon_xcuit_form" model="ir.ui.view">
<field name="name">Config de Cuenta Corriente CUIT manual</field>
<field name="model">tpv_c.conciliacion_config</field>
<field name="arch" type="xml">
<form>
<group string="Duedas de cliente y recibos propios" col="4">
<field name="facturas" nolabel="1" />
</group>
<group string="Recibos de cliente y facturas de proveedor" col="4">
<field name="resivos" nolabel="1"/>
</group>
</form>
</field>
</record>
<record model="ir.ui.view" id="tpv_conf_conciliacon_xcuit_tree">
<field name="name">Config de Cuenta Corriente CUIT manual</field>
<field name="model">tpv_c.conciliacion_config</field>
<field name="arch" type="xml">
<tree>
<field name="facturas"/>
<field name="resivos"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="tpv_conf_conciliacon_xcuit_accion">
<field name="name">Config de Cuenta Corriente CUIT manual</field>
<field name="res_model">tpv_c.conciliacion_config</field>
<field name="view_mode">tree,form</field>
</record>
</data>
</odoo>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data noupdate="0">
<!-- Menues Grupo en TPV-->
<menuitem name="Conciliaciones"
sequence="20"
id="tpv_correcciones_consiliador"
parent="asw_tpv.asw_tpv_ventas"
/>
<menuitem name="Configuracion"
sequence="90"
id="tpv_correcciones_consiliador_conf"
parent="tpv_correcciones_consiliador"
action="tpv_conf_conciliacon_xcuit_accion"
/>
<menuitem name="Registro conciliacion manual"
sequence="10"
id="tpv_correcciones_consiliador_registro"
parent="tpv_correcciones_consiliador"
action="tpv_correcciones_conciliacon_xcuit_accion"
/>
</data>
</odoo>
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!