//--------------------------------------------------------------------------- #include #pragma hdrstop #include "TpvBlcMVnt.h" #include "TpvVntClt.h" #include "TpvVntEmpl.h" #include "TpvVntProd.h" #include "TpvVntFctPrint.h" #include "TpvBlcM_PrintFact.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "ElastFrm" #pragma resource "*.dfm" TBlMVnt *BlMVnt; //--------------------------------------------------------------------------- __fastcall TBlMVnt::TBlMVnt(TComponent* Owner) : TForm(Owner) { // Cargamos la imagen OK! try { BtmOK = new Graphics::TBitmap(); BtmOK -> LoadFromFile( "Systm\\ok.bmp" ); BtmLockOpen = new Graphics::TBitmap(); BtmLockOpen -> LoadFromFile( "Systm\\lockopen.bmp" ); BtmLockShut = new Graphics::TBitmap(); BtmLockShut -> LoadFromFile( "Systm\\lockshut.bmp" ); } catch (...) { ShowMessage( "Error: La imagen OK! está corrupta" ); } Word Year, Month, Day; TDateTime dtPresent = Now(); DecodeDate(dtPresent, Year, Month, Day); FechaCajaMin -> Date = EncodeDate( Year, Month, 1); FechaCaja -> Date = dtPresent; FechaCajaChange( 0 ); } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::ProductosClick(TObject *Sender) { TVntProd *TpvVntProd; Visible = false; TpvVntProd = new TVntProd(this); TpvVntProd -> MinFechaFact = FechaCajaMin -> DateTime; TpvVntProd -> MaxFechaFact = FechaCaja -> DateTime; TpvVntProd -> MinFecha -> DateTime = FechaCajaMin -> DateTime; TpvVntProd -> MaxFecha -> DateTime = FechaCaja -> DateTime; TpvVntProd -> MinFecha -> Enabled = false; TpvVntProd -> MaxFecha -> Enabled = false; TpvVntProd -> FiltrarFacturas(); TpvVntProd -> ShowModal(); Visible = true; delete TpvVntProd; } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::EmpleadosClick(TObject *Sender) { TVntClt *TpvVntClt; Visible = false; TpvVntClt = new TVntClt(this); TpvVntClt -> MinFechaFact = FechaCajaMin -> DateTime; TpvVntClt -> MinFechaFact = FechaCaja -> DateTime; TpvVntClt -> MaxFechaFact = FechaCaja -> DateTime; TpvVntClt -> MinFecha -> DateTime = FechaCajaMin -> 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 TBlMVnt::ClientesClick(TObject *Sender) { TVntEmpl *VentasEmpl; Visible = false; VentasEmpl = new TVntEmpl(this); VentasEmpl -> MinFechaFact = FechaCajaMin -> DateTime; VentasEmpl -> MinFechaFact = FechaCaja -> DateTime; VentasEmpl -> MaxFechaFact = FechaCaja -> DateTime; VentasEmpl -> MinFecha -> DateTime = FechaCajaMin -> 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 TBlMVnt::FechaCajaChange(TObject *Sender) { QVentasC->Close(); QVentasR->Close(); QComprasC->Close(); QComprasR->Close(); QVentasEmpleados->Close(); QVentasC->Active = true; QVentasR->Active = true; QComprasC->Active = true; QComprasR->Active = true; QVentasEmpleados->Active = true; Currency Ventas, Compras; ProgressBar1->Position = 0; ProgressBar1->Max = QVentasR->RecordCount + QComprasR->RecordCount; ProgressBar1->Visible = true; // Recorremos las ventas Ventas = 0; QVentasR->First(); while ( ! QVentasR -> Eof ) { ProgressBar1->Position++; Ventas += QVentasR->FieldByName("Total")->AsCurrency; QVentasR ->Next(); } // Recorremos las compras Compras = 0; QComprasR->First(); while ( ! QComprasR -> Eof ) { ProgressBar1->Position++; Compras += QComprasR->FieldByName("Total")->AsCurrency; QComprasR ->Next(); } TotalVentas->Caption = FormatCurr("###,###,###.#0", Ventas ); TotalCompras->Caption = FormatCurr("###,###,###.#0", Compras ); Beneficio->Caption = FormatCurr("###,###,###.#0", (Ventas - Compras) ); ProgressBar1->Visible = false; } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::DBGridVentasDrawColumnCell(TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State) { // Verde ] si el albaran/factura esta abiert@ // Rojo ] los abonos o albaranes con perdidas if ( ! State.Contains(gdSelected) ) { if ( QVentasC->FieldByName("FacturaAbierta")-> AsInteger > 0 ) { DBGridVentas -> Canvas -> Font -> Color = clGreen; } else { if ( QVentasC->FieldByName("Base")->AsCurrency < 0 ) DBGridVentas -> Canvas -> Font -> Color = clRed; } DBGridVentas -> DefaultDrawColumnCell( Rect, DataCol, Column, State ); } if ( Column->DisplayName == "C" ) { if ( QVentasC->FieldByName("C")->AsBoolean ) DBGridVentas->Canvas->StretchDraw( Rect, BtmLockShut ); else DBGridVentas->Canvas->StretchDraw( Rect, BtmLockOpen ); } else if ( Column->DisplayName == "Fecha" ) { if ( ! State.Contains(gdSelected) ) { DBGridVentas -> Canvas -> Brush -> Color = clMenu; DBGridVentas -> DefaultDrawColumnCell( Rect, DataCol, Column, State ); } } } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::SpeedButton1Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::DBGridComprasDrawColumnCell(TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State) { // Rojo ] los abonos o albaranes con perdidas if ( ! State.Contains(gdSelected) ) { if ( QComprasC->FieldByName("Base")->AsCurrency < 0 ) DBGridCompras -> Canvas -> Font -> Color = clRed; DBGridCompras -> DefaultDrawColumnCell( Rect, DataCol, Column, State ); } if ( Column->DisplayName == "C" ) { if ( QComprasC->FieldByName("C")->AsBoolean ) DBGridCompras->Canvas->StretchDraw( Rect, BtmLockShut ); else DBGridCompras->Canvas->StretchDraw( Rect, BtmLockOpen ); } else if ( Column->DisplayName == "Fecha" ) { if ( ! State.Contains(gdSelected) ) { DBGridCompras -> Canvas -> Brush -> Color = clMenu; DBGridCompras -> DefaultDrawColumnCell( Rect, DataCol, Column, State ); } } } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::QVentasCAfterOpen(TDataSet *DataSet) { DBGridVentas->Columns->Items[0]->Width = 16; // Recalculamos la gráfica... } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::QComprasCAfterOpen(TDataSet *DataSet) { DBGridCompras->Columns->Items[0]->Width = 16; } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::QVentasCBeforeOpen(TDataSet *DataSet) { QVentasC->SQL->Clear(); QVentasC->SQL->Add( "SELECT VentasCabecera.Contabilizada C, VentasCabecera.FechaFactura Fecha, VentasCabecera.CodFactura, (VentasCabecera.TotalSin + VentasCabecera.TotalIVA) Importe, VentasCabecera.CodCliente, ((Personas.Nombre+', ')+Personas.Apellidos) Nombre, Personas.Empresa, VentasCabecera.FacturaAbierta, VentasCabecera.TotalSin Base, VentasCabecera.TotalIVA IVA" ); QVentasC->SQL->Add( "FROM \"Ventas (cabecera).db\" VentasCabecera, \"personas.DB\" Personas" ); QVentasC->SQL->Add( "WHERE (VentasCabecera.FechaFactura BETWEEN '"+FechaCajaMin->Date.FormatString("mm/dd/yyyy")+"' AND '"+FechaCaja->Date.FormatString("mm/dd/yyyy")+"') \ AND (VentasCabecera.CodCliente = Personas.CodCliente1) "); } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::QVentasRBeforeOpen(TDataSet *DataSet) { QVentasR->SQL->Clear(); QVentasR->SQL->Add( "SELECT FechaFactura Fecha, SUM( TotalSin ) Base, SUM( TotalIVA ) IVA, SUM( TotalIva + TotalSin ) Total"); QVentasR->SQL->Add( "FROM \"Ventas (cabecera).DB\" VentasCabecera"); QVentasR->SQL->Add( "WHERE (VentasCabecera.FechaFactura BETWEEN '"+FechaCajaMin->Date.FormatString("mm/dd/yyyy")+"' AND '"+FechaCaja->Date.FormatString("mm/dd/yyyy")+"')"); QVentasR->SQL->Add( "GROUP BY FechaFactura"); } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::QComprasCBeforeOpen(TDataSet *DataSet) { QComprasC->SQL->Clear(); QComprasC->SQL->Add( "SELECT VentasCabecera.Contabilizada C, VentasCabecera.FechaFactura Fecha, VentasCabecera.CodFactura, (VentasCabecera.TotalSin + VentasCabecera.TotalIVA) Importe, VentasCabecera.CodProveedor, ((Personas.Nombre+', ')+Personas.Apellidos) Nombre, Personas.Empresa, VentasCabecera.TotalSin Base, VentasCabecera.TotalIVA IVA" ); QComprasC->SQL->Add( "FROM \"Compras (cabecera).db\" VentasCabecera, \"personas.DB\" Personas" ); QComprasC->SQL->Add( "WHERE (VentasCabecera.FechaFactura BETWEEN '"+FechaCajaMin->Date.FormatString("mm/dd/yyyy")+"' AND '"+FechaCaja->Date.FormatString("mm/dd/yyyy")+"') \ AND (VentasCabecera.CodProveedor = Personas.CodCliente1) "); } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::QComprasRBeforeOpen(TDataSet *DataSet) { QComprasR->SQL->Clear(); QComprasR->SQL->Add( "SELECT FechaFactura Fecha, SUM( TotalSin ) Base, SUM( TotalIVA ) IVA, SUM( TotalIva + TotalSin ) Total"); QComprasR->SQL->Add( "FROM \"Compras (cabecera).DB\" ComprasCabecera"); QComprasR->SQL->Add( "WHERE (ComprasCabecera.FechaFactura BETWEEN '"+FechaCajaMin->Date.FormatString("mm/dd/yyyy")+"' AND '"+FechaCaja->Date.FormatString("mm/dd/yyyy")+"')"); QComprasR->SQL->Add( "GROUP BY FechaFactura"); } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::QVentasEmpleadosBeforeOpen(TDataSet *DataSet) { QVentasEmpleados->SQL->Clear(); QVentasEmpleados->SQL->Add( "SELECT Personas.Apellidos, Personas.Nombre, SUM( Ventas.TotalSin ) Base, SUM( Ventas.TotalIva ) IVA, SUM( Ventas.TotalSin + Ventas.TotalIva ) Total"); QVentasEmpleados->SQL->Add( "FROM \"Ventas (cabecera).DB\" Ventas, \"personas.DB\" Personas"); QVentasEmpleados->SQL->Add( "WHERE ( Ventas.FechaFactura BETWEEN '"+FechaCajaMin->Date.FormatString("mm/dd/yyyy")+"' AND '"+FechaCaja->Date.FormatString("mm/dd/yyyy")+"' ) \ AND (Ventas.CodEmpleado = Personas.CodCliente1) \ GROUP BY Personas.Apellidos, Personas.Nombre"); } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::bGraficasClick(TObject *Sender) { POINT MousePos; if ( GetCursorPos(&MousePos) ) { mGraficas->PopupComponent = bGraficas; mGraficas->Popup( bGraficas->Left + Left, bGraficas->Height * 2 + Top); mGraficas->PopupComponent = 0; } } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::MostrarVentasClick(TObject *Sender) { MostrarVentas->Checked = !MostrarVentas->Checked; // Ajustamos la grafica de totales... DBChart1 -> Series[0] -> Active = MostrarVentas->Checked; } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::MostrarComprasClik(TObject *Sender) { MostrarCompras->Checked = !MostrarCompras->Checked; // Ajustamos la grafica de totales... DBChart1 -> Series[1] -> Active = MostrarCompras->Checked; } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::bImpresionClick(TObject *Sender) { POINT MousePos; if ( GetCursorPos(&MousePos) ) { mImpresion->PopupComponent = bImpresion; mImpresion->Popup( bImpresion->Left + Left, bImpresion->Height * 2 + Top); mImpresion->PopupComponent = 0; } } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::VentasResumen1Click(TObject *Sender) { TQRListadoFacturas *QRResumenFact; QRResumenFact = new TQRListadoFacturas(this); QRResumenFact->DataSet = QVentasR; QRResumenFact->QRLabel1->Caption = "Resumen Facturas Ventas"; QRResumenFact->Preview(); delete QRResumenFact; } //--------------------------------------------------------------------------- void __fastcall TBlMVnt::ComprasResumen1Click(TObject *Sender) { TQRListadoFacturas *QRResumenFact; QRResumenFact = new TQRListadoFacturas(this); QRResumenFact->Preview(); delete QRResumenFact; } //---------------------------------------------------------------------------