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