Codigo SAM

Tecnicos ››
Parent Previous Next

CODIGO SAM (formato utilizado por el Sistema Informático UNIRE)

Para todos los tributos utilizamos el mismo código SAM, porque identificamos el tipo de tributo por los números de recibos.

OBSERVACIONES:

Ejemplo

CAMPO 5 - Cuenta de Depósito

COMUNA DE H

“0001” = SE ACREDITA EN  CTA XXX/XX CBU 99999999999999999999

MUNICIPALIDAD DE LA

“0001”= SE ACREDITA EN CTA YYYY/YY    CBU 888888888888888888888888

“0002”= SE ACREDITA EL 82% DEL IMPORTE IMPRESO EN LA CTA YYYY/YY   CBU 9999999999999999999999

               SE ACREDITA EL 18% DEL IMPORTE IMPRESO EN LA CTA ZZZZ/ZZ   CBU 7777777777777777777777

“0003” = …………..


Explicación Técnica Código SAM

Ejemplo de 1 recibo código SAM

Completo

000081010056042xxxx0420400000140450098981114065009950179

000 // Sin Uso  ( 3 Byte )

0810 // código ente ( 4 Byte )

1 // Sin Uso ( 1 Byte )

0056042xxxx042040000 // # recibo 7 primeros bytes + 9 últimos- ( xxxx cuenta de depósito ) ( 20 Byte )

0 // Sin Uso ( 1 Byte )

14 // año 1er Vto. ( 2 Byte )

045 // días desde el primer día del año- 1er Vto. ( 3 Byte )

009898 // importe entero 1er Vto. ( 6 Byte )

11 // decimales 1er Vto. ( 2 Byte )

14 // año 2do Vto. ( 2 Byte )

065 // días desde el primero día del año- 2do Vto. ( 3 Byte )

009950 // importe 2do Vto. ( 6 bytes )

17 // decimales  2Do Vto.( 2 Byte )

9 // Digito Verificador (1 Byte)

//Parte de la función que arma el código sam con datos de un registro.

cSam := '000'+;

  '0810' +;

  '1'+;    

  '0'+left( Clave_recibo , 6 ) + Codigo_deposito + Right( Clave_Recibo , 6 ) + '000' + ;

  '0'+;

  right( dtoc(  fecha_1_vto  ) , 2 ) +;

  right( '000'+AllTrim( STR(  fecha_1_vto - CtoD( '01/01/'+right( dtoc( fecha_1_vto ) , 2 ) ) + 1 ) ) , 3 ) +;

  right( '000000' + AllTrim( substr( Importe1 , 1 , at( '.' , Importe1 ) - 1 ) ) , 6 ) +;

  right( substr( Importe1 , at( '.' , Importe1) + 1 , 2 )  , 2 ) +;

  right( dtoc(  fecha_2_vto ) , 2 ) +;

  right( '000'+AllTrim( STR(  fecha_2_vto - CtoD( '01/01/'+right( dtoc(  fecha_2_vto  ) , 2 ) ) + 1 ) ) , 3 ) +;

  right( '000000' + AllTrim( substr( Importe2 , 1 , at( '.' , Importe2 ) - 1 ) ) , 6 ) +;

  right( substr( Importe2 , at( '.' , Importe2 ) + 1 , 2 )  , 2 )

//Parte del código que calcula el dígito verificador

nSerie := 3

nTotal := val ( left( cSam , 1 )   )  * 1

for nVlrAux = 2 TO len(  cSam  )

   nTotal += val ( substr(  cSam  ,  nVlrAux  ,  1  )  )  *  nSerie

   nSerie  :=  iif( nSerie  +  2  >  9  ,  3  ,  nSerie  + 2 )

next

cSam += right( alltrim( str( Int( nTotal / 2 ) ) ) , 1 )

//  Función que cambia determinados caracteres

cSam := Bar25(cSam )

// El código obtenido en cSam es el que se imprime en el recibo con un determinado Font.  "IntHrP24DmTt". Este Font debe estar instalado en la PC que imprime el recibo.

// Detalle de la funcion que cambia determinados caracteres.

Function Bar25 ( T )

*============

LOCAL a := Chr(33) , x , V , C

For x = 1 To Len( T ) Step 2

 v := Val( substr( T , x , 2 ) )

 do case

  Case v >= 0 .and. v <= 91

    c := Chr(v + 35)

  Case v=92

    c := Chr(196)

  Case v=93

    c := Chr(197)

  Case v=94

    c := Chr(199)

  Case v=95

    c := Chr(201)

  Case v=96

    c := Chr(209)

  Case v=97

    c := Chr(214)

  Case v=98

   c := Chr(220)

  Case v=99

   c := Chr(225)

 Endcase

 a := a + c

Next

a := a + Chr(34)

return a

Created with the Personal Edition of HelpNDoc: Free CHM Help documentation generator