Re: Ayuda con SQL
Posted: Wed Apr 01, 2020 01:14 PM
Esta es la rutina donde genero los registros:
function generoreci()
xtotal = xefectivo + xtotche + ximpretiva + ximpretgan + ximpretrg + ximpretibr + acuenta
if xtotal = 0
msginfo( "Monto abonado en cero" )
retu .f.
endif
wtxt = "errorecib.txt"
ferase( wtxt )
cHande = FCREATE ( wtxt )
cSQLNum := "SELECT * FROM numdoc where numero = " + str( xemprevige )
oRS1num := CargaRecordSet( cSQLnum, CadenaCon )
IF oRS1num = nil
Msginfo( "problemas, no puedo leer numdoc" )
retu .t.
endif
if acuenta = 0
xrecibo := oRS1num:Fields( "recibo" ):value + 1
endif
val_fam( xfamilia )
if limpreci
imprireci()
* retu .f.
endif
xnombre = xpadre
sele au_reci
go top
i = 1
* ? xdescu
copias = 1
if ximpinteres < 0
x1impabon := xtotal + imp_nc + ( ximpinteres * - 1 ) + acuenta
else
x1impabon := xtotal + imp_nc + acuenta - ximpinteres
endif
xsaldo = 0
SQLMVen = ""
if xfactura = 0
else
do while i <= len( tfactura )
if tfactura[ i, 1 ] = "*"
jk = val( tfactura[ i, 3 ] )
if tfactura[ i, 2 ] $ "N NCM "
wrecset = oRS1RecLic
wrec = "licita"
wfac = "licita"
else
wrecset = oRS1Recvta
wrec = "ventas"
wfac = "factura"
endif
wtipo = "N"
xpuesto = val( tfactura[ i, 8 ] )
if tfactura[ i, 2 ] = "AC"
xsaldo = val( tfactura[ i, 10 ] )
*x1impabon = x1impabon - val( tfactura[ i, 10 ] )
wtipo = "X"
ws = 0
*SQLMVen = SQLMVen + "UPDATE pagos SET saldoafa = 0, cancelado = 0, importe = " + str( val( tfactura[ i, 10 ] ), 10, 2 ) + " where id = " + str(tregistro[ x ]) + chr( 13 ) + chr( 10 )
SQLMVen = SQLMVen + "UPDATE pagos SET saldoafa = saldoafa + " + str(val( tfactura[ i, 10 ] ),10,2) + ", cancelado = 9999999 where id = " + str(tregistro[ i ]) + chr( 13 ) + chr( 10 )
else
wrecset:AbsolutePosition = tregistro[ i ]
//wrecset:find("factura"=jk ) //oRs:Find( "file_num = '"+cFIND+"'" )
if tfactura[ i, 2 ] $ "CCNC"
xsaldo := wrecset:Fields( "saldo" ):value
SQLMVen = SQLMVen + "UPDATE " + wrec + " SET saldo = 0, ult_pago = '" + dtoc( xfecha ) + "' where " + wfac + " = " + str( jk ) + chr( 13 ) + chr( 10 )
else
if val( tfactura[ i, 10 ] ) < x1impabon
xsaldo = val( tfactura[ i, 10 ] )
x1impabon = x1impabon - val( tfactura[ i, 10 ] )
ws = val( tfactura[ i, 10 ] )
else
xsaldo = x1impabon
ws = x1impabon
x1impabon = 0
endif
SQLMVen = SQLMVen + "UPDATE " + wrec + " SET saldo = saldo - " + str( ws, 10, 2 ) + ", ult_pago = " + dtoc( xfecha ) + " where " + wfac + " = " + str( jk ) + chr( 13 ) + chr( 10 )
ENDIF
* endif
SQLMVen = SQLMVen + "INSERT INTO Pagos ([familia],[Factura],[Fecha],[Recibo],[Importe],[Fecven],[Fecpago],[Puesto],[TIPO],[descu], [observa], saldo, saldoafa, interescalculado ) VALUES (" + ;
str( xfamilia , 8, 0 ) + ", " + str( jk, 8, 0 ) + ", '" + dtoc( xfecha ) ;
+ "', " + str( xrecibo, 8, 0 ) + ", " + str( xsaldo, 10, 2 ) + ", '" + dtoc( xfecha ) + "', '" + dtoc( xfecha ) + "', " + str( xpuesto, 4, 0 ) + ", " + "'"+wtipo+"'," + tfactura[ i, 9 ] + ",'" + xobserva + "',0,0," + tfactura[ i, 9 ] + " )" + chr( 13 ) + chr( 10 )
endif
endif
i = i + 1
enddo
endif
jorden = 0
hh = 1
sele au_reci
go top
do while .not. eof()
if cuenta <> 0
wque = "mov_bco"
SQLMVen = SQLMVen + "INSERT INTO " + wque + " ([Fecha],[Puesto],[Cuit_che],[Numero],[Descri],[Factura],pagos,[Num_che],[Fec_che],[Banco],[Titular],[Forpago],[Vendedor], [orden], cuenta, esinter) VALUES ('" + dtoc( xfecha ) + "'," + str( xemprevige, 1, 0 ) ;
+ ",'" + au_reci->cuit_che + "'," + str( xrecibo, 8, 0 ) + ",'" + alltrim( substr( xnombre, 1, 45 ) ) + "'," + str( au_reci->importe, 10, 2 ) + ",0," + str( au_reci->chenro, 8, 0 ) + ",'" + dtoc( au_reci->fecche ) + "','" + substr( au_reci->banco, 1, 15 ) + "','" + alltrim( substr( au_reci->titular, 1, 30 ) ) + "',2,'" + alltrim( xnombreven ) + "'," + str( au_reci->orden, 8, 0 ) + "," + str( au_reci->cuenta, 10, 0 ) + ", 'S')" + chr( 13 ) + chr( 10 )
else
wque = "mov_ven"
SQLMVen = SQLMVen + "INSERT INTO " + wque + " ([Fecha],[Puesto],[Cuit_che],[Numero],[Descri],[Factura],pagos,[Num_che],[Fec_che],[Banco],[Titular],[Forpago],[Vendedor], [orden]) VALUES ('" + dtoc( xfecha ) + "'," + str( xemprevige, 1, 0 ) ;
+ ",'" + au_reci->cuit_che + "'," + str( xrecibo, 8, 0 ) + ",'" + alltrim( substr( xnombre, 1, 45 ) ) + "'," + str( au_reci->importe, 10, 2 ) + ",0," + str( au_reci->chenro, 8, 0 ) + ",'" + dtoc( au_reci->fecche ) + "','" + substr( au_reci->banco, 1, 15 ) + "','" + alltrim( substr( au_reci->titular, 1, 30 ) ) + "',2,'" + alltrim( xnombreven ) + "'," + str( au_reci->orden, 8, 0 ) + ")" + chr( 13 ) + chr( 10 )
endif
sele au_reci
skip
enddo
if xefectivo <> 0
SQLMVen = SQLMVen + "INSERT INTO Mov_ven ([Fecha],[Puesto],[Numero],[Descri],[Factura],pagos,[Forpago],[Vendedor]) VALUES ('" + dtoc( xfecha ) + "'," + str( xemprevige, 1, 0 ) ;
+ "," + str( xrecibo, 8, 0 ) + ",'" + substr( xnombre, 1, 45 ) + "'," + str( xefectivo, 10, 2 ) + ",0,1,'" + xnombreven + "')" + chr( 13 ) + chr( 10 )
endif
if ximpinteres < 0
if x1impabon > 0 // - ximpdescu
SQLMVen = SQLMVen + "INSERT INTO Pagos ([familia],[Factura],[Fecha],[Recibo],[Importe],[Fecven],[Fecpago],[Puesto],[TIPO], saldo, saldoafa, InteresCalculado, [observa] ) VALUES (" + str( xfamilia , 8, 0 ) + ", 0, '" + dtoc( xfecha ) ;
+ "', " + str( xrecibo, 8, 0 ) + ", " + str( x1impabon, 10, 2 ) + ", '" + dtoc( xfecha ) + "', '" + dtoc( xfecha ) + "', 1, " + "'N', 0, 0, 0,'" + xobserva + "' )" + chr( 13 ) + chr( 10 )
endif
else
if x1impabon > 0 //- ximpinteres // - ximpdescu
SQLMVen = SQLMVen + "INSERT INTO Pagos ([familia],[Factura],[Fecha],[Recibo],[Importe],[Fecven],[Fecpago],[Puesto],[TIPO], saldo, saldoafa, InteresCalculado, [observa] ) VALUES (" + str( xfamilia , 8, 0 ) + ", 0, '" + dtoc( xfecha ) ;
+ "', " + str( xrecibo, 8, 0 ) + ", " + str( x1impabon, 10, 2 ) + ", '" + dtoc( xfecha ) + "', '" + dtoc( xfecha ) + "', 1, " + "'N', 0, 0, 0,'" + xobserva + "' )" + chr( 13 ) + chr( 10 )
endif
endif
if ximpretiva <> 0
SQLMVen = SQLMVen + "INSERT INTO Compret ([Cliente],[Comproba],[Tipo],[Fecha],[Recibo],[Importe],[Fecpago]) VALUES " + ;
" ( " + str( xfamilia, 8, 0 ) + ", " + str( xcomretiva, 12, 0 ) + ", " + "'IVA'" + ", '" + dtoc( xfecha ) + "', " + str( xrecibo, 8, 0 ) + ", " + str( ximpretiva, 10, 2 ) + ", '" + dtoc( xfecha ) + "')" + chr( 13 ) + chr( 10 )
endif
if ximpretgan <> 0
SQLMVen = SQLMVen + "INSERT INTO Compret ([Cliente],[Comproba],[Tipo],[Fecha],[Recibo],[Importe],[Fecpago]) VALUES " + ;
" ( " + str( xfamilia, 8, 0 ) + ", " + str( xcomretgan, 12, 0 ) + ", " + "'GAN'" + ", '" + dtoc( xfecha ) + "', " + str( xrecibo, 8, 0 ) + ", " + str( ximpretgan, 10, 2 ) + ", '" + dtoc( xfecha ) + "')" + chr( 13 ) + chr( 10 )
endif
if ximpretrg <> 0
SQLMVen = SQLMVen + "INSERT INTO Compret ([Cliente],[Comproba],[Tipo],[Fecha],[Recibo],[Importe],[Fecpago]) VALUES " + ;
" ( " + str( xfamilia, 8, 0 ) + ", " + str( xcomretrg, 12, 0 ) + ", " + "'RG'" + ", '" + dtoc( xfecha ) + "', " + str( xrecibo, 8, 0 ) + ", " + str( ximpretrg, 10, 2 ) + ", '" + dtoc( xfecha ) + "')" + chr( 13 ) + chr( 10 )
endif
if ximpretibr <> 0
SQLMVen = SQLMVen + "INSERT INTO Compret ([Cliente],[Comproba],[Tipo],[Fecha],[Recibo],[Importe],[Fecpago]) VALUES " + ;
" ( " + str( xfamilia, 8, 0 ) + ", " + str( xcomretibr, 12, 0 ) + ", " + "'IBR'" + ", '" + dtoc( xfecha ) + "', " + str( xrecibo, 8, 0 ) + ", " + str( ximpretibr, 10, 2 ) + ", '" + dtoc( xfecha ) + "')" + chr( 13 ) + chr( 10 )
endif
SQLMVen = SQLMVen + "UPDATE Numdoc SET recibo = " + str( xrecibo, 8, 0 ) + ", nroorden = " + str( xorden, 8, 0 ) + " where numero = " + str( xemprevige ) + chr( 13 ) + chr( 10 )
TRY
oCon:Execute( sqlMVen )
oCon:Close() ; Catch oErr
msginfo("Error al grabar el recibo "+sqlmven)
FWrite ( cHande, SQLMVen + chr( 13 ) + chr( 10 )+ oErr )
END TRY
FClose ( cHande )
Los corchetes est谩n porque corrijo las sentencias en sql managment studio, pero reitero los raro es que anda bien sin problemas, hasta ahora detecte que fallo una sola ves (espero).
El problema es como detectar porque falla.
Saludos
Jorge.