TPVwin/TpvBlcMVnt.cpp
2021-09-12 22:19:30 +02:00

342 lines
13 KiB
C++

//---------------------------------------------------------------------------
#include <vcl.h>
#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;
}
//---------------------------------------------------------------------------