PROCEDURE Guardar
Local loKardex, loCompras, loCtaCte, llResult
loCmd = NewObject("uo_Command", "class\database.vcx")
loCmd.ActiveConnection = goSQL
goSQL.SQLStart()
Try
llResult = .T.
loCompras = NewObject("uo_Compras", "class\datos.vcx")
loCompras.InsertMode = This.isNew
loCompras.Save()
loKardex = NewObject("uo_Kardex", "class\datos.vcx")
loKardex.InsertMode = This.isNew
loKardex.Save()
If loInput.Credito = TRUE
This.Cobrar()
loCtaCte = NewObject("uo_Proveedores_CtaCte", "class\datos.vcx")
loCtaCte.InsertMode = This.isNew
loCtaCte.Save()
EndIf
Catch To loError
goSql.SQLRollBack()
lcMessage = Iif(loError.ErrorNo = 2071, loError.UserValue, loError.Message) + CRLF + loCmd.eMessage
goApp.MessageBox("ERROR: " + lcMessage, MB_EXCLAMATION)
llResult = .F.
EndTry
Release loCmd, loKardex, loCompras, loCtaCte
If llResult = .T.
goSql.SQLCommit()
goApp.MessageBox("El documento fue registrado con exito")
EndIf
Return (llResult)
En la clase Datos.Vcx
PROCEDURE uo_Compras.Save()
Local lcSQLCommand, lcAction, lcWhere
*/-- Obtener Correlativo
If This.InsertMode
loInput.CompraID = loCmd.SQLLastInsertID("compras", "CompraID")
EndIf
If loInput.CompraID = -1
Throw "No se pudo obtener el correlativo"
EndIf
lcAction = "UPDATE"
lcWhere = "WHERE CompraID = ?loInput.CompraID"
If This.InsertMode
lcAction = "INSERT"
lcWhere = ""
EndIf
*/-- Insertamos la cabecera del documento
Text To lcSQLCommand TextMerge NoShow Flags 1 Pretext 15
<<lcAction>> compras
SET CompraID = ?loInput.CompraID,
UniqueID = ?loInput.UniqueID,
ProveedorID = ?loInput.ProveedorID,
Credito = ?loInput.Credito
<<lcWhere>>
EndText
loCmd.SQLExec(lcSQLCommand)
If loCmd.SQLCode < 0
Throw "No se pudo guardar la compra..."
EndIf
Return
En el procedimientoe SQLLastInsertID
PROCEDURE Cmd.SQLLastInsertID
Parameters tcTable, tcAutoIncField, tcWhere
Local lnResult
tcWhere = Iif(Vartype(tcWhere) == "C", " WHERE " + tcWhere + " ", "")
lnResult = -1
This.SQLExec("SELECT " + tcAutoIncField + " AS LastID FROM " + tcTable + tcWhere + " ORDER BY 1 DESC LIMIT 1", "dbSQLQuery")
If This.SQLCode > 0
lnResult = dbSQLQuery.LastID + 1
Use In Select("dbSQLQuery")
EndIf
Return (lnResult)