Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :riporti CA da 5.0 (stampa commesse e mastrini)


git-svn-id: svn://10.65.10.50/trunk@17758 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2008-12-01 16:22:04 +00:00
parent e0d4518697
commit 6f66498571
3 changed files with 72 additions and 35 deletions

View File

@ -47,9 +47,21 @@ TMask_print_cms::TMask_print_cms()
bool TMask_print_cms::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
/* switch (o.dlg())
switch (o.dlg())
{
case F_DADATA:
case F_ANNO:
if (e == fe_modify && !o.empty())
{
TEsercizi_contabili esc;
TDate inies, fines;
if (esc.code2range(atoi(o.get()), inies, fines))
{
set(F_DADATA, inies);
set(F_ADATA, fines);
}
}
break;
/*case F_DADATA:
case F_ADATA:
if (e == fe_close)
{
@ -62,10 +74,10 @@ bool TMask_print_cms::on_field_event(TOperable_field& o, TField_event e, long jo
return error_box(TR("La data deve appartenere all'anno selezionato"));
}
}
break;
break;*/
default:
break;
}*/
}
return true;
}
@ -114,21 +126,37 @@ void TPrint_cms::main_loop()
if (anno > 0 || dadata.ok() || adata.ok() || cdc.full())
{
TString query;
//se ANNO è specificato sono possibili i casi:
//a) vengono specificate entrambe le date limite: cms con anno=ANNO,dadata>=DATAINIZIO,adata<=DATAFINE
//b) non vengono specificate entrambe le date limite: sono le cms con anno=ANNO
//c) specificata solo dadata: cms con anno=ANNO,dadata>=DATAINIZIO,finiscono quando gli pare
//d) specificata solo adata: cms con anno=ANNO,adata<=DATAIFINE,cominciano quando gli pare
//Se si vuole indicare periodi specifici non legati al campo anno si ottengono le commesse che,nel corso della...
//...loro vita,sono interessate dalle date indicate
//e) specificando adata prende le cms che abbiano DATAINIZIO>=dadata, ovvero che comincino dopo dadata
//f) specificando dadata prende le cms che abbiano DATAFINE<=adata, ovvero che terminino entro adata
if (query.full())
query << "&&";
if (dadata.ok() || adata.ok())
{
if (dadata.ok())
query << "(NUM(ANSI(DATAINIZIO))>=" << dadata.date2ansi() << ")";
if (dadata.ok() && adata.ok())
query << "&&";
if (adata.ok())
query << "(NUM(ANSI(DATAFINE))<=" << adata.date2ansi() << ")";
}
if (anno > 0)
{
if (query.full()) query << "&&";
if (query.full())
query << "&&";
query << "(ANNO='" << anno << "')";
}
if (adata.ok())
{
if (query.full()) query << "&&";
query << "(NUM(ANSI(DATAINIZIO))<=" << adata.date2ansi() << ")";
}
if (dadata.ok())
{
if (query.full()) query << "&&";
query << "(NUM(ANSI(DATAFINE))>=" << dadata.date2ansi() << ")";
}
if (cdc.full())
{
if (query.full()) query << "&&";

View File

@ -1,17 +1,7 @@
#include "ca1600a.h"
TOOLBAR "" 0 -2 0 2
BUTTON DLG_PRINT 10 2
BEGIN
PROMPT -12 -11 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -11 ""
END
TOOLBAR "topbar" 0 -2 0 2
#include <printbar.h>
ENDPAGE
PAGE "Stampa commesse" 0 0 0 -2
@ -40,23 +30,19 @@ BEGIN
DISPLAY "Data inizio esercizio" D0
DISPLAY "Data fine esercizio " D1
OUTPUT F_ANNO CODTAB
OUTPUT F_DADATA D0
OUTPUT F_ADATA D1
CHECKTYPE NORMAL
FLAGS "RZ"
MESSAGE EMPTY ENABLE,F_DADATA|ENABLE,F_ADATA
MESSAGE CLEAR,F_DADATA|CLEAR,F_ADATA
ADD NONE
END
DATE F_DADATA
BEGIN
PROMPT 17 14 "Da data "
PROMPT 17 14 "Da data inizio "
END
DATE F_ADATA
BEGIN
PROMPT 40 14 "A data "
PROMPT 48 14 "A data fine "
END
STRING F_REPORT 20

View File

@ -90,6 +90,18 @@ bool TPrint_mastrini_ca_mask::on_field_event(TOperable_field& o, TField_event e,
if (!test_compatible_report())
return error_box(TR("Impossibile trovare un report compatibile"));
}
break;
case F_ANNO:
if (e == fe_modify && !o.empty())
{
TEsercizi_contabili esc;
TDate inies, fines;
if (esc.code2range(atoi(o.get()), inies, fines))
{
set(F_DATAINI, inies);
set(F_DATAFIN, fines);
}
}
break;
case F_DATAINI:
case F_DATAFIN:
@ -187,6 +199,17 @@ bool TPrint_mastrini_ca_recordset::valid_record(const TRelation& rel) const
if ((_tipimov & tipomov_int) == 0)
return false;
//aggiunta 01/12/08; se non si specifica l'esercizio si DEVE tener conto della DATAREG e non della DATACOMP; quindi..
//..deve effettuare tale controllo e controllare se la datareg rientra nell'intervallo di date selezionato sulla maschera
if (_anno <= 0)
{
const TDate datareg = mov.get_date(MOVANA_DATAREG);
if (_dadata.ok() && datareg < _dadata)
return false;
if (_adata.ok() && datareg > _adata)
return false;
}
//..poi le righe (devono comparire solo le righe con cdc/cms/fsc che appaiono nello sheet)
const TRectype& rmov = rel.curr(LF_RMOVANA);
@ -224,12 +247,12 @@ void TPrint_mastrini_ca_recordset::set_custom_filter(TCursor& cur) const
if (_daconto.not_empty())
darec.put(RMOVANA_CODCONTO, _daconto);
if (_dadata.ok())
if (_dadata.ok() && _anno > 0)
darec.put(RMOVANA_DATACOMP, _dadata);
if (_aconto.not_empty())
arec.put(RMOVANA_CODCONTO, _aconto);
if (_adata.ok())
if (_adata.ok() && _anno > 0)
arec.put(RMOVANA_DATACOMP, _adata);
cur.setregion(darec, arec);