First commit 14/02/1999
This commit is contained in:
356
TpvVntGeneral.cpp
Normal file
356
TpvVntGeneral.cpp
Normal file
@ -0,0 +1,356 @@
|
||||
//---------------------------------------------------------------------------
|
||||
#include <vcl.h>
|
||||
#include <io.h>
|
||||
#pragma hdrstop
|
||||
|
||||
#include "TpvVntGeneral.h"
|
||||
#include "TpvVntCltQR.h"
|
||||
#include "TDlgBuscar.h"
|
||||
//---------------------------------------------------------------------------
|
||||
#pragma package(smart_init)
|
||||
#pragma link "ElastFrm"
|
||||
#pragma resource "*.dfm"
|
||||
TVntGeneral *VntGeneral;
|
||||
//---------------------------------------------------------------------------
|
||||
__fastcall TVntGeneral::TVntGeneral(TComponent* Owner)
|
||||
: TForm(Owner)
|
||||
{
|
||||
MinFechaFact = TDateTime::CurrentDate();
|
||||
MaxFechaFact = TDateTime::CurrentDate();
|
||||
|
||||
// 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<73> corrupta" );
|
||||
}
|
||||
|
||||
|
||||
MinFecha -> DateTime = MinFechaFact;
|
||||
MaxFecha -> DateTime = MaxFechaFact;
|
||||
|
||||
// La cabecera/cuerpo de ventas se generan uno por a<>o...
|
||||
TbEmpl -> Active = true;
|
||||
|
||||
FirstTime = true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
void __fastcall TVntGeneral::MinFechaChange(TObject *Sender)
|
||||
{
|
||||
MaxFechaFact = MaxFecha -> Date;
|
||||
|
||||
// Reajustamos el filtro...
|
||||
MinFechaFact = MinFecha -> Date;
|
||||
FiltrarFacturas();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TVntGeneral::MaxFechaChange(TObject *Sender)
|
||||
{
|
||||
MinFechaFact = MinFecha -> Date;
|
||||
|
||||
// Reajustamos el filtro...
|
||||
MaxFechaFact = MaxFecha -> Date;
|
||||
FiltrarFacturas();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TVntGeneral::SpeedButton1Click(TObject *Sender)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TVntGeneral::FiltrarFacturas(void)
|
||||
{
|
||||
TbClientes->Close();
|
||||
TbClientes->Active = true;
|
||||
|
||||
// Filtramos las facturas...
|
||||
TbVentasC->FilterOptions = TbVentasC->FilterOptions << foCaseInsensitive;
|
||||
TbVentasC->Filter = "([FechaFactura] >= '" + MinFechaFact + "' AND [FechaFactura] <= '" + MaxFechaFact +"')";
|
||||
TbVentasC->Filtered = true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TVntGeneral::DBGrid3DrawColumnCell(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 ( TbVentasCFacturaAbierta -> AsInteger > 0 )
|
||||
{
|
||||
DBGrid3 -> Canvas -> Font -> Color = clGreen;
|
||||
} else {
|
||||
if ( TbVentasC->FieldByName("TotalSin")->AsCurrency < 0 )
|
||||
DBGrid3 -> Canvas -> Font -> Color = clRed;
|
||||
}
|
||||
DBGrid3 -> DefaultDrawColumnCell( Rect, DataCol, Column, State );
|
||||
}
|
||||
if ( Column -> ID == 0 )
|
||||
{
|
||||
if ( TbVentasC->FieldByName("Contabilizada")->AsBoolean )
|
||||
DBGrid3->Canvas->StretchDraw( Rect, BtmLockShut );
|
||||
else
|
||||
DBGrid3->Canvas->StretchDraw( Rect, BtmLockOpen );
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TVntGeneral::FormActivate(TObject *Sender)
|
||||
{
|
||||
if ( FirstTime )
|
||||
FiltrarFacturas();
|
||||
FirstTime = false;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TVntGeneral::ImpagFactClick(TObject *Sender)
|
||||
{
|
||||
TodasFact->Enabled = true;
|
||||
ImpagFact->Enabled = false;
|
||||
|
||||
MinFecha->Enabled = false;
|
||||
MaxFecha->Enabled = false;
|
||||
|
||||
FiltrarFacturas();
|
||||
|
||||
PageControl1->ActivePage = (TTabSheet *)TabSheet2;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TVntGeneral::TodasFactClick(TObject *Sender)
|
||||
{
|
||||
#ifdef DEM001
|
||||
ShowMessage( "Esta funci<63>n ha sido deshabilitada para esta versi<73>n.\nPongase en contacto con el autor, si desea\nel m<>dulo correspondiente: Jose-David.Guillen@cs.us.es" );
|
||||
#else
|
||||
TodasFact->Enabled = false;
|
||||
ImpagFact->Enabled = true;
|
||||
|
||||
MinFecha->Enabled = true;
|
||||
MaxFecha->Enabled = true;
|
||||
|
||||
// Atencion refiltrar base de datos
|
||||
FiltrarFacturas();
|
||||
#endif
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TVntGeneral::dbgFraccionDrawColumnCell(TObject *Sender,
|
||||
const TRect &Rect, int DataCol, TColumn *Column,
|
||||
TGridDrawState State)
|
||||
{
|
||||
if ( Column -> ID == 0 )
|
||||
{
|
||||
if ( TbCartera->FieldByName("Pagado")->AsBoolean )
|
||||
{
|
||||
dbgFraccion->Canvas->StretchDraw( Rect, BtmOK );
|
||||
} else {
|
||||
dbgFraccion->Canvas->Brush->Color = clWindow;
|
||||
dbgFraccion->Canvas->FillRect( Rect );
|
||||
}
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TVntGeneral::dbgFraccionCellClick(TColumn *Column)
|
||||
{
|
||||
bool Pagado;
|
||||
|
||||
if ( Column -> ID == 0 )
|
||||
{
|
||||
if ( TbVentasCFacturaAbierta -> AsInteger > 0 )
|
||||
{
|
||||
ShowMessage( "Atenci<EFBFBD>n: La factura actual esta abierta en alg<6C>n\nterminal. Cierrela antes de intentar modificarla.");
|
||||
} else {
|
||||
Pagado = TbCartera->FieldByName("Pagado")->AsBoolean;
|
||||
if ( Pagado )
|
||||
if( MessageDlg( "Atenci<EFBFBD>n, est<73> apunto de desactivar el\npago correspondiente a esta l<>nea...\n<EFBFBD>Realmente desea continuar?", mtWarning, TMsgDlgButtons() << mbNo << mbYes, 0 ) == mrNo )
|
||||
return;
|
||||
TbCartera -> Edit();
|
||||
TbCartera -> FieldByName("Pagado") -> AsBoolean = !Pagado;
|
||||
TbCartera -> Post();
|
||||
}
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TVntGeneral::FormClose(TObject *Sender, TCloseAction &Action)
|
||||
{
|
||||
// Destruimos la imagen de OK!
|
||||
delete BtmOK;
|
||||
delete BtmLockOpen;
|
||||
delete BtmLockShut;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TVntGeneral::TbVentasCCalcFields(TDataSet *DataSet)
|
||||
{
|
||||
TbVentasC->FieldByName("SumaTotal")->AsCurrency = TbVentasC->FieldByName("TotalSin")->AsCurrency + TbVentasC->FieldByName("TotalIva")->AsCurrency;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TVntGeneral::DsVentasCDataChange(TObject *Sender,
|
||||
TField *Field)
|
||||
{
|
||||
cbFormaPago->ItemIndex = TbCartera->FieldByName("FormaPago")->AsInteger;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TVntGeneral::TbClientesBeforeOpen(TDataSet *DataSet)
|
||||
{
|
||||
TbClientes->SQL->Clear();
|
||||
|
||||
if ( TodasFact->Enabled )
|
||||
{
|
||||
// SOLO LOS CLIENTES QUE TENGAN FACTURAS IMPAGADAS....
|
||||
TbClientes->SQL->Add( "SELECT DISTINCT VentasCabecera.Cod"+CodCliente+" ID, ((Personas.Nombre+', ')+Personas.Apellidos) Nombre, Personas.Empresa " );
|
||||
TbClientes->SQL->Add( "FROM \"personas.DB\" Personas, \""+TbCartera->TableName+"\" Tb_cartera, \""+TbVentasC->TableName+"\" VentasCabecera" );
|
||||
TbClientes->SQL->Add( "WHERE (Tb_cartera.Pagado = FALSE)");
|
||||
TbClientes->SQL->Add( " AND (Tb_cartera.EnlaceFactura = VentasCabecera.EnlaceFactura)");
|
||||
TbClientes->SQL->Add( " AND (Personas.CodCliente1 = VentasCabecera.Cod"+CodCliente+")");
|
||||
} else {
|
||||
TbClientes->SQL->Add( "SELECT DISTINCT VentasCabecera.Cod"+CodCliente+" ID, Personas.Nombre, Personas.Apellidos, Personas.Empresa, SUM( VentasCabecera.TotalSin + VentasCabecera.TotalIva ) VentasCabecera.\"Total Fact.\" " );
|
||||
TbClientes->SQL->Add( "FROM \""+TbVentasC->TableName+"\" VentasCabecera" );
|
||||
TbClientes->SQL->Add( " INNER JOIN \"personas.DB\" Personas");
|
||||
TbClientes->SQL->Add( " ON (VentasCabecera.Cod"+CodCliente+" = Personas.CodCliente1)");
|
||||
TbClientes->SQL->Add( "WHERE (VentasCabecera.FechaFactura >= '"+MinFechaFact.FormatString("mm/dd/yyyy")+"') \
|
||||
AND (VentasCabecera.FechaFactura <= '"+MaxFechaFact.FormatString("mm/dd/yyyy")+"') ");
|
||||
TbClientes->SQL->Add( "GROUP BY VentasCabecera.Cod"+CodCliente+", Personas.Nombre, Personas.Apellidos, Personas.Empresa");
|
||||
TbClientes->SQL->Add( "ORDER BY VentasCabecera.\"Total Fact.\" DESC");
|
||||
|
||||
/*
|
||||
SELECT DISTINCT VentasCabecera.CodCliente CodCliente1, ((Personas.Nombre+', ')+Personas.Apellidos) Nombre, Personas.Empresa
|
||||
FROM "Ventas (cabecera).db" VentasCabecera, "personas.DB" Personas
|
||||
WHERE (VentasCabecera.FechaFactura >= '01/27/2001')
|
||||
AND (VentasCabecera.FechaFactura <= '01/27/2001')
|
||||
AND (VentasCabecera.CodCliente = Personas.CodCliente1)
|
||||
|
||||
*/
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TVntGeneral::TbCarteraBeforeDelete(TDataSet *DataSet)
|
||||
{
|
||||
Abort();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TVntGeneral::TbCarteraBeforeInsert(TDataSet *DataSet)
|
||||
{
|
||||
Abort();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TVntGeneral::FormResize(TObject *Sender)
|
||||
{
|
||||
if ( DBGrid3->Columns->Items[0]->Width != 16 )
|
||||
DBGrid3->Columns->Items[0]->Width = 16;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TVntGeneral::SpeedButton7Click(TObject *Sender)
|
||||
{
|
||||
/*
|
||||
TVntCltQR *QR;
|
||||
QR = new TVntCltQR(this);
|
||||
QR->QuickRep1->Preview();
|
||||
delete QR;
|
||||
*/
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TVntGeneral::DBGrid3DblClick(TObject *Sender)
|
||||
{
|
||||
|
||||
|
||||
if ( ! TbVentasF -> Active ) return;
|
||||
|
||||
|
||||
// Si no esta facturada...
|
||||
if ( ! TbVentasC->FieldByName("Contabilizada")->AsBoolean )
|
||||
{
|
||||
VTabs[0] = TabSheet1->Visible;
|
||||
VTabs[1] = TabSheet2->Visible;
|
||||
TabSheet1->Visible = false;
|
||||
TabSheet2->Visible = false;
|
||||
TabSheet3->Visible = true;
|
||||
// Mostrar la posibilidad de facturar
|
||||
// cambiar el cliente asignado
|
||||
// o ambas cosas
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TVntGeneral::Button2Click(TObject *Sender)
|
||||
{
|
||||
TabSheet1->Visible = VTabs[0];
|
||||
TabSheet2->Visible = VTabs[1];
|
||||
TabSheet3->Visible = false;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TVntGeneral::Button1Click(TObject *Sender)
|
||||
{
|
||||
TbVentasC -> Edit();
|
||||
|
||||
if ( Facturar->Checked )
|
||||
{
|
||||
if ( TbVentasF -> Active )
|
||||
{
|
||||
TbVentasF->Last();
|
||||
int NumFactura;
|
||||
NumFactura = TbVentasF->FieldByName( "idF" )->AsInteger + 1;
|
||||
TbVentasF->InsertRecord( ARRAYOFCONST( ( NumFactura, TbVentasC->FieldByName( "EnlaceFactura" )->AsInteger, true ) ) );
|
||||
|
||||
if ( NewClient != -1 )
|
||||
TbVentasC -> FieldByName( "CodCliente" ) -> AsInteger = NewClient;
|
||||
TbVentasC -> FieldByName( "CodFactura" ) -> AsInteger = NumFactura;
|
||||
TbVentasC -> FieldByName( "FechaFactura" ) -> AsDateTime = TDateTime::CurrentDate();
|
||||
}
|
||||
TbVentasC -> FieldByName("Contabilizada")->AsBoolean = true;
|
||||
}
|
||||
|
||||
TbVentasC -> Post();
|
||||
|
||||
Button2Click(0);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
void __fastcall TVntGeneral::SpeedButton9Click(TObject *Sender)
|
||||
{
|
||||
// Mostramos la zona de busqueda de clientes...
|
||||
// Mostramos el dialogo, buscar Vendedores
|
||||
TDlgBuscar *DlgBuscar;
|
||||
|
||||
DlgBuscar = new TDlgBuscar(this);
|
||||
DlgBuscar -> DefaultField = "Nombre";
|
||||
DlgBuscar -> TbBusquedas -> TableName = "personas.DB";
|
||||
DlgBuscar -> TbBusquedas -> Active = true;
|
||||
|
||||
DlgBuscar -> ShowModal();
|
||||
|
||||
if ( DlgBuscar -> ModalResult == mrOk )
|
||||
{
|
||||
Label12->Caption = DlgBuscar -> TbBusquedas -> FieldByName("Nombre")->AsString + " " +
|
||||
DlgBuscar -> TbBusquedas -> FieldByName("Apellidos")->AsString;
|
||||
NewClient = DlgBuscar -> TbBusquedas -> FieldByName("CodCliente1" ) -> AsInteger;
|
||||
}
|
||||
|
||||
delete DlgBuscar;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TVntGeneral::TabSheet3Enter(TObject *Sender)
|
||||
{
|
||||
|
||||
NewClient = -1;
|
||||
Label12->Caption = "(sin cambios)";
|
||||
|
||||
Label11->Caption = "(sin cambios)";
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
Reference in New Issue
Block a user