- 
          
 - 
                Notifications
    
You must be signed in to change notification settings  - Fork 567
 
[16.0][FIX] l10n_es_verifactu_oca: registro de facturas rechazadas: alta por rechazo #4429
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: 16.0
Are you sure you want to change the base?
[16.0][FIX] l10n_es_verifactu_oca: registro de facturas rechazadas: alta por rechazo #4429
Conversation
| 
           Buenas, Almu, al mensaje de commit le falta el nombre del módulo. Parece que en FL no se pone ese nombre, pero la convención de OCA sí debe llevarlo: https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#commit-message Luego, revisa pre-commit.  | 
    
1f90f56    to
    00279de      
    Compare
  
    b27c5f6    to
    5dafe3d      
    Compare
  
    There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Revision funcional correcta, aunque no puedo probar que AEAT acepta el envio si se envia con "Subsanacion": "S", "RechazoPrevio": "X cuando esta en estado "Rechazada"
| 
           This PR has the   | 
    
| 
           faltaba hacer squash de commits, esto ya se podría mergear @pedrobaeza ?  | 
    
5dafe3d    to
    faf3731      
    Compare
  
    | copy=False, | ||
| ) | ||
| aeat_state = fields.Selection( | ||
| selection_add=[("rejected", "Rejected")], ondelete={"rejected": "set default"} | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Por qué cambiar todo y poner un nuevo estado en lugar de utilizar el de incorrecto? Es mejor solo cambiar la etiqueta si es que queremos ser precisos, pero no el valor interno y que no tengas que modificar tantos archivos.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@pedrobaeza  lo puse porque los aeat_state que hay son estos:
| AEAT_STATES = [ | 
AEAT_STATES = [
("not_sent", "Not sent"),
("sent", "Sent"),
("sent_w_errors", "Accepted with errors"),
]
y rechazada o incorrecta no encajaría con ninguno de ellos,no? cuál debería usar?
| 
           @almumu hazme ping cuando quieras que revise, porque si no, no sé si está terminado o no. Te he puesto un comentario para que no haya tantos cambios por un lado, pero por otro, para que al listar los valores del campo   | 
    
| 
           Pero entonces las referencias en código a   | 
    
          
 @pedrobaeza el campo send_state es propio del módulo de verifactu y está en los modelos verifactu_invoice_entry y del verifactu_invoice_entry_response_line que son los envíos y las respuestas. En el account_move se utiliza el del aeat.mixin que es el campo aeat_send_state (también por tema de que se pueda controlar que una factura se ha enviado a la AEAT sea desde el sii o sea desde verifactu independientemente de que se active una cosa u otra), pero se quedaba cojo porque no hay un "incorrecto", lo que puedo hacer es llamarle incorrect en vez de rejected para que coincida con los de los entry.  | 
    
| 
           Uf, veo que la estructura se complica y es muy fácil que se "desincronicen" los estados de las líneas y del documento padre. Según comentas, fuera de añadir un estado o no, ¿el estado del   | 
    
          
 sí, igual podemos hacerlo así, añadiendo un nuevo campo en los account.move y pos.order (en verifactu.mixin) que sea calculado y trabajar sobre ese, pero actualizando también el aeat_state para que si luego se pasan al sii no se ponga a enviar facturas ya enviadas desde verifactu, o viceversa .  | 
    
| 
           No haría falta un nuevo campo: el   | 
    
          
 pero si pasa a ser calculado, habría que modificar el módulo del sii para que lo calcule también  | 
    
| 
           No, porque lo pasas a calculado en   | 
    
          
 @pedrobaeza no he podido ponerme con esto aún para comprobar si realmente pasaría esto, pero estoy pensando si no dará problemas que lo cambiamos por un compute el campo aeat_state en el caso de que se tengan instalados los 2 módulos, el del sii y el de verifactu, porque tienen multicompañía y en una están en el sii y en otra en verifactu. Al instalar verifactu el campo aeat_state pasaría a ser calculado, pero para el sii dejaría de funcionar bien supongo porque nunca se calcularía, porque ese campo es del aeat.mixin y tanto el sii.mixin como verifactu.mixin heredan de él y luego el account.move al tener los 2 módulos heredaría de ambas. Creo que sería mejor dejar ese campo como está sin ser compute, simplemente se podría añadir un valor más que sea "incorrecto" en el aeat.mixin y luego en verifactu en caso de rechazo por ser incorrecto ponerle ese estado.  | 
    
| 
           Bueno, lo que habría que hacer en el compute del verifactu.mixin es no hacer nada si en la compañía asociada no se tiene habilitado. De esa forma, para SII se asigna a mano (sería un computed writable el campo), y para VERI*FACTU lo calcula.  | 
    
99ed901    to
    3d93b2b      
    Compare
  
    0ef21e9    to
    326f414      
    Compare
  
    | 
           cuando puedas le echas un vistazo @pedrobaeza ?  | 
    
…r rechazo - arreglado el envío de facturas incorrectas y por tanto rechazadas, se deben subsanar igual que se hace con las que están aceptadas con errores, pulsando manualmente el botón de volver a enviar desde la factura una vez arreglado el motivo del rechazo por el usuario, y se envían como alta por rechazo con los valores Subsanacion="S" y RechazoPrevio="X". - añadido nuevo estado incorrect en aeat_state del l10n_es_aeat. - unificado estados de envío de verifactu para que sean los mismos que los de aeat_state. - actualizado el readme, quitado cosas del roadmap que ya están. - mejorado alguna vista - añadido contribuidor que faltaba
04feeba    to
    58af578      
    Compare
  
    | 
           @almumu Por mi parte he estado realizando algunas pruebas y funciona correctamente tanto la gestión de los estados como la funcionalidad de reenvío a verifactu. En cuanto a los estados veo bien igualar los valores del campo aeat_state y del campo send_state, para así evitar errores/confusiones. No obstante, habría que analizar/corregir los filtros de la vista tree de las facturas, ya que tienen estados no disponibles como son 'sent_modified' y 'cancelled_modified'. Siendo solo ventas y no permitiendo modificaciones sobre una factura ya confirmada/enviada entiendo que estos estados no tendrían sentido. No obstante, desconozco como afectará a otros casos como el del SII, donde si que existen compras (si no recuerdo mal se permiten modificaciones) y existen los estados mencionados en el código. En el código de account.move entiendo que hay una errata a la hora de rellenar el "RechazoPrevio", ya que está puesta una "X" (entiendo que tendría que ser una "S"). Las pruebas las he realizado manteniendo la X y hacienda no ha devuelto error, el envío ha sido correcto. Mientras estaba haciendo las pruebas y parando el código he tardado más de los 240 segundos fijados por hacienda para realizar el envío por lo que la factura se ha marcado como "Enviada e Incorrecta". Al volverla a enviar a ocurrido lo mismo y esta vez se ha marcado como enviada con errores (falta la traducción por cierto). ¿Sería conveniente capturar este error específico y marcar las facturas como correctas para evitar que salgan como erróneas? Aunque se trata de un error como tal no hay nada que subsanar. Es algo que puede pasar si falla la conexión del odoo en cuestión o el sistema verifactu está caido.  | 
    
| 
           buenos días @IvanHRN El valor X en las altas por rechazo, es correcto, así lo indica la documentación de verifactu Los estados que comentas de sent_modified o cancelled_modified, es cierto, en verifactu no deberían estar esos estados en los filtros de la vista search, porque son estados que sólo existen en el sii. Por otro lado, respecto al envío con retardo: El cron, que se ejecuta cada minuto, ya tiene en cuenta si ha habido este retardo y las que han excedido este tiempo las envía directamente con el incidencia="S" para que no devuelva el error 2004, por lo que en pocos casos el error va a ser el 2004. 
 Ejecutándose el cron de envío cada minuto sería raro que se superen los 240 segundos salvo que pares el cron o que realmente haya habido un problema técnico. Estos son los códigos de error que requieren subsanación, como verás el 2004 está en esa lista. Es por ello que no creo que haya que cambiar nada respecto a esto. Por último, te agradezco mucho que estés probando esto a fondo, porque queda poco tiempo y hay que detectar cualquier cosa que haya que solucionar.  | 
    
| 
           buenas @almumu Si en la documentación pone que el RechazoPrevio tiene que ser una X pues perfecto. En cualquier caso, hacienda no me devolvió error al enviarlo. En cuanto a los filtros de la vista de facturas lo que hemos comentado, entiendo que habría que quitar el filtro verifactu_pending (ya que no existen los estados) y modificar el verifactu_cancelled (sobra un estado). En relación al error 2004, ¿cuál sería el procedimiento recomendado desde la perspectiva del cliente? Entiendo que la solución pasaría por reenviar la factura para actualizar el campo FechaHoraHusoGenRegistro. Por último, en cuanto a las pruebas, no hay problema. Estamos todos en la misma situación y cualquier aportación y colaboración es bienvenida.  | 
    
| 
           Dado que el cliente es el responsable de ir supervisando las facturas que den error y subsanándolas según el error que le haya devuelto AEAT, el cliente debe ir a la factura en cuestión que tenga el error y darle al botón de reenviar a verifactu, ya está hecho el proceso de que se envíe la subsanación pulsando ese botón. En el raro caso de que diera el error 2004 simplemente le daría al botón y ya está, porque no tiene que cambiar nada en la factura, pero hay que hacerlo así porque si aeat ya ha devuelto el aceptado con errores, es que esa factura ya existe en AEAT y por tanto hay que subsanarla, y si hay que subsanarla, se tiene que volver a encadenar la factura cuando se quiere volver a enviar con el error subsanado. Aquí está todo el documento explicativo  | 
    
| 
           Perfecto, queda todo entendido y aclarado con respecto al error y su resolución. He seguido realizando pruebas y me he encontrado con que al hacer una venta extracomunitaria hacienda devuelve el siguiente error: 1286 | Si el impuesto es IVA(01), IGIC(03) o vacio, si ClaveRegimen es 02 solo se podrá informar OperacionExenta. Entiendo que esto quedaría resuelto con el PR #4499 , donde veo que se cambia el mapeo del "IVA 0% Exportaciones" a no sujeto (además de otros cambios). Buscando en la documentación sobre el error anterior he llegado a los posibles valores del campo RechazoPrevio en el proceso de alta (L17), donde se puede ver que la X es cuando no se ha registrado aún en la AEAT.  
No he encontrado más cosas con respecto a la operativa. He probado a realizar ventas y hacer alguna rectificativa con varias posiciones fiscales y salvo la extracomunitaria no he tenido ningún problema.  | 
    
| 
           @IvanHRN efectivamente, hay cosas que no son implícitamente relacionadas con este PR, y el caso que puedas encontrarte depende de otros prs , como el caso de las exportaciones que comentas. @pedrobaeza cómo lo ves para fusionar esto?  | 
    



Uh oh!
There was an error while loading. Please reload this page.