//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "cuentaPolizas.h"
#include "clientes.h"
#include "imprimirCuentaPolizas.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "ZAbstractDataset"
#pragma link "ZAbstractRODataset"
#pragma link "ZDataset"
#pragma resource "*.dfm"
TgestionCuentaPolizas *gestionCuentaPolizas;
//---------------------------------------------------------------------------
__fastcall TgestionCuentaPolizas::TgestionCuentaPolizas(TComponent* Owner)
        : TForm(Owner)
{
  // Cargamos el listado de agentes disponibles
  TZQuery *zquery;
  zquery = new TZQuery(this);
  zquery->Connection = gestionClientes->ZConnection1;
  zquery->SQL->Clear();
  zquery->SQL->Add("SELECT id,nombre FROM agentes ORDER BY nombre");
  zquery->Active=zquery->Connection->Connected;

   srch_agentes->Items->Clear();
   while(!zquery->Eof)
   {
      srch_agentes->Items->AddObject(zquery->FieldByName("nombre")->AsString,(TObject *)(zquery->FieldByName("id")->AsInteger));
      zquery->Next();
   }
   srch_agentes->ItemIndex = 0;

   unsigned short yyyy,mm,dd;
   TDateTime::CurrentDate().DecodeDate(&yyyy,&mm,&dd);
   srch_mes->ItemIndex = mm-1;
   UpDown1->Position = yyyy;

   execFilter(NULL);
}
//---------------------------------------------------------------------------
void __fastcall TgestionCuentaPolizas::zqCuentaPolizasNewRecord(
      TDataSet *DataSet)
{
  AnsiString fecha;
  fecha = "1/"+AnsiString(srch_mes->ItemIndex+1)+"/"+AnsiString(UpDown1->Position);
  zqCuentaPolizas->FieldByName("fecha")->AsDateTime = TDateTime::TDateTime(fecha);

  int agente;
  agente = (int)srch_agentes->Items->Objects[srch_agentes->ItemIndex];
  zqCuentaPolizas->FieldByName("agente")->AsInteger = agente;

}
//---------------------------------------------------------------------------
void __fastcall TgestionCuentaPolizas::execFilter(TObject *Sender)
{
  int agente;
  if ( srch_agentes->ItemIndex<0 ) return; 
  agente = (int)srch_agentes->Items->Objects[srch_agentes->ItemIndex];

  AnsiString where,orderBy,query;

  AnsiString desde, hasta;
  desde = Format("%.4d-%.2d-01", ARRAYOFCONST((UpDown1->Position,(srch_mes->ItemIndex+1))) );
  if ( srch_mes->ItemIndex==11 )
          hasta = Format("%.4d-01-01", ARRAYOFCONST((UpDown1->Position+1)) );
  else
          hasta = Format("%.4d-%.2d-01", ARRAYOFCONST((UpDown1->Position,(srch_mes->ItemIndex+2))) );



  where = " WHERE fecha>='"+desde+"' AND fecha<'"+hasta+"' AND agente="+agente;
  orderBy = " ORDER BY fecha ASC";

  query = "SELECT id,agente,fecha,nombre,numPoliza,primaNeta,comision,puntos";
  query+=" FROM cuentaPolizas";
  query+=where;
  query+=orderBy;

  zqCuentaPolizas->SQL->Clear();
  zqCuentaPolizas->SQL->Add(query);
  zqCuentaPolizas->Active = zqCuentaPolizas->Connection->Connected;

  Currency totalPrimaNeta, totalComision, totalPuntos;
  totalPrimaNeta=0; totalComision=0; totalPuntos=0;
  zqCuentaPolizas->First();
  while(!zqCuentaPolizas->Eof){
        totalPrimaNeta+=zqCuentaPolizas->FieldByName("primaNeta")->AsCurrency;
        totalComision+=zqCuentaPolizas->FieldByName("comision")->AsCurrency;
        totalPuntos+=zqCuentaPolizas->FieldByName("puntos")->AsCurrency;
        zqCuentaPolizas->Next();
  }

  lbTotalPolizas->Caption = zqCuentaPolizas->RecordCount;
  lbTotalPrimaNeta->Caption = AnsiString(totalPrimaNeta);
  lbTotalComision->Caption = AnsiString(totalComision);
  lbTotalPuntos->Caption = AnsiString(totalPuntos);

}
//---------------------------------------------------------------------------
void __fastcall TgestionCuentaPolizas::SpeedButton1Click(TObject *Sender)
{
  if ( srch_mes->ItemIndex==0 ) {
        srch_mes->ItemIndex=11;
        UpDown1->Position--;
  } else
        srch_mes->ItemIndex--;
  execFilter(NULL);
}
//---------------------------------------------------------------------------
void __fastcall TgestionCuentaPolizas::SpeedButton2Click(TObject *Sender)
{
  if ( srch_mes->ItemIndex==11 ) {
        srch_mes->ItemIndex=0;
        UpDown1->Position++;
  } else
        srch_mes->ItemIndex++;
  execFilter(NULL);
}
//---------------------------------------------------------------------------
void __fastcall TgestionCuentaPolizas::BitBtn2Click(TObject *Sender)
{
  TimprCuentaPolizas *i;
  i = new TimprCuentaPolizas(this);
  i->qrlbFecha->Caption = AnsiString(UpDown1->Position)+" - "+srch_mes->Items->Strings[srch_mes->ItemIndex];
  i->qrlbAgente->Caption = srch_agentes->Items->Strings[srch_agentes->ItemIndex];
  i->QuickRep1->DataSet = zqCuentaPolizas;  
  i->QuickRep1->Preview();
  delete i;
}
//---------------------------------------------------------------------------
