//--------------------------------------------------------------------------- #include #include #pragma hdrstop #include "TpvBlcDVnt.h" #include "TpvVntClt.h" #include "TpvVntEmpl.h" #include "TpvVntProd.h" #include "TpvBlcD_Print.h" #include "Inicio1.h" //--------------------------------------------------------------------------- #pragma link "ElastFrm" #pragma resource "*.dfm" TTpvBlDVnt *TpvBlDVnt; //--------------------------------------------------------------------------- __fastcall TTpvBlDVnt::TTpvBlDVnt(TComponent* Owner) : TForm(Owner) { // Inicializamos la fecha de compra ( Y el filtro, en base a esta... ) unsigned short year, mes, dia; ( TDateTime::CurrentDate() ).DecodeDate( &year, &mes, &dia ); TbVentasI -> TableName = "Ventas (caja).db"; TbVentasC -> TableName = "Ventas (cabecera).db"; TbFacturasC -> TableName = "Compras (cabecera).db"; TbVentasI -> Active = true; TbVentasC -> Active = true; TbFacturasC -> Active = true; TbVentasI->Last(); StatusBar1->Panels->Items[1]->Text = "Recopilando datos del día..."; FechaCaja -> Date = TDateTime::CurrentDate(); FechaCajaChange( 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::SpeedButton1Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasICantidadx1SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasITotalx1 -> Value = TbVentasICantidadx1 -> Value * 1; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasICantidadx5SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasITotalx5 -> Value = TbVentasICantidadx5 -> Value * 5; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasICantidadx10SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasITotalx10 -> Value = TbVentasICantidadx10 -> Value * 10; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasICantidadx25SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasITotalx25 -> Value = TbVentasICantidadx25 -> Value * 25; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasICantidadx50SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasITotalx50 -> Value = TbVentasICantidadx50 -> Value * 50; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasICantidadx100SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasITotalx100 -> Value = TbVentasICantidadx100 -> Value * 100; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasICantidadx200SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasITotalx200 -> Value = TbVentasICantidadx200 -> Value * 200; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasICantidadx500SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasITotalx500 -> Value = TbVentasICantidadx500 -> Value * 500; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasICantidadx1000SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasITotalx1000 -> Value = TbVentasICantidadx1000 -> Value * 1000; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasICantidadx2000SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasITotalx2000 -> Value = TbVentasICantidadx2000 -> Value * 2000; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasICantidadx5000SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasITotalx5000 -> Value = TbVentasICantidadx5000 -> Value * 5000; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasICantidadx10000SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasITotalx10000 -> Value = TbVentasICantidadx10000 -> Value * 10000; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasITotalx1SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasICantidadx1 -> Value = TbVentasITotalx1 -> Value / 1; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasITotalx5SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasICantidadx5 -> Value = TbVentasITotalx5 -> Value / 5; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasITotalx10SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasICantidadx10 -> Value = TbVentasITotalx10 -> Value / 10; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasITotalx25SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasICantidadx25 -> Value = TbVentasITotalx25 -> Value / 25; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasITotalx50SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasICantidadx50 -> Value = TbVentasITotalx50 -> Value / 50; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasITotalx100SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasICantidadx100 -> Value = TbVentasITotalx100 -> Value / 100; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasITotalx200SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasICantidadx200 -> Value = TbVentasITotalx200 -> Value / 200; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasITotalx500SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasICantidadx500 -> Value = TbVentasITotalx500 -> Value / 500; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasITotalx1000SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasICantidadx1000 -> Value = TbVentasITotalx1000 -> Value / 1000; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasITotalx2000SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasICantidadx2000 -> Value = TbVentasITotalx2000 -> Value / 2000; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasITotalx5000SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasICantidadx5000 -> Value = TbVentasITotalx5000 -> Value / 5000; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::TbVentasITotalx10000SetText(TField *Sender, const AnsiString Text) { Sender -> AsInteger = Text.ToInt(); TbVentasICantidadx10000 -> Value = TbVentasITotalx10000 -> Value / 10000; DsVentasIDataChange( 0, 0 ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit1KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit2 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit2KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit3 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit3KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit4 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit4KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit5 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit5KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit6 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit6KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit7 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit7KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit8 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit8KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit9 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit9KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit10 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit10KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit11 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit11KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit12 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit12KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit25 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit25KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit1 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit13KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit14 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit14KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit15 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit15KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit16 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit16KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit17 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit17KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit18 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit18KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit19 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit19KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit20 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit20KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit21 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit21KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit22 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit22KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit23 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit23KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit24 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit24KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit26 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DBEdit26KeyPress(TObject *Sender, char &Key) { if ( Key == VK_RETURN ) { Key = 0; DBEdit13 -> SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::FechaCajaChange(TObject *Sender) { // Vamos al registro indicado por el DateTimePicker if ( !( TbVentasI -> Locate( "FechaCaja", FechaCaja->DateTime, TLocateOptions() << loCaseInsensitive ) ) ) { // Si el caso es que no existen ventas... if ( TbVentasI->Eof == true && TbVentasI->Eof == TbVentasI->Bof ) { ShowMessage( "ATENCION: El registro de ventas esta VACIO\nSi esto NO es CORRECTO, pongase en contacto\nINMEDIATAMENTE con su distibuidor." ); FechaCaja->Enabled = false; DBMemo1->Enabled = false; Clientes->Enabled = false; Empleados->Enabled = false; Productos->Enabled = false; for ( int i=1; i<=26; i++ ) ( (TDBEdit *)FindComponent("DBEdit"+AnsiString(i)) )->Enabled = false; Close(); // ...mejor salimos. return; } ShowMessage( "El día actual/seleccionado, no tiene datos de venta..." ); // La fecha del Picker ha de cambiar (Sin provocar este evento, otra vez). TDateTime NuevaFecha = BuscaFecha( FechaCaja->DateTime ); if ( NuevaFecha == FechaCaja->DateTime ) return; FechaCaja -> DateTime = NuevaFecha; FechaCajaChange(0); } else { DineroEnCajaAyer(); CalculaVentaGasto(); } } //--------------------------------------------------------------------------- TDateTime __fastcall TTpvBlDVnt::BuscaFecha( TDateTime FechaInicio ) { bool Found; unsigned short year, mes, dia; FechaInicio.DecodeDate( &year, &mes, &dia ); Found = false; while ( dia > 1 && !Found ) { Found = ( TbVentasI -> Locate( "FechaCaja", EncodeDate( year, mes, dia ), TLocateOptions() << loCaseInsensitive ) ); dia--; } if ( Found ) FechaInicio = TbVentasI -> FieldByName("FechaCaja") -> AsDateTime; return FechaInicio; } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DineroEnCajaAyer(void) { Currency TotalM; TBookmark SavePlace; // Marcamos el registro en el cual nos encontramos SavePlace = TbVentasI->GetBookmark(); // Calculamos el Dinero En Caja (del último día) Ayer TotalM = 0; do { TbVentasI -> Prior(); TotalM = TbVentasI -> FieldByName("Total x1" ) -> AsCurrency + TbVentasI -> FieldByName("Total x5" ) -> AsCurrency + TbVentasI -> FieldByName("Total x10" ) -> AsCurrency + TbVentasI -> FieldByName("Total x25" ) -> AsCurrency + TbVentasI -> FieldByName("Total x50" ) -> AsCurrency + TbVentasI -> FieldByName("Total x100" ) -> AsCurrency + TbVentasI -> FieldByName("Total x200" ) -> AsCurrency + TbVentasI -> FieldByName("Total x500" ) -> AsCurrency + TbVentasI -> FieldByName("Total x1000" ) -> AsCurrency + TbVentasI -> FieldByName("Total x2000" ) -> AsCurrency + TbVentasI -> FieldByName("Total x5000" ) -> AsCurrency + TbVentasI -> FieldByName("Total x10000" ) -> AsCurrency + TbVentasI -> FieldByName("Total xvarios" ) -> AsCurrency ; } while( TotalM == 0 && !TbVentasI->Bof ); EnCajaAyer = TotalM; Label27 -> Caption = TbVentasI -> FieldByName("FechaCaja") -> AsString + " ---> " + FormatCurr("###,###,###.#0", TotalM ) + " Ptas."; // Regresamos al registro previo a esta llamada TbVentasI->GotoBookmark(SavePlace); TbVentasI->FreeBookmark(SavePlace); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::ClientesClick(TObject *Sender) { if ( !MenuInicio->TablaDeAcceso[3][8] ) return; TVntEmpl *VentasEmpl; Visible = false; VentasEmpl = new TVntEmpl(this); VentasEmpl -> MinFechaFact = FechaCaja -> DateTime; VentasEmpl -> MaxFechaFact = FechaCaja -> DateTime; VentasEmpl -> MinFecha -> DateTime = FechaCaja -> DateTime; VentasEmpl -> MaxFecha -> DateTime = FechaCaja -> DateTime; VentasEmpl -> MinFecha -> Enabled = false; VentasEmpl -> MaxFecha -> Enabled = false; VentasEmpl -> ShowModal(); Visible = true; delete VentasEmpl; } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::EmpleadosClick(TObject *Sender) { if ( !MenuInicio->TablaDeAcceso[3][8] ) return; TVntClt *TpvVntClt; Visible = false; TpvVntClt = new TVntClt(this); TpvVntClt -> MinFechaFact = FechaCaja -> DateTime; TpvVntClt -> MaxFechaFact = FechaCaja -> DateTime; TpvVntClt -> MinFecha -> DateTime = FechaCaja -> DateTime; TpvVntClt -> MaxFecha -> DateTime = FechaCaja -> DateTime; TpvVntClt -> MinFecha -> Enabled = false; TpvVntClt -> MaxFecha -> Enabled = false; TpvVntClt -> ShowModal(); Visible = true; delete TpvVntClt; } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::ProductosClick(TObject *Sender) { if ( !MenuInicio->TablaDeAcceso[1][8] ) return; TVntProd *TpvVntProd; Visible = false; TpvVntProd = new TVntProd(this); TpvVntProd -> MinFechaFact = FechaCaja -> DateTime; TpvVntProd -> MaxFechaFact = FechaCaja -> DateTime; TpvVntProd -> MinFecha -> DateTime = FechaCaja -> DateTime; TpvVntProd -> MaxFecha -> DateTime = FechaCaja -> DateTime; TpvVntProd -> MinFecha -> Enabled = false; TpvVntProd -> MaxFecha -> Enabled = false; TpvVntProd -> FiltrarFacturas(); TpvVntProd -> ShowModal(); Visible = true; delete TpvVntProd; } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::CalculaVentaGasto(void) { //--------------------------------------------------------------------------- // VENTAS C (AFTERopen) //--------------------------------------------------------------------------- unsigned short H, M, S, mS, i; char buffer[80]; TDateTime AjusteMinimo = FechaCaja->DateTime; Currency Parcial; // TDateTime AjusteMaximo = FechaCaja->DateTime + 1; for ( i = 0; i<25; i++ ) VentasHora[ i ] = 0; TbVentasC->FilterOptions = TbVentasC->FilterOptions << foCaseInsensitive; // TbVentasC->Filter = "([FechaFactura] >= '" + AjusteMinimo + "' AND [FechaFactura] < '" + AjusteMaximo + "')"; TbVentasC->Filter = "([FechaFactura] = '" + AjusteMinimo + "')"; TbVentasC->Filtered = true; StatusBar1->Panels->Items[1]->Text = "Discriminando ventas"; // Reccorremos la tabla hasta obtener los gastos... Gastos = 0; VentasE = 0; TbVentasC -> First(); while ( ! TbVentasC -> Eof ) { TbVentasC -> FieldByName( "HoraFactura" ) -> AsDateTime.DecodeTime( &H, &M, &S, &mS ); // VentasHora[ H ] += TbVentasC -> FieldByName( "Cantidad5" ) -> AsCurrency; Parcial = TbVentasC -> FieldByName( "TotalSin" ) -> AsCurrency + TbVentasC -> FieldByName( "TotalIva" ) -> AsCurrency; VentasHora[ H ] += Parcial; if ( TbVentasC->FieldByName("FormaPago")->AsInteger == 0 ) VentasE += Parcial; TbVentasC -> Next(); } StatusBar1->Panels->Items[1]->Text = "Colocando datos en el panel"; VentasHora[25] = 0; MDatos -> Lines -> Clear(); MDatos -> Lines -> Add( "Venta según Horas" ); Chart1 -> Series[0] -> Clear(); for ( i = 0; i < 24; i++ ) { sprintf( buffer, "[%02i:00 -> %02i:00] #", i, (i+1)%24 ); MDatos -> Lines -> Add( AnsiString( buffer ) + FormatCurr("###,###,###.#0", VentasHora[i] ) ); VentasHora[25] += VentasHora[i]; // Metemos los datos en la gráfica... Chart1 -> Series[0] -> AddXY(i, VentasHora[i], i, clTeeColor); } LVentasT -> Caption = FormatCurr("###,###,###.#0", VentasHora[25]); LVentasE -> Caption = FormatCurr("###,###,###.#0", VentasE); StatusBar1->Panels->Items[1]->Text = ""; //--------------------------------------------------------------------------- // FACTURAS C (AFTERopen) //--------------------------------------------------------------------------- TbFacturasC->FilterOptions = TbFacturasC->FilterOptions << foCaseInsensitive; TbFacturasC->Filter = "([FechaFactura] = '" + FechaCaja->DateTime + "')"; TbFacturasC->Filtered = true; StatusBar1->Panels->Items[1]->Text = "Obteniendo gastos"; // Reccorremos la tabla hasta obtener los gastos... Currency GastosE = 0; Gastos = 0; TbFacturasC -> First(); while ( ! TbFacturasC -> Eof ) { Parcial = TbFacturasC -> FieldByName( "TotalSin") -> AsCurrency + TbFacturasC -> FieldByName( "TotalIva") -> AsCurrency ; Gastos += Parcial; if ( TbFacturasC->FieldByName( "FormaPago" )->AsInteger == 0 ) GastosE += Parcial; //TbFacturasC -> FieldByName( "Cantidad5" ) -> AsCurrency; TbFacturasC -> Next(); } StatusBar1->Panels->Items[1]->Text = ""; LGastos -> Caption = FormatCurr("###,###,###.#0", Gastos ); LGastosE -> Caption = FormatCurr("###,###,###.#0", GastosE ); Currency Beneficio = (VentasHora[25] - Gastos ); LBeneficio->Caption = FormatCurr("###,###,###.#0", Beneficio ); if ( Beneficio < 0 ) LBeneficio->Font->Color = clRed; else LBeneficio->Font->Color = clGreen; Beneficio = (VentasE - GastosE ); LBeneficioE->Caption = FormatCurr("###,###,###.#0", Beneficio ); if ( Beneficio < 0 ) LBeneficioE->Font->Color = clRed; else LBeneficioE->Font->Color = clGreen; EnCaja->Caption = FormatCurr("###,###,###.#0", Beneficio + EnCajaAyer ); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::FormClose(TObject *Sender, TCloseAction &Action) { if ( TbVentasI -> State == dsEdit ||TbVentasI -> State == dsInsert ) TbVentasI -> Post(); } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::DsVentasIDataChange(TObject *Sender, TField *Field) { SpeedButton4->Enabled = !TbVentasI->Bof; SpeedButton6->Enabled = !TbVentasI->Eof; Currency TotalC, TotalM; // Sumamos los totales monetarios... TotalC = TbVentasI -> FieldByName("Cantidad x1" )->AsCurrency + TbVentasI -> FieldByName("Cantidad x5" )->AsCurrency + TbVentasI -> FieldByName("Cantidad x10" )->AsCurrency + TbVentasI -> FieldByName("Cantidad x25" )->AsCurrency + TbVentasI -> FieldByName("Cantidad x50" )->AsCurrency + TbVentasI -> FieldByName("Cantidad x100" )->AsCurrency + TbVentasI -> FieldByName("Cantidad x200" )->AsCurrency + TbVentasI -> FieldByName("Cantidad x500" )->AsCurrency + TbVentasI -> FieldByName("Cantidad x1000" )->AsCurrency + TbVentasI -> FieldByName("Cantidad x2000" )->AsCurrency + TbVentasI -> FieldByName("Cantidad x5000" )->AsCurrency + TbVentasI -> FieldByName("Cantidad x10000" )->AsCurrency + TbVentasI -> FieldByName("Cantidad xvarios" )->AsCurrency; TotalM = TbVentasI -> FieldByName("Total x1" )->AsCurrency + TbVentasI -> FieldByName("Total x5" )->AsCurrency + TbVentasI -> FieldByName("Total x10" )->AsCurrency + TbVentasI -> FieldByName("Total x25" )->AsCurrency + TbVentasI -> FieldByName("Total x50" )->AsCurrency + TbVentasI -> FieldByName("Total x100" )->AsCurrency + TbVentasI -> FieldByName("Total x200" )->AsCurrency + TbVentasI -> FieldByName("Total x500" )->AsCurrency + TbVentasI -> FieldByName("Total x1000" )->AsCurrency + TbVentasI -> FieldByName("Total x2000" )->AsCurrency + TbVentasI -> FieldByName("Total x5000" )->AsCurrency + TbVentasI -> FieldByName("Total x10000" )->AsCurrency + TbVentasI -> FieldByName("Total xvarios" )->AsCurrency; Label15->Caption = TotalC; Label16->Caption = TotalM; } //--------------------------------------------------------------------------- void __fastcall TTpvBlDVnt::SpeedButton7Click(TObject *Sender) { TQRBlcD_Print *QRResumenFact; QRResumenFact = new TQRBlcD_Print(this); QRResumenFact->Preview(); delete QRResumenFact; } //---------------------------------------------------------------------------