Aggiunta la gestione di stampa N copie dei documenti.

Corretta il filtro sui documenti nel caso non vengano
indicati estremi.


git-svn-id: svn://10.65.10.50/trunk@3503 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1996-09-04 07:30:33 +00:00
parent 2b9b39685b
commit 2badd9b34e
3 changed files with 42 additions and 25 deletions

View File

@ -8,6 +8,7 @@
#include <printer.h>
#include <utility.h>
#include <urldefid.h>
#include <progind.h>
#include "velib02.h"
@ -740,6 +741,7 @@ class TStampa_Doc_Vendita: public TApplication {
TString _codnum; // codice di numerazione
TString _provv; // stampa provvisioria
int _anno; // anno della documentazione
int _ncopie; // numero di copie per ogni documento
long _dalnum, _alnum; // estremi di numerazione dei documenti
TDate _dadata, _adata; // estremi di data dei documenti
bool _order_by_num; // flag che indica se e' stato selezionato l'ordine principale per numero documento
@ -852,6 +854,7 @@ bool TStampa_Doc_Vendita::create() {
_dalnum= atol(argv(5)); // il quarto è il numero di documento di partenza
_alnum= atol(argv(6)); // il quinto è il numero di documento di fine
_definitiva= (strcmp(argv(7), "D")==0); // il sesto è se la stampa è definitiva (rinumerazione dei documenti)
_ncopie = atoi(argv(8));
_interattivo= FALSE;
print();
} else { // oppure lancio della maschera
@ -885,6 +888,7 @@ int TStampa_Doc_Vendita::select() {
_provv= m.get(F_PROVV);
_dalnum= m.get_long(F_DA_NDOC);
_alnum= m.get_long(F_A_NDOC);
_ncopie = m.get_int(F_NCOPIE);
if (_alnum == 0) _alnum = 9999999L;
wdate = m.get(F_DA_DATADOC);
if (wdate.not_empty()) _dadata = wdate;
@ -926,7 +930,9 @@ void TStampa_Doc_Vendita::print() {
doc.put("PROVV", _provv);
doc.put("NDOC", _alnum);
if (!_order_by_num) doc.put("DATADOC", _adata);
doc.read(); // posiziona il file sul record
const int err = doc.read(); // posiziona il file sul record
if (err == _iseof) doc.last();
else if (err == _iskeynotfound) doc.prev();
const long num_lim_sup = doc.get_int("NDOC");
const TDate date_lim_sup = doc.get_date("DATADOC");
if (num_lim_sup > _alnum || (!_order_by_num && date_lim_sup < _adata))
@ -938,7 +944,9 @@ void TStampa_Doc_Vendita::print() {
printer().open(); // apre la stampante
TRectype arec= doc.curr(); // copia il record di fine cursore
cur.setregion(darec, arec); // imposta il filtro sul cursore di stampa (nell'ordine giusto :-)
TProgind pi(cur.items(),"Stampa documenti in corso...",FALSE,TRUE,10);
for (cur= 0; cur.pos()<cur.items(); ++cur) { // ciclo sugli elementi del cursore di stampa
pi.addstatus(1L);
tip.put("CODTAB", doc.get("TIPODOC")); // posiziona la tabella dei tipi di documento
int err=tip.read(); // legge la tabella
if (err==NOERR) { // se non ci sono errori procede con la stampa
@ -959,7 +967,8 @@ void TStampa_Doc_Vendita::print() {
TDocumentoEsteso * doc_est = new TDocumentoEsteso(cur.curr()); // istanzia TDocumentoEsteso sulla testata attuale
// Da implementare quando verra gestito il numero di copie
// const int ncopie = doc_est->get_int("NCOPIE"); // Numero di copie da stampare per questo documento
int ncopie = _ncopie == 0 ? doc_est->tipo().ncopie() : _ncopie; // Numero di copie da stampare per questo documento
if (ncopie == 0) ncopie = 1;
_form = new TDocVen_Form(nomeform, *_firmrel, doc_est); // istanzia il form, passandogli il documento. (la delete del documento e' nel ditruttore
const TString &modulo= _form->get_module_code(); // legge dal form il codice del modulo di carta per la stampa
if (modulo_prec.empty()) modulo_prec= modulo; // se siamo al primo passaggio la variabile di modulo precedente viene riempita
@ -978,8 +987,8 @@ void TStampa_Doc_Vendita::print() {
fcur.setregion(darec_r, arec_r); // setta il filtro sul cursore del form
fcur.set_filterfunction(filter_rows); // setta il filtro per escludere alcuni tipi riga indicati nel form
// Da implementare quando verra gestito il numero di copie
// for (int j=0; j<ncopie; j++)
_form->print(); // stampa il form corrente
for (int j=0; j<ncopie; j++)
_form->print(); // stampa il form corrente
if (_definitiva && (numerazione_definitiva(doc) != NOERR)) { // se la stampa è definitiva viene lanciata la procedura di rinumerazione
if (_interattivo) error_box("Non è possibile completare la procedura di numerazione definitiva dei documenti");
break;

View File

@ -1,6 +1,7 @@
#define F_CODNUM 101
#define F_ANNO 102
#define F_PROVV 103
#define F_NCOPIE 104
#define F_DATA_O_NUM 201

View File

@ -1,6 +1,6 @@
#include "ve1100.h"
PAGE "Stampa Documenti Vendita" -1 -1 40 19
PAGE "Stampa Documenti Vendita" -1 -1 40 20
STRING F_CODNUM 4 4
BEGIN
@ -20,38 +20,45 @@ BEGIN
CHECKTYPE REQUIRED
END
RADIOBUTTON F_DATA_O_NUM 20
BEGIN
PROMPT 1 3 "Selezione su "
ITEM "N|Numero" MESSAGE ENABLE,1@|CLEAR,2@
ITEM "D|Data" MESSAGE ENABLE,2@|CLEAR,1@
END
LIST F_PROVV 12
BEGIN
PROMPT 24 4 ""
ITEM "P|Provvisoria"
ITEM "D|Definitiva"
PROMPT 1 3 "Tipo numerazione "
ITEM "P|Provvisoria"
ITEM "D|Definitiva"
END
NUMBER F_NCOPIE 3
BEGIN
PROMPT 1 4 "Numero copie "
NUM_EXPR {(#THIS_FIELD >= 0)}
WARNING "Il numero di copie deve essere positivo"
END
RADIOBUTTON F_DATA_O_NUM 38
BEGIN
PROMPT 1 5 "Selezione su "
ITEM "N|Numero documento" MESSAGE ENABLE,1@|CLEAR,2@
ITEM "D|Data documento" MESSAGE ENABLE,2@|CLEAR,1@
END
GROUPBOX DLG_NULL 38 5
BEGIN
PROMPT 1 7 "Selezione per numero"
PROMPT 1 9 "Selezione per numero"
END
GROUPBOX DLG_NULL 38 5
BEGIN
PROMPT 1 12 "Selezione per data"
PROMPT 1 14 "Selezione per data"
END
NUMBER F_DA_NDOC 7 0
BEGIN
PROMPT 2 8 "Dal num. "
PROMPT 2 10 "Dal num. "
USE 33 KEY 1 SELECT (CODNUM==#F_CODNUM) && (ANNO==#F_ANNO) && (PROVV==#F_PROVV)
JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF
JOIN 13 TO 20 INTO COM=COMCF
INPUT CODNUM F_CODNUM SELECT
INPUT ANNO F_ANNO SELECT
INPUT CODNUM F_CODNUM
INPUT ANNO F_ANNO
INPUT NDOC F_DA_NDOC
INPUT PROVV F_PROVV
DISPLAY "Data@10" DATADOC
@ -65,12 +72,12 @@ END
NUMBER F_A_NDOC 7 0
BEGIN
PROMPT 2 10 "Al num. "
PROMPT 2 12 "Al num. "
USE 33 KEY 1 SELECT (CODNUM==#F_CODNUM) && (ANNO==#F_ANNO) && (PROVV==#F_PROVV)
JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF
JOIN 13 TO 20 INTO COM=COMCF
INPUT CODNUM F_CODNUM SELECT
INPUT ANNO F_ANNO SELECT
INPUT CODNUM F_CODNUM
INPUT ANNO F_ANNO
INPUT NDOC F_A_NDOC
INPUT PROVV F_PROVV
COPY DISPLAY F_DA_NDOC
@ -82,7 +89,7 @@ END
DATE F_DA_DATADOC
BEGIN
PROMPT 2 13 "Dalla data "
PROMPT 2 15 "Dalla data "
USE 33 KEY 3 SELECT (CODNUM==#F_CODNUM) && (ANNO==#F_ANNO) && (PROVV==#F_PROVV)
JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF
JOIN 13 TO 20 INTO COM=COMCF
@ -98,7 +105,7 @@ END
DATE F_A_DATADOC
BEGIN
PROMPT 2 15 "Alla data "
PROMPT 2 17 "Alla data "
COPY USE F_DA_DATADOC
INPUT CODNUM F_CODNUM
INPUT ANNO F_ANNO