En Facturación Electrónica de Paraguay, a fin de mantener una única identificación para cada documento electrónico, la SET implementó el código de control o CDC.
El completo glosario, lo pueden ubicar en el siguiente link a partir de la página 214:
https://ekuatia.set.gov.py/portal/rest/jcr/repository/collaboration/sites/ekuatia/documents/documentacion/documentacion-tecnica/Manual%20T%C3%A9cnico%20Versi%C3%B3n%20150.pdf?version=2
Básicamente el CDC es la concatenación de 11 campos:
Código ABAP para la obtención del Dígito Verificador del CDC en Módulo 11:
DATA:
lv_cdc(43) TYPE c, «Primeros diez campos
lv_dv_cdc TYPE c, «Dígito Verificador
lv_cdc_final(44) TYPE c. «CDC completo (los once campos concatenados)
* 1ro – Hay que concatenar los primeros 10 campos del CDC en una variable de 43 caracteres.
CONCATENATE campo1 campo2 campo3 campo4 campo5 campo6 campo7 campo8 campo9 campo10 into lv_cdc.
* 2do – Pasar esa variable de 43 caracteres al siguiente PERFORM que devuelve como resultado el Dígito Verificador en Módulo 11
PERFORM calcula_dv_del_cdc USING lv_cdc
CHANGING lv_dv_cdc.
*&———————————————————————*
*& Form CALCULA_DV_DEL_CDC
*&———————————————————————*
FORM calcula_dv_del_cdc USING fw_cdc TYPE char43
CHANGING fw_dv_cdc TYPE char1.
DATA: lv_cdc TYPE char43,
lv_veces TYPE i,
lv_factor TYPE i,
lv_suma TYPE i,
lv_pos TYPE i.
lv_cdc = fw_cdc.
CONDENSE lv_cdc NO-GAPS.
lv_veces = strlen( lv_cdc ).
lv_factor = 2.
CLEAR lv_suma.
lv_pos = lv_veces – 1.
DO lv_veces TIMES.
lv_suma = lv_suma + ( lv_cdc+lv_pos(1) * lv_factor ).
lv_pos = lv_pos – 1.
lv_factor = lv_factor + 1.
IF lv_factor > 11.
lv_factor = 2.
ENDIF.
ENDDO.
lv_factor = lv_suma MOD 11.
IF lv_factor > 1.
lv_factor = 11 – lv_factor.
fw_dv_cdc = lv_factor.
ELSE.
fw_dv_cdc = ‘0’.
ENDIF.
ENDFORM. » CALCULA_DV_DEL_CDC
* 3ro – Finalmente se arma el CDC completo (los once campos concatenados):
CONCATENATE lv_cdc lv_dv_cdc INTO lv_cdc_final.
Comentarios Recientes: