Openbravo Issue Tracking System - Localization Pack: Spain
View Issue Details
0042962Localization Pack: SpainSIIpublic2020-01-22 14:062020-06-22 14:19
qualitic 
Mery Anelo 
highmajorN/A
closedfixed 
30Openbravo Appliance 14.04
 
 
0042962: Error en la selección de facturas a enviar por proceso SII
Analizando los datos de la aplicación del cliente, nos hemos percatado de que algunas de las facturas seleccionadas por el proceso de envío de facturas al SII no deberían serlo.
Específicamente en los siguientes casos:

    - Dada una cadencia de envió de facturas de dos días, si se ejecuta el proceso de envió de facturas, las facturas generadas y completadas hoy serán seleccionadas.
    - Dada una fecha de acogida al SII del 01-01-2019, si se ejecuta el proceso de envío de facturas, este seleccionará facturas con fecha anterior a la fecha de acogida al SII.

La consulta de selección presente en la clase SendInvoicesGroupsToAEAT.java es la siguiente:

    select i.id, i.documentNo, i.salesTransaction
            from Invoice i
            where i.aeatsiiIssent = false
            and i.organization.id = (:orgId)
            and i.processed = true
            and i.aeatsiiErrorRegistral = false
            and (
                    (i.salesTransaction = true
                     and ((i.invoiceDate <= :todayMinusCadenceSales
                          and i.invoiceDate >= :sinceSii)
                          or (month(i.aeatsiiFechaOperacion) - month(DATE(:today)) = 0
                              and (i.invoiceDate < :today
                                    or (i.invoiceDate <= :dateLimitSII
                                        and i.invoiceDate > :salesLimitCadence
                                        and DATE(i.invoiceDate) = DATE(:today))
                                  )
                         )
                         or (month(i.aeatsiiFechaOperacion) <> month(i.invoiceDate)
                           and DATE(i.invoiceDate) = DATE(:today))
                    )
                  )
                 or (i.salesTransaction = false
                        and i.posted = true
                        and ((i.aeatsiiFechaRegCont <= :todayMinusCadencePurchase
                        and i.aeatsiiFechaRegCont >= :sinceSii)
                            or (month(i.aeatsiiFechaOperacion) - month(DATE(:today)) = 0
                                and (i.aeatsiiFechaRegCont < :today
                                      or (i.aeatsiiFechaRegCont <= :dateLimitSII
                                          and i.aeatsiiFechaRegCont > :purchaseLimitCadence
                                          and DATE(i.aeatsiiFechaRegCont) = DATE(:today))
                                    )
                                )
                            )
                            or (month(i.aeatsiiFechaRegCont) <> month(i.aeatsiiFechaOperacion)
                                and DATE(i.aeatsiiFechaRegCont) = DATE(:today))
                       )
                   )

Tras analizar la consulta, hemos comprobado como existe un problema con los operadores OR y AND, que posibilita la selección de facturas que dan lugar a los dos problemas mencionados arriba.
Concretamente, creemos que el siguiente trozo de código es el causante del problema (para facturas de venta en nuestro caso):

                        (i.invoiceDate <= :todayMinusCadenceSales
                          and i.invoiceDate >= :sinceSii)
                          or (month(i.aeatsiiFechaOperacion) - month(DATE(:today)) = 0
                              and (i.invoiceDate < :today
                                    or (i.invoiceDate <= :dateLimitSII
                                        and i.invoiceDate > :salesLimitCadence
                                        and DATE(i.invoiceDate) = DATE(:today))
                                  )
                         )
                         or (month(i.aeatsiiFechaOperacion) <> month(i.invoiceDate)
                           and DATE(i.invoiceDate) = DATE(:today))


Dicho trozo de código, queda dividido por dos OR en tres sentencias distintas.
La sentencia central, la cual se detalla a continuación, posibilita la selección de facturas que no deberían ser seleccionadas dada la cadencia de envío o la fecha de acogida al SII.

                      (month(i.aeatsiiFechaOperacion) - month(DATE(:today)) = 0
                          and (i.invoiceDate < :today
                                or (i.invoiceDate <= :dateLimitSII
                                    and i.invoiceDate > :salesLimitCadence
                                    and DATE(i.invoiceDate) = DATE(:today))
                              )
                     )
Alta en el SII
Tras analizar la consulta, hemos comprobado como existe un problema con los operadores OR y AND, que posibilita la selección de facturas que dan lugar a los dos problemas mencionados arriba.
Concretamente, creemos que el siguiente trozo de código es el causante del problema (para facturas de venta en nuestro caso):

                        (i.invoiceDate <= :todayMinusCadenceSales
                          and i.invoiceDate >= :sinceSii)
                          or (month(i.aeatsiiFechaOperacion) - month(DATE(:today)) = 0
                              and (i.invoiceDate < :today
                                    or (i.invoiceDate <= :dateLimitSII
                                        and i.invoiceDate > :salesLimitCadence
                                        and DATE(i.invoiceDate) = DATE(:today))
                                  )
                         )
                         or (month(i.aeatsiiFechaOperacion) <> month(i.invoiceDate)
                           and DATE(i.invoiceDate) = DATE(:today))


Dicho trozo de código, queda dividido por dos OR en tres sentencias distintas.
La sentencia central, la cual se detalla a continuación, posibilita la selección de facturas que no deberían ser seleccionadas dada la cadencia de envío o la fecha de acogida al SII.

                      (month(i.aeatsiiFechaOperacion) - month(DATE(:today)) = 0
                          and (i.invoiceDate < :today
                                or (i.invoiceDate <= :dateLimitSII
                                    and i.invoiceDate > :salesLimitCadence
                                    and DATE(i.invoiceDate) = DATE(:today))
                              )
                     )
No tags attached.
has duplicate defect 0044272 closed Mery Anelo No se respeta días de cadencia 
Issue History
2020-01-22 14:06qualiticNew Issue
2020-01-22 14:06qualiticAssigned To => Jorge Bravo
2020-01-22 14:07Jorge BravoAssigned ToJorge Bravo => Mery Anelo
2020-05-27 00:54Mery AneloStatusnew => scheduled
2020-05-27 00:54Mery AneloNote Added: 0120310
2020-06-03 15:27PracticsIssue Monitored: Practics
2020-06-03 23:24Mery AneloRelationship addedhas duplicate 0044272
2020-06-09 20:26hgbotCheckin
2020-06-09 20:26hgbotNote Added: 0120763
2020-06-09 20:26hgbotStatusscheduled => resolved
2020-06-09 20:26hgbotResolutionopen => fixed
2020-06-09 20:26hgbotFixed in SCM revision => http://code.openbravo.com/erp/pmods/org.openbravo.module.sii/rev/1f76161df5b8676716aecf78258ef3282c5237b2 [^]
2020-06-09 20:26hgbotCheckin
2020-06-09 20:26hgbotNote Added: 0120764
2020-06-09 20:26hgbotFixed in SCM revisionhttp://code.openbravo.com/erp/pmods/org.openbravo.module.sii/rev/1f76161df5b8676716aecf78258ef3282c5237b2 [^] => http://code.openbravo.com/erp/pmods/org.openbravo.module.sii/rev/5dbfbc8f5f01beba8a14f985b4afeaa12b6508a1 [^]
2020-06-09 20:26hgbotCheckin
2020-06-09 20:26hgbotNote Added: 0120765
2020-06-09 20:26hgbotFixed in SCM revisionhttp://code.openbravo.com/erp/pmods/org.openbravo.module.sii/rev/5dbfbc8f5f01beba8a14f985b4afeaa12b6508a1 [^] => http://code.openbravo.com/erp/pmods/org.openbravo.module.sii/rev/5ab0cb42e0b3976e530fc62a8d2c44d61e0e536a [^]
2020-06-22 14:19Mery AneloStatusresolved => closed

Notes
(0120310)
Mery Anelo   
2020-05-27 00:54   
Test plan:
- Log as Group Admin Role.
- Config SII, fields "Sales Invoice SII sending Cadence" and "Purchase Invoice SII sending Cadence" with two or more days.
- Create new Invoices.
- Make sure that the date set as today (On Purchase Invoices set field "Fecha registro contable". On Sales Invoices set field "Fecha de la factura").
- Complete the other data and add lines.
- Complete the invoice.
- Program the automatic process "Proceso alta en SII de facturas agrupadas".
- Verify that the process does not send the invoices with today's date.
(0120763)
hgbot   
2020-06-09 20:26   
Repository: erp/pmods/org.openbravo.module.sii
Changeset: 1f76161df5b8676716aecf78258ef3282c5237b2
Author: Mery Anelo <mery.anelo <at> smfconsulting.es>
Date: Tue Jun 09 14:47:18 2020 -0300
URL: http://code.openbravo.com/erp/pmods/org.openbravo.module.sii/rev/1f76161df5b8676716aecf78258ef3282c5237b2 [^]

Fixed bug 42962: HQL format

---
M src/org/openbravo/module/sii/process/background/SendInvoicesGroupsToAEAT.java
---
(0120764)
hgbot   
2020-06-09 20:26   
Repository: erp/pmods/org.openbravo.module.sii
Changeset: 5dbfbc8f5f01beba8a14f985b4afeaa12b6508a1
Author: Mery Anelo <mery.anelo <at> smfconsulting.es>
Date: Tue Jun 09 14:47:42 2020 -0300
URL: http://code.openbravo.com/erp/pmods/org.openbravo.module.sii/rev/5dbfbc8f5f01beba8a14f985b4afeaa12b6508a1 [^]

Fixed bug 42962: Automatic process "Alta SII", considers the cadence.

Regrouping of invoice registration restrictions for the process "Alta SII".

---
M src/org/openbravo/module/sii/process/background/SendInvoicesGroupsToAEAT.java
---
(0120765)
hgbot   
2020-06-09 20:26   
Repository: erp/pmods/org.openbravo.module.sii
Changeset: 5ab0cb42e0b3976e530fc62a8d2c44d61e0e536a
Author: Mery Anelo <mery.anelo <at> smfconsulting.es>
Date: Tue Jun 09 14:48:06 2020 -0300
URL: http://code.openbravo.com/erp/pmods/org.openbravo.module.sii/rev/5ab0cb42e0b3976e530fc62a8d2c44d61e0e536a [^]

Fixed bug 42962: HQL format

---
M src/org/openbravo/module/sii/process/background/SendInvoicesGroupsToAEAT.java
---