Created
May 2, 2015 14:03
-
-
Save anonymous/dfa67e52da10d41bacb6 to your computer and use it in GitHub Desktop.
Cobros alquiler
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
unit UPAgosAlquiler; | |
interface | |
uses | |
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, | |
Dialogs, DB, StdCtrls, DBCtrls, DBCGrids, Buttons, Grids, DBGrids, ComCtrls, | |
ExtCtrls, IBCustomDataSet, IBQuery; | |
type | |
TFCobrosAlquiler = class(TForm) | |
Botonera: TPanel; | |
StatusBar1: TStatusBar; | |
PAnelDatos: TPanel; | |
Panel1: TPanel; | |
SpeedButton1: TSpeedButton; | |
Panel2: TPanel; | |
DBCtrlGrid1: TDBCtrlGrid; | |
DBImage1: TDBImage; | |
Panel3: TPanel; | |
DBText2: TDBText; | |
DsIBQAlquiler: TDataSource; | |
DSFormasPAgos: TDataSource; | |
Panel4: TPanel; | |
IBQAlquilerNopagado: TIBQuery; | |
Panel5: TPanel; | |
Panel6: TPanel; | |
DBGrid1: TDBGrid; | |
Panel7: TPanel; | |
DBNavigator1: TDBNavigator; | |
DBNavigator2: TDBNavigator; | |
SpeedButton2: TSpeedButton; | |
DBImage2: TDBImage; | |
GroupBox1: TGroupBox; | |
GroupBox2: TGroupBox; | |
DBImage3: TDBImage; | |
Memo1: TMemo; | |
SBSalir: TSpeedButton; | |
DBText1: TDBText; | |
DBText3: TDBText; | |
DBText4: TDBText; | |
Label1: TLabel; | |
Label2: TLabel; | |
Label3: TLabel; | |
SBAcuenta: TSpeedButton; | |
Label4: TLabel; | |
DBText5: TDBText; | |
Label5: TLabel; | |
Label6: TLabel; | |
Label7: TLabel; | |
DBText6: TDBText; | |
procedure SBSalirClick(Sender: TObject); | |
procedure FormActivate(Sender: TObject); | |
procedure recargar; | |
procedure SBAcuentaClick(Sender: TObject); | |
procedure SpeedButton1Click(Sender: TObject); | |
procedure SpeedButton2Click(Sender: TObject); | |
private | |
{ Private declarations } | |
public | |
{ Public declarations } | |
end; | |
var | |
FCobrosAlquiler: TFCobrosAlquiler; | |
implementation | |
{$R *.dfm} | |
uses Funciones,UDM, UAlquiler; | |
procedure TFCobrosAlquiler.FormActivate(Sender: TObject); | |
begin | |
recargar; | |
end; | |
procedure TFCobrosAlquiler.recargar; | |
var varRTotal:Real; | |
begin | |
varRTotal:=0; | |
if FCobrosAlquiler.Active then | |
begin | |
ActQuery(IBQAlquilerNopagado,'SELECT '+ | |
' UNIDADES.TITULO, '+ | |
' ALQUILER.ID, '+ | |
' ALQUILER.REGISTRO, '+ | |
' ALQUILER.UNIDAD, '+ | |
' ALQUILER.CLIENTE, '+ | |
' ALQUILER.USUARIO, '+ | |
' ALQUILER.LIBRE, '+ | |
' ALQUILER.DIA_ALQUILER, '+ | |
' ALQUILER.DIA_DEVOLUCION_PREVISTO, '+ | |
' ALQUILER.DIA_DEVOLUCION, '+ | |
' ALQUILER.PAGADA, '+ | |
' ALQUILER.RACARGO, '+ | |
' ALQUILER.VALOR_RECARGO_DIA, '+ | |
' CLIENTES.NOMBRE, '+ | |
' CLIENTES.FOTO, '+ | |
' CLIENTES.A_CUENTA, '+ | |
' CLIENTES.PENDIENTE, '+ | |
' UNIDADES.PORTADA, '+ | |
' UNIDADES.NOTAS '+ | |
' FROM '+ | |
' ALQUILER '+ | |
' INNER JOIN UNIDADES ON (ALQUILER.UNIDAD=UNIDADES.CODIGO) '+ | |
' INNER JOIN CLIENTES ON (ALQUILER.CLIENTE=CLIENTES.CODIGO) '+ | |
' WHERE '+ | |
' (ALQUILER.REGISTRO = '+QuotedStr(DM.IBDAlquilerREGISTRO.Value)+') AND '+ | |
' (ALQUILER.PAGADA <> '+QuotedStr('S')+')'); | |
if not IBQAlquilerNopagado.IsEmpty then | |
begin | |
IBQAlquilerNopagado.First; | |
with IBQAlquilerNopagado do | |
begin | |
while not Eof do | |
begin | |
if not IBQAlquilerNopagado.FieldByName('LIBRE').IsNull then varRTotal:=varRTotal+StrToFloat(IBQAlquilerNopagado.FieldByName('LIBRE').value); | |
Next; | |
end; | |
end; | |
end; | |
end; | |
if IBQAlquilerNopagado.FieldByName('A_CUENTA').Value>0 then SBAcuenta.Enabled:=true | |
else SBAcuenta.Enabled:=False; | |
Label6.Caption:=FormatFloat('#,##0.00',varRTotal); | |
end; | |
procedure TFCobrosAlquiler.SBAcuentaClick(Sender: TObject); | |
var varRNuevoTotal:Real; | |
begin | |
try | |
//Si acuenta es mayor que el Label6.Caption Cobramos todas o si es igual | |
if (StrToFloat(Label6.Caption)<StrToFloat(DBText3.Caption)) or (StrToFloat(Label6.Caption)=StrToFloat(DBText3.Caption)) then | |
begin | |
with DsIBQAlquiler.DataSet do | |
begin | |
First; | |
while not Eof do | |
begin | |
//PAsamoa a la unidad | |
if DM.IBDUnidades.Locate('CODIGO',IBQAlquilerNopagado.FieldByName('UNIDAD').value, [loPartialKey,loCaseInsensitive]) then | |
begin | |
DM.IBDUnidades.Edit; | |
DM.IBDUnidadesRENDIMIENTO.Value:=DM.IBDUnidadesRENDIMIENTO.Value+StrToFloat(IBQAlquilerNopagado.FieldByName('LIBRE').value); | |
DM.IBDUnidades.Post; | |
end; | |
//Pasamos a alquiler | |
if DM.IBDAlquiler.Locate('ID',IBQAlquilerNopagado.FieldByName('ID').Value,[loPartialKey,loCaseInsensitive]) then | |
begin | |
DM.IBDAlquiler.Edit; | |
DM.IBDAlquilerPAGADA.Value:='S'; | |
DM.IBDAlquiler.post; | |
end; | |
//A cobros | |
DM.IBDCaja.Insert; | |
DM.IBDCajaREGISTRO.Value:=IntToStr(DM.IBDConfiguracionNUMERADOR_CAJA.Value+1); | |
DM.IBDCajaCONCEPTO.Value:='Pago del alquiler del cliente ['+IBQAlquilerNopagado.FieldByName('CLIENTE').Value+ | |
'] unidad ['+IBQAlquilerNopagado.FieldByName('UNIDAD').value+'] con '+DBText6.Caption; | |
DM.IBDCajaCLIENTE.Value:=IBQAlquilerNopagado.FieldByName('CLIENTE').Value; | |
DM.IBDCajaUSUARIO.Value:=IBQAlquilerNopagado.FieldByName('USUARIO').Value; | |
DM.IBDCajaCARGO.Value:='Cobro'; | |
DM.IBDCajaFECHA.Value:=Now; | |
DM.IBDCajaCANTIDAD.Value:=StrToFloat(IBQAlquilerNopagado.FieldByName('LIBRE').Value); | |
DM.IBDCaja.Post; | |
Next; | |
end; | |
end; | |
//pasamos al cliente | |
if DM.IBDClientes.Locate('CODIGO', IBQAlquilerNopagado.FieldByName('CLIENTE').Value, [loPartialKey,loCaseInsensitive]) then | |
begin | |
DM.IBDClientes.Edit; | |
if StrToFloat(Label6.Caption)=StrToFloat(DBText3.Caption) then DM.IBDClientesA_CUENTA.Value:=0 //Si es igual | |
else DM.IBDClientesA_CUENTA.Value:=DM.IBDClientesA_CUENTA.Value-StrToFloat(Label6.Caption); | |
DM.IBDClientes.Post; | |
end; | |
DM.IBT.CommitRetaining; | |
end else | |
begin //Si es menor | |
with DsIBQAlquiler.DataSet do | |
begin | |
varRNuevoTotal:=0; | |
First; | |
while not Eof do | |
begin | |
//PAsamoa a la unidad | |
if DM.IBDClientesA_CUENTA.Value>StrToFloat(IBQAlquilerNopagado.FieldByName('LIBRE').value) then | |
begin | |
varRNuevoTotal:=varRNuevoTotal+StrToFloat(IBQAlquilerNopagado.FieldByName('LIBRE').value); | |
if DM.IBDUnidades.Locate('CODIGO',IBQAlquilerNopagado.FieldByName('UNIDAD').value, [loPartialKey,loCaseInsensitive]) then | |
begin | |
DM.IBDUnidades.Edit; | |
DM.IBDUnidadesRENDIMIENTO.Value:=DM.IBDUnidadesRENDIMIENTO.Value+StrToFloat(IBQAlquilerNopagado.FieldByName('LIBRE').value); | |
DM.IBDUnidades.Post; | |
end; | |
//Pasamos a alquiler | |
if DM.IBDAlquiler.Locate('ID',IBQAlquilerNopagado.FieldByName('ID').Value,[loPartialKey,loCaseInsensitive]) then | |
begin | |
DM.IBDAlquiler.Edit; | |
DM.IBDAlquilerPAGADA.Value:='S'; | |
DM.IBDAlquiler.post; | |
end; | |
//A cobros | |
DM.IBDCaja.Insert; | |
DM.IBDCajaREGISTRO.Value:=IntToStr(DM.IBDConfiguracionNUMERADOR_CAJA.Value+1); | |
DM.IBDCajaCONCEPTO.Value:='Pago del alquiler del cliente ['+IBQAlquilerNopagado.FieldByName('CLIENTE').Value+ | |
'] unidad ['+IBQAlquilerNopagado.FieldByName('UNIDAD').value+'] con '+DBText6.Caption; | |
DM.IBDCajaCLIENTE.Value:=IBQAlquilerNopagado.FieldByName('CLIENTE').Value; | |
DM.IBDCajaUSUARIO.Value:=IBQAlquilerNopagado.FieldByName('USUARIO').Value; | |
DM.IBDCajaCARGO.Value:='Cobro'; | |
DM.IBDCajaFECHA.Value:=Now; | |
DM.IBDCajaCANTIDAD.Value:=StrToFloat(IBQAlquilerNopagado.FieldByName('LIBRE').Value); | |
DM.IBDCaja.Post; | |
end; | |
Next; | |
end; | |
//pasamos al cliente | |
if DM.IBDClientes.Locate('CODIGO', IBQAlquilerNopagado.FieldByName('CLIENTE').Value, [loPartialKey,loCaseInsensitive]) then | |
begin | |
DM.IBDClientes.Edit; | |
DM.IBDClientesA_CUENTA.Value:=DM.IBDClientesA_CUENTA.Value-varRNuevoTotal; | |
DM.IBDClientes.Post; | |
end; | |
DM.IBT.CommitRetaining; | |
end; | |
end; | |
recargar; | |
except | |
on E: Exception do | |
begin | |
MessageBeep(1000); | |
ShowMessage('Se ha producido un error y el proceso no se ha podido terminar Unidad:[ UPagosAlquiler ] Modulo:[ Pagar con acuenta ]' + Chr(13) + Chr(13) | |
+ 'Clase de error: ' + E.ClassName + Chr(13) + Chr(13) | |
+ 'Mensaje del error:' + E.Message+Chr(13) + Chr(13) | |
+ ' '+Chr(13) + Chr(13) | |
+ 'El proceso ha quedado interrumpido'); | |
if DM.IBDAlquiler.State in [dsEdit,dsInsert] then DM.IBDAlquiler.Cancel; | |
if DM.IBDUnidades.State in [dsEdit,dsInsert] then DM.IBDUnidades.Cancel; | |
if DM.IBDClientes.State in [dsEdit,dsInsert] then DM.IBDClientes.Cancel; | |
if DM.IBDCaja.State in [dsEdit,dsInsert] then DM.IBDCaja.Cancel; | |
DM.IBT.RollbackRetaining; //Donde IBT es el nombre de su Ibtrasaction, con ruta | |
end; | |
end; | |
end; | |
procedure TFCobrosAlquiler.SBSalirClick(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//**************************************************************[ SBSalir ]***** | |
//------------------------------------------------------------------------------ | |
begin | |
IBQAlquilerNopagado.Active:=False; | |
Close; | |
end; | |
procedure TFCobrosAlquiler.SpeedButton1Click(Sender: TObject); | |
begin | |
try | |
with DsIBQAlquiler.DataSet do | |
begin | |
if UpperCase(DBText6.Caption)='A CUENTA' then | |
begin | |
if DM.IBDClientes.Locate('CODIGO', IBQAlquilerNopagado.FieldByName('CLIENTE').Value, [loPartialKey,loCaseInsensitive]) then | |
begin | |
if DM.IBDClientesA_CUENTA.Value>StrToFloat(IBQAlquilerNopagado.FieldByName('LIBRE').Value) then | |
begin | |
DM.IBDClientes.Edit; | |
DM.IBDClientesA_CUENTA.Value:=DM.IBDClientesA_CUENTA.Value-StrToFloat(IBQAlquilerNopagado.FieldByName('LIBRE').Value); | |
DM.IBDClientes.Post; | |
if DM.IBDUnidades.Locate('CODIGO',IBQAlquilerNopagado.FieldByName('UNIDAD').value, [loPartialKey,loCaseInsensitive]) then | |
begin | |
DM.IBDUnidades.Edit; | |
DM.IBDUnidadesRENDIMIENTO.Value:=DM.IBDUnidadesRENDIMIENTO.Value+StrToFloat(IBQAlquilerNopagado.FieldByName('LIBRE').value); | |
DM.IBDUnidades.Post; | |
end; | |
//Pasamos a alquiler | |
if DM.IBDAlquiler.Locate('ID',IBQAlquilerNopagado.FieldByName('ID').Value,[loPartialKey,loCaseInsensitive]) then | |
begin | |
DM.IBDAlquiler.Edit; | |
DM.IBDAlquilerPAGADA.Value:='S'; | |
DM.IBDAlquiler.post; | |
end; | |
//A cobros | |
DM.IBDCaja.Insert; | |
DM.IBDCajaREGISTRO.Value:=IntToStr(DM.IBDConfiguracionNUMERADOR_CAJA.Value+1); | |
DM.IBDCajaCONCEPTO.Value:='Pago del alquiler del cliente ['+IBQAlquilerNopagado.FieldByName('CLIENTE').Value+ | |
'] unidad ['+IBQAlquilerNopagado.FieldByName('UNIDAD').value+'] con '+DBText6.Caption; | |
DM.IBDCajaCLIENTE.Value:=IBQAlquilerNopagado.FieldByName('CLIENTE').Value; | |
DM.IBDCajaUSUARIO.Value:=IBQAlquilerNopagado.FieldByName('USUARIO').Value; | |
DM.IBDCajaCARGO.Value:='Cobro'; | |
DM.IBDCajaFECHA.Value:=Now; | |
DM.IBDCajaCANTIDAD.Value:=StrToFloat(IBQAlquilerNopagado.FieldByName('LIBRE').Value); | |
DM.IBDCaja.Post; | |
end else ShowMessage('En A cuenta del cliente no hay importe suficiente para este pago, Elija otra forma de pago'); | |
end; | |
end else | |
begin | |
if DM.IBDUnidades.Locate('CODIGO',IBQAlquilerNopagado.FieldByName('UNIDAD').value, [loPartialKey,loCaseInsensitive]) then | |
begin | |
DM.IBDUnidades.Edit; | |
DM.IBDUnidadesRENDIMIENTO.Value:=DM.IBDUnidadesRENDIMIENTO.Value+StrToFloat(IBQAlquilerNopagado.FieldByName('LIBRE').value); | |
DM.IBDUnidades.Post; | |
end; | |
//Pasamos a alquiler | |
if DM.IBDAlquiler.Locate('ID',IBQAlquilerNopagado.FieldByName('ID').Value,[loPartialKey,loCaseInsensitive]) then | |
begin | |
DM.IBDAlquiler.Edit; | |
DM.IBDAlquilerPAGADA.Value:='S'; | |
DM.IBDAlquiler.post; | |
end; | |
//A cobros | |
DM.IBDCaja.Insert; | |
DM.IBDCajaREGISTRO.Value:=IntToStr(DM.IBDConfiguracionNUMERADOR_CAJA.Value+1); | |
DM.IBDCajaCONCEPTO.Value:='Pago del alquiler del cliente ['+IBQAlquilerNopagado.FieldByName('CLIENTE').Value+ | |
'] unidad ['+IBQAlquilerNopagado.FieldByName('UNIDAD').value+'] con '+DBText6.Caption; | |
DM.IBDCajaCLIENTE.Value:=IBQAlquilerNopagado.FieldByName('CLIENTE').Value; | |
DM.IBDCajaUSUARIO.Value:=IBQAlquilerNopagado.FieldByName('USUARIO').Value; | |
DM.IBDCajaCARGO.Value:='Cobro'; | |
DM.IBDCajaFECHA.Value:=Now; | |
DM.IBDCajaCANTIDAD.Value:=StrToFloat(IBQAlquilerNopagado.FieldByName('LIBRE').Value); | |
DM.IBDCaja.Post; | |
end; | |
DM.IBT.CommitRetaining; | |
end; | |
recargar; | |
except | |
on E: Exception do | |
begin | |
MessageBeep(1000); | |
ShowMessage('Se ha producido un error y el proceso no se ha podido terminar Unidad:[ UPagosAlquiler ] Modulo:[ Pagar con acuenta ]' + Chr(13) + Chr(13) | |
+ 'Clase de error: ' + E.ClassName + Chr(13) + Chr(13) | |
+ 'Mensaje del error:' + E.Message+Chr(13) + Chr(13) | |
+ ' '+Chr(13) + Chr(13) | |
+ 'El proceso ha quedado interrumpido'); | |
if DM.IBDAlquiler.State in [dsEdit,dsInsert] then DM.IBDAlquiler.Cancel; | |
if DM.IBDUnidades.State in [dsEdit,dsInsert] then DM.IBDUnidades.Cancel; | |
if DM.IBDClientes.State in [dsEdit,dsInsert] then DM.IBDClientes.Cancel; | |
if DM.IBDCaja.State in [dsEdit,dsInsert] then DM.IBDCaja.Cancel; | |
DM.IBT.RollbackRetaining; //Donde IBT es el nombre de su Ibtrasaction, con ruta | |
end; | |
end; | |
end; | |
procedure TFCobrosAlquiler.SpeedButton2Click(Sender: TObject); | |
begin | |
try | |
if UpperCase(DBText6.Caption)='A CUENTA' then SBAcuentaClick(Sender) | |
else | |
begin | |
with DsIBQAlquiler.DataSet do | |
begin | |
First; | |
while not Eof do | |
begin | |
//PAsamoa a la unidad | |
if DM.IBDUnidades.Locate('CODIGO',IBQAlquilerNopagado.FieldByName('UNIDAD').value, [loPartialKey,loCaseInsensitive]) then | |
begin | |
DM.IBDUnidades.Edit; | |
DM.IBDUnidadesRENDIMIENTO.Value:=DM.IBDUnidadesRENDIMIENTO.Value+StrToFloat(IBQAlquilerNopagado.FieldByName('LIBRE').value); | |
DM.IBDUnidades.Post; | |
end; | |
//Pasamos a alquiler | |
if DM.IBDAlquiler.Locate('ID',IBQAlquilerNopagado.FieldByName('ID').Value,[loPartialKey,loCaseInsensitive]) then | |
begin | |
DM.IBDAlquiler.Edit; | |
DM.IBDAlquilerPAGADA.Value:='S'; | |
DM.IBDAlquiler.post; | |
end; | |
//A cobros | |
DM.IBDCaja.Insert; | |
DM.IBDCajaREGISTRO.Value:=IntToStr(DM.IBDConfiguracionNUMERADOR_CAJA.Value+1); | |
DM.IBDCajaCONCEPTO.Value:='Pago del alquiler del cliente ['+IBQAlquilerNopagado.FieldByName('CLIENTE').Value+ | |
'] unidad ['+IBQAlquilerNopagado.FieldByName('UNIDAD').value+'] con '+DBText6.Caption; | |
DM.IBDCajaCLIENTE.Value:=IBQAlquilerNopagado.FieldByName('CLIENTE').Value; | |
DM.IBDCajaUSUARIO.Value:=IBQAlquilerNopagado.FieldByName('USUARIO').Value; | |
DM.IBDCajaCARGO.Value:='Cobro'; | |
DM.IBDCajaFECHA.Value:=Now; | |
DM.IBDCajaCANTIDAD.Value:=StrToFloat(IBQAlquilerNopagado.FieldByName('LIBRE').Value); | |
DM.IBDCaja.Post; | |
DM.IBDConfiguracion.Edit; //Grabamos el nuevo registro de la caja | |
DM.IBDConfiguracionNUMERADOR_CAJA.Value:=DM.IBDConfiguracionNUMERADOR_CAJA.Value+1; | |
DM.IBDConfiguracion.Post; | |
Next; | |
end; | |
end; | |
DM.IBT.CommitRetaining; | |
end; | |
recargar; | |
except | |
on E: Exception do | |
begin | |
MessageBeep(1000); | |
ShowMessage('Se ha producido un error y el proceso no se ha podido terminar Unidad:[ UPagosAlquiler ] Modulo:[ Pagar con acuenta ]' + Chr(13) + Chr(13) | |
+ 'Clase de error: ' + E.ClassName + Chr(13) + Chr(13) | |
+ 'Mensaje del error:' + E.Message+Chr(13) + Chr(13) | |
+ ' '+Chr(13) + Chr(13) | |
+ 'El proceso ha quedado interrumpido'); | |
if DM.IBDAlquiler.State in [dsEdit,dsInsert] then DM.IBDAlquiler.Cancel; | |
if DM.IBDUnidades.State in [dsEdit,dsInsert] then DM.IBDUnidades.Cancel; | |
if DM.IBDClientes.State in [dsEdit,dsInsert] then DM.IBDClientes.Cancel; | |
if DM.IBDCaja.State in [dsEdit,dsInsert] then DM.IBDCaja.Cancel; | |
DM.IBT.RollbackRetaining; //Donde IBT es el nombre de su Ibtrasaction, con ruta | |
end; | |
end; | |
end; | |
end. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment