Sabeis si existe en España un sistema automatizado para poder enviar una transferencia bancaria desde una aplicación ?
gracias
Antonio Linares wrote:Sabeis si existe en España un sistema automatizado para poder enviar una transferencia bancaria desde una aplicación ?
gracias
Function Generarecibo(cIni,cFin,cDir)
local cCbs
local clinea,cFecha,cVarios,cPresenta,cCliente,cnombre
local cDc,cEnt,cSuc,cCC,cComp,nLiquido,nImporte,nrecibo
local strfacturas := ""
local G:= "Especificación de numeros de factura : "
local recibo,linrec,i
local areg:={}
local aCampos:={}
local aOrden
DEFAULT cDir := "c:\"
cCbs:= cDir+"cbs58.txt"
// borra el csb58 anterior si existiera
if file(cCbs)
Ferase(cCbs)
endif
// crea el archivo nuevo
IF (nHandle := FCREATE(cCbs,0)) == -1
pausa("Archivo cbs58 no creado "+str( FERROR()) )
return .f.
endif
// abre la dbf donde estan los recibos generados para coger datos y le pone scopes
// para el recibo inicial y final a emitir .
recibo:=Abrimos("cab_rec")
(recibo)->(ordsetfocus(1))
(recibo)->(ordscope(0,cIni))
(recibo)->(ordscope(1,cfin))
(recibo)->(dbgotop())
// abre las lineas del recibo para coger los datos de las distintas facturas
//que componen el recibo ( pueden ser una o varias)
linrec:=Abrimos("lin_rec")
(linrec)->(ordsetfocus(1))
(linrec)->(dbgotop())
//---------------------- linea1 llamada cabecera presentador ---------------------------
cLinea:="5170xxxxxxxxx" //x->nif emisor el 51 nos dice que se emite en euros. 70 codigo de dato ->indica que es cabecera
cPresenta :"555" // codigo presentador -> no recuerdo pero creo que lo da el banco .
cLinea :=cLinea+cPresenta
cFecha :=ponfecha() // funcion-> strzero(day(xFecha),2)+strzero(month(xFecha),2)+right(str(year(xFecha)),2)
cLinea :=cLinea+cFecha+" "+"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" // 40 posiciones para el nombre de emisor
cVarios := Space(20) + "xxxx" + "xxxx" // x->codigo de banco y oficina del emisor
clinea := cLinea +cVarios+space(66)+chr(13)+chr(10)
FWRITE(nHandle,clinea)
//------------ linea 2 llamada cabecera ordenante ----------------------
cLinea :="5370xxxxxxxxx"+cPresenta+cFecha+" " // 53 para el euro 70 codigo de dato +nif cliente
cLinea:=cLinea+"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" //40 posiciones del nombre del emisor
cVarios := "xxxx"+"xxxx"+"xx"+"xxxxxxxxxx" // cuenta de ingreso emisor
clinea := cLinea +cVarios+Space(8)+"06"+Space(52)+"330240901"+space(3)+chr(13)+chr(10)
FWRITE(nHandle,clinea)
//--------------- lineas _registro individual ______________________
i:= 0
nImporte:= 0
do while !(recibo)->(eof())
if (recibo)->status_e != "S"
areg:={}
cLinea:= "56"+"70"+"xxxxxxxxx"+cPresenta+space(6) // 56 para euro 70 codigo de dato x->nif del emisor
// codigo de cliente+nombre 46 posiciones
cCliente:=(recibo)->cliente
cNombre:=(recibo)->nombre
cLinea:=cLinea+ccliente+cNombre
cDc:= (recibo)->dc
if Empty(cDc)
pausa( "el Dc de "+cCliente+ " no existe se colocarán ** en su lugar")
cDC := "**"
endif
cEnt:=(recibo)->ent
cSuc:=(recibo)->suc
cCC:=(recibo)->banco_cc
cComp:=CalculaCCC(cEnt,cSuc,cCC)
if cDC != cComp
pausa("ERROR EN LA CUENTA DEL CLIENTE "+cCliente)
endif
cVarios = cEnt + cSuc + cDC + ajuscc(cCC)
nLiquido:= (recibo)->liquido
cVarios:= cVarios + ajustaEuro(nLiquido, 10)
nImporte = nImporte + (nliquido*100)
nRecibo:= (recibo)->n_recibo
cVarios:= cVarios +cCliente + "Rec." + ajusta(nrecibo, 6)
cVarios = cVarios + G + ponfecha((recibo)->fecha_venc)
cLinea:=cLinea+ cVarios+space(2)+chr(13)+chr(10)
aadd(areg,cLinea)
* FWRITE(nHandle,cLinea)
//----------------- linea 1 -------------------------------
cLinea:="56"+ "71" +"xxxxxxxxx"+cPresenta+space(6)+cCliente // 56 euro, 71 codigo dato linea x->nif
(linrec)->(ordscope(0,nrecibo))
(linrec)->(ordscope(1,nrecibo))
(linrec)->(dbgotop())
strfacturas:=""
do while !(linrec)->(eof())
strfacturas = strfacturas + (linrec)->factura + " - "
(linrec)->(dbskip())
enddo
(linrec)->(ordscope(0,nil))
(linrec)->(ordscope(1,nil))
strfacturas:=padr(strfacturas,134)
cLinea := cLinea+strfacturas+chr(13)+chr(10)
aadd(areg,cLinea)
* FWRITE(nHandle,cLinea)
aadd(areg,cEnt + cSuc + cCliente)
if (recibo)->(rlock())
(recibo)->status_e := "S"
(recibo)->(dbunlock())
endif
i++
aadd(aCampos,areg)
endif
(recibo)->(dbskip())
enddo
aOrden := ASORT(aCampos,,, { |x, y| x[3] < y[3] })
for i = 1 to len(aOrden)
FWRITE(nHandle,aOrden[i,1])
FWRITE(nHandle,aOrden[i,2])
next
i:=len(aCampos)
// ----------- cierre 2 lineas --------------
//-------------------------linea total cliente ordenante ---------------
cLinea:= "58"+"70"+"xxxxxxxxx"+cPresenta // x->if del emisor
cVarios:=Space(20)+ajusta(nImporte,10)+Space(6)+ajusta(i,10)+ajusta(i*2+2,10)
cVarios:= padr(cVarios,94)
cLinea := cLinea+space(6)+space(6)+space(40)+cVarios+chr(13)+chr(10)
FWRITE(nHandle,cLinea)
// ----------- linea total General --------------------------
cLinea:= "59"+"70"+"xxxxxxxxx"+cPresenta //x->nif del emisor sin giones
cVarios:= "0001"+Space(16)+ajusta(nImporte,10)+Space(6)+ajusta(i,10)+ajusta(i*2+4,10)
cVarios:= Padr(cVarios,94)
cLinea := cLinea+space(6)+space(6)+space(40)+cVarios+chr(13)+chr(10)
FWRITE(nHandle,cLinea)
(recibo)->(ordscope(0,nil))
(recibo)->(ordscope(1,nil))
FCLOSE(nHandle)
close(recibo)
close(linrec)
return .t.
Manuel Valdenebro wrote:Antonio,
Creo que el cuaderno CSB 58 nada tiene que ver con el envio de transferencias ó nóminas automatizadas. El cuaderno a aplicar es el CSB 34.
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: russimicro and 35 guests