Todos somos junior, por más experiencia que tengas, siempre habrá retos.

Buscar este blog

10 feb 2021

Validar NIF informado en cliente CPD (One time customer)

Las nuevas validaciones del SII requieren que en el tipo de facturas F1, R1... el NIF o CIF del cliente esté informado siempre.

Como sabéis los clientes se definen por grupos, Nacional, Internacional, Grupo, CPD (One time customer) 

Éstos últimos se caracterízan por ser un dato maestro genérico el cual se usa en la contabilización del documento, cuando se introducen los datos en el documento,  al incluir el número del CPD, aparece una primera pantalla para incluir sus datos, nombre, dirección, NIF... 

Podemos hacer que el CPD genérico tenga algunos campos obligatorios, opcionales o no visibles por definición de campos del grupo de clientes CPD, pero éstas definiciones no aplican al dato que introducimos en el documento contable. 

Es decir, si por estructura de pantalla informar el NIF como obligatorio, lo será en el dato maestro genérico, pero no en el dato introducido en el documento.

Para esto generamos una validación financiera a nivel posición. Tcode OB28

La validación se realiza a nivel posición. si tus compañías comienzan por el nombre ES* es01, es02, es03... O RR01, RR02... puedes poner asterisco, si no, tendrás que poner un (NA01 OR CE02 OR TR00) y a continuación el código.

Creas un nuevo paso con los siguientes datos.

En prerrequisito

 BKPF-BUKRS LIKE 'ES*' AND
 BSEG-KOART = 'D' AND
 BSEG-XCPDD = 'X'

check incluiremos una exit.

Código de la exit (programa ZRGGBR000) la exit se debe definir en get_exit_titles y 

FORM zu08 USING b_result.        " SII Spain - Check tax field


  FIELD-SYMBOLS : <fs_bsec> TYPE bsec.

  ASSIGN ('(SAPMF05A)BSEC') TO <fs_bsec>.

  IF NOT <fs_bsec> IS ASSIGNED.

    ASSIGN ('(SAPLFACI)XBSEC') TO <fs_bsec>.

  ENDIF.


  b_result = b_true.


  IF <fs_bsec> IS ASSIGNED.


    IF bseg-stceg IS INITIAL

      AND <fs_bsec>-stcd1 IS INITIAL

      AND <fs_bsec>-stcd2 IS INITIAL

      AND <fs_bsec>-stcd3 IS INITIAL

      AND <fs_bsec>-stcd4 IS INITIAL

      AND <fs_bsec>-stcd5 IS INITIAL.


* If all value are empty ==> error

* At least one value must be filled


      b_result = b_false.  "==> error


    ENDIF.

  ENDIF.


En mensaje, incluiremos un E error o W warning, usaremos un código de mensaje existente o crearemos uno nuevo.

Ejemplo: INFORMA EL NIF DE UNA VEZ HOMBRE YAAA! (posible dramatización).


Ya tienes el NIF de tu CPD validado para que al menos uno de los campos NIF estén informados.



Espero haberte ayudado!

No hay comentarios:

Publicar un comentario