Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : Stampa cartellini Tetractis git-svn-id: svn://10.65.10.50/branches/R_10_00@22198 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									4a30114a85
								
							
						
					
					
						commit
						cb754c78ca
					
				
							
								
								
									
										16
									
								
								ps/pl1048100.alx
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										16
									
								
								ps/pl1048100.alx
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,16 @@ | ||||
| : MESSAGE_CARTPARENTDOC ( n1 -- ) | ||||
|    CART_PARENT_DOC     \ user defined word in ve1.exe | ||||
| ; | ||||
| 
 | ||||
| : MESSAGE_CARTPARENTROW ( n1 -- ) | ||||
|   CART_PARENT_ROW     \ user defined word in ve1.exe | ||||
| ; | ||||
| 
 | ||||
| : MESSAGE_CURRCONT ( -- -- ) | ||||
|   CURRCONT | ||||
| ; | ||||
| 
 | ||||
| : MESSAGE_CONTNUM ( -- -- ) | ||||
|   CONTNUM | ||||
| ; | ||||
| 
 | ||||
							
								
								
									
										249
									
								
								ps/pl1048100.cpp
									
									
									
									
									
								
							
							
						
						
									
										249
									
								
								ps/pl1048100.cpp
									
									
									
									
									
								
							| @ -132,7 +132,7 @@ bool TCartellini_report::msg_contnum(TVariant_stack& stack) | ||||
| 
 | ||||
| size_t TCartellini_report::get_usr_words(TString_array& words) const | ||||
| { | ||||
|   TReport::get_usr_words(words); | ||||
|   TDocument_report::get_usr_words(words); | ||||
|    | ||||
|   const char* const name[] = { "CART_PARENT_DOC", "CART_PARENT_ROW", "CURRCONT", "CONTNUM", NULL }; | ||||
| 
 | ||||
| @ -146,7 +146,7 @@ size_t TCartellini_report::get_usr_words(TString_array& words) const | ||||
| bool TCartellini_report::execute_usr_word(unsigned int opcode, TVariant_stack& stack) | ||||
| { | ||||
|   if (opcode < _first_msg) | ||||
|     return TReport::execute_usr_word(opcode, stack); | ||||
|     return TDocument_report::execute_usr_word(opcode, stack); | ||||
|   opcode -= _first_msg; | ||||
|   switch (opcode) | ||||
|   { | ||||
| @ -173,11 +173,40 @@ public: | ||||
| 	const real perc() const {return _perc;} | ||||
| 	real & perc() { return _perc;} | ||||
| 
 | ||||
| 	TCarrello(const char * key) : TRecord_array(key, LF_PACKLIST) {} | ||||
| 	TCarrello(const char * key) : TRecord_array(key, LF_PACKLIST) { } | ||||
| }; | ||||
| 
 | ||||
| static TLaundry_contract * __contract = NULL; | ||||
| 
 | ||||
| class TCrea_cartellini : public TSkeleton_application | ||||
| { | ||||
| 	TDocumento * _doc; | ||||
| 	int _contnum; | ||||
| 
 | ||||
| private: | ||||
|      | ||||
| protected: | ||||
|   virtual const char * extra_modules() const { return "ba"; } | ||||
| 	const TDocumento & doc() const { return *_doc;} | ||||
|   virtual void main_loop(); | ||||
| 	void crea_precedenze(ofstream & outfile, TArray & precs); | ||||
| 	void crea_carrelli(TArray & precs); | ||||
| 	void riempi_max(TArray & carrelli, TArray & precs); | ||||
| 	void resto_max(TArray & carrelli, TArray & precs); | ||||
| 	void riempi_normale(TArray & carrelli, TArray & precs, int level); | ||||
| 	void riempi_resti(TArray & carrelli, TArray & precs); | ||||
| 
 | ||||
| public: | ||||
| 	const TDocumento & doc() { return *_doc; } | ||||
| 	void ottimizza(const char * dir); | ||||
| 	void stampa(); | ||||
| 	bool set_params(); | ||||
| 	bool set_params(const TMask & m); | ||||
| }; | ||||
| 
 | ||||
| // restituisce un riferimento all' applicazione
 | ||||
| inline TCrea_cartellini & app() { return (TCrea_cartellini &) main_app();} | ||||
| 
 | ||||
| class TPrecedenza : public TObject | ||||
| { | ||||
| 	int _tipoart; | ||||
| @ -232,8 +261,9 @@ public: | ||||
| const char * TPrecedenza::key_carrello(int num) const | ||||
| { | ||||
| 	TString & key = get_tmp_string(25); | ||||
| 	TString4 codnum(_codnum); codnum.left_just(4, '_'); | ||||
| 
 | ||||
| 	key.format("%s|%c%04d%-4s%-6ld%04d", (const char *) tipo_contenitore(), _provv, _anno, _codnum, _ndoc, num); | ||||
| 	key.format("%s|%c%04d%s%06ld%04d", (const char *) tipo_contenitore(), _provv, _anno, (const char *) codnum, _ndoc, num); | ||||
| 	return key; | ||||
| } | ||||
| 
 | ||||
| @ -244,9 +274,9 @@ TPrecedenza::TPrecedenza(const char * codart, int anno, char provv, const char * | ||||
| 	const bool separa_articoli = cache().get("&LV020", key).get_bool(ARTSEP); | ||||
| 
 | ||||
| 	_tipoart = separa_articoli ? atoi(cache().get("&LV047", codart, TPARTICOLO)) : 0; | ||||
| 	if (__contract = NULL) | ||||
| 	if (__contract == NULL) | ||||
| 	{ | ||||
| 		TString key; key.format("%c|%d|%S|%ld", _provv, _anno, _codnum, _ndoc); | ||||
| 		TString key; key.format("%c|%d|%s|%ld", _provv, _anno, (const char *) _codnum, _ndoc); | ||||
| 		__contract = new TLaundry_contract(_codcf, 0, TDate(cache().get(LF_DOC, key, DOC_DATADOC))); | ||||
| 	} | ||||
| 	const TRectype & rec = __contract->row(_codart); | ||||
| @ -365,8 +395,10 @@ real TPrecedenza::get_pacchi_max() const | ||||
| 	real pppacco = cached_article(_codart).get(ANAMAG_PPCONF); | ||||
| 	 | ||||
| 	if (pppacco > 0) | ||||
| 	{ | ||||
| 		pacchi /= pppacco; | ||||
| 	pppacco.floor(); | ||||
| 		pacchi.floor(); | ||||
| 	} | ||||
| 	return pacchi; | ||||
| } | ||||
| 
 | ||||
| @ -387,8 +419,10 @@ real TPrecedenza::get_pacchi_nor() const | ||||
| 	real pppacco = cached_article(_codart).get(ANAMAG_PPCONF); | ||||
| 	 | ||||
| 	if (pppacco > 0) | ||||
| 	{ | ||||
| 		pacchi /= pppacco; | ||||
| 	pppacco.floor(); | ||||
| 		pacchi.floor(); | ||||
| 	} | ||||
| 	return pacchi; | ||||
| } | ||||
| 
 | ||||
| @ -401,7 +435,7 @@ const TString & TPrecedenza::tipo_contenitore() const | ||||
| 
 | ||||
| const TString & TPrecedenza::dimensione() const | ||||
| { | ||||
| 	TString key; key << _tipocf << _codcf; // verificare
 | ||||
| 	TString key; key << _tipocf  << _codcf; // verificare
 | ||||
| 	 | ||||
| 	return cache().get("&LV020", key, DIMENSIONE); | ||||
| } | ||||
| @ -421,6 +455,7 @@ void TPrecedenza::prec2rec(TRectype & rec) const | ||||
| 	rec.put(PACKLIST_NDOC, _ndoc); | ||||
| 	rec.put(PACKLIST_IDRIGA, _idriga); | ||||
| 	rec.put(PACKLIST_NRIGADOC, _nrow); | ||||
| 	rec.put(PACKLIST_DATADOC, app().doc().get(DOC_DATADOC)); | ||||
| } | ||||
| 
 | ||||
| void TPrecedenza::print_on(ostream& out) const | ||||
| @ -439,29 +474,6 @@ int sort_prec(const TObject** o1, const TObject** o2) | ||||
| 		return p1.prec() - p2.prec(); | ||||
| 	return strcmp(p1.codart(), p2.codart()); | ||||
| } | ||||
| class TCrea_cartellini : public TSkeleton_application | ||||
| { | ||||
| 	TDocumento * _doc; | ||||
| 	int _contnum; | ||||
| 
 | ||||
| private: | ||||
|      | ||||
| protected: | ||||
| 	const TDocumento & doc() const { return *_doc;} | ||||
|   virtual void main_loop(); | ||||
| 	void crea_precedenze(ofstream & outfile, TArray & precs); | ||||
| 	void crea_carrelli(TArray & precs); | ||||
| 	void riempi_max(TArray & carrelli, TArray & precs); | ||||
| 	void resto_max(TArray & carrelli, TArray & precs); | ||||
| 	void riempi_normale(TArray & carrelli, TArray & precs, int level); | ||||
| 	void riempi_resti(TArray & carrelli, TArray & precs); | ||||
| 
 | ||||
| public: | ||||
| 	void ottimizza(const char * dir); | ||||
| 	void stampa(); | ||||
| 	bool set_params(); | ||||
| 	bool set_params(const TMask & m); | ||||
| }; | ||||
| 
 | ||||
| void TCrea_cartellini::crea_precedenze(ofstream & outfile, TArray & precs) | ||||
| { | ||||
| @ -492,11 +504,11 @@ void TCrea_cartellini::crea_precedenze(ofstream & outfile, TArray & precs) | ||||
| 		precs.add(new TPrecedenza(codart, anno, provv, codnum, ndoc, idriga, nrow, qta, pacchi, tipocf, codcf)); | ||||
|   } | ||||
| 
 | ||||
| 	precs.sort(); | ||||
| 	precs.sort(sort_prec); | ||||
| 	const int prec_nrows = precs.items(); | ||||
| 
 | ||||
| 	outfile << "Precedenze\nPrecedenza;Articolo;Anno;;Numerazione;Numero;ID Riga;Numero riga;Quantità;Pacchi;Cliente"; | ||||
| 	for (int r = 1; r <= prec_nrows; r++) | ||||
| 	outfile << "Precedenze\nPrecedenza;Articolo;Anno;;Numerazione;Numero;ID Riga;Numero riga;Quantità;Pacchi;Cliente\n"; | ||||
| 	for (int r = 0; r < prec_nrows; r++) | ||||
| 		outfile << precs[r] << '\n'; | ||||
| } | ||||
| 
 | ||||
| @ -504,16 +516,20 @@ void TCrea_cartellini::riempi_max(TArray & carrelli, TArray & precs) | ||||
| { | ||||
| 	const int items = precs.items(); | ||||
| 	 | ||||
| 	for(int r = 1; r <= items; r++) | ||||
| 	for(int r = 0; r < items; r++) | ||||
| 	{ | ||||
| 		TPrecedenza & p = (TPrecedenza &) precs[r]; | ||||
| 		const real max_qta = p.get_qta_max(); | ||||
| 		const real max_pacchi = p.get_pacchi_max(); | ||||
| 
 | ||||
| 		if (max_pacchi <= ZERO) | ||||
| 			break; | ||||
| 
 | ||||
| 		while (p.pacchi() > max_pacchi) | ||||
| 		{ | ||||
| 			TCarrello * c = new TCarrello(p.key_carrello(carrelli.items() + 1)); | ||||
| 
 | ||||
| 			c->destroy_rows(); | ||||
| 			carrelli.add(c); | ||||
| 
 | ||||
| 			TRectype & rec = c->row(c->rows() + 1, true); | ||||
| @ -532,21 +548,39 @@ void TCrea_cartellini::resto_max(TArray & carrelli, TArray & precs) | ||||
| { | ||||
| 	const int items = precs.items(); | ||||
| 
 | ||||
| 	for(int r = 1; r <= items; r++) | ||||
| 	for(int r = 0; r < items; r++) | ||||
| 	{ | ||||
| 		TPrecedenza &p = (TPrecedenza &) precs[r]; | ||||
| 
 | ||||
| 		if (p.pacchi() > ZERO) | ||||
| 		{ | ||||
| 			TCarrello * c = (TCarrello *)carrelli.objptr(carrelli.items()); | ||||
| 			TCarrello * c = NULL; | ||||
| 			const real max_qta = p.get_qta_max(); | ||||
| 			const real max_pacchi = p.get_qta_max(); | ||||
| 			const real max_pacchi = p.get_pacchi_max(); | ||||
| 			const int ncarrelli = carrelli.items(); | ||||
| 
 | ||||
| 			if (max_pacchi <= ZERO) | ||||
| 				break; | ||||
| 
 | ||||
| 			real perc = p.pacchi() / max_pacchi; | ||||
| 
 | ||||
| 			perc.round(4); | ||||
| 			if (c == NULL || c->perc() + perc > UNO) | ||||
| 			for (int i = 0; i < ncarrelli; i++) | ||||
| 			{ | ||||
| 				TCarrello * cc = (TCarrello *) carrelli.objptr(i); | ||||
| 				real cperc = cc->perc(); | ||||
| 
 | ||||
| 				if (UNO - cperc > perc) | ||||
| 				{ | ||||
| 				  c = (TCarrello *) carrelli.objptr(i); | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			if (c == NULL) | ||||
| 			{ | ||||
| 				c = new TCarrello(p.key_carrello(carrelli.items() + 1)); | ||||
| 
 | ||||
| 				c->destroy_rows(); | ||||
| 				carrelli.add(c); | ||||
| 			} | ||||
| 
 | ||||
| @ -566,32 +600,66 @@ void TCrea_cartellini::riempi_normale(TArray & carrelli, TArray & precs, int lev | ||||
| { | ||||
| 	const int items = precs.items(); | ||||
| 	 | ||||
| 	for(int r = 1; r <= items; r++) | ||||
| 	for(int r = 0; r < items; r++) | ||||
| 	{ | ||||
| 		TPrecedenza & p = (TPrecedenza &) precs[r]; | ||||
| 		if (p.prec() <= level) | ||||
| 
 | ||||
| 		if (p.prec() <= level && p.pacchi() > ZERO) | ||||
| 		{ | ||||
| 			int ncarrello = 0; | ||||
| 	    int ncarrelli = carrelli.items(); | ||||
| 			const real qta = p.get_qta_nor(); | ||||
| 			const real pacchi = p.get_pacchi_nor(); | ||||
| 			const real max_pacchi = p.get_pacchi_max(); | ||||
| 			real perc = p.pacchi() / max_pacchi; | ||||
| 
 | ||||
| 			if (pacchi <= ZERO || max_pacchi <= ZERO) | ||||
| 				break; | ||||
| 
 | ||||
| 			real perc = pacchi / max_pacchi; | ||||
| 
 | ||||
| 			perc.round(4); | ||||
| 
 | ||||
| 			while (p.pacchi() > pacchi) | ||||
| 			if (p.pacchi() >= pacchi) | ||||
| 			{ | ||||
| 				TCarrello * c = new TCarrello(p.key_carrello(carrelli.items() + 1)); | ||||
| 				for (ncarrello = 0; ncarrello < ncarrelli; ncarrello++) | ||||
| 				{ | ||||
| 					TCarrello * cc = (TCarrello *) carrelli.objptr(ncarrello); | ||||
| 					real cperc = cc->perc(); | ||||
| 
 | ||||
| 					if (UNO - cperc > perc) | ||||
| 						break; | ||||
| 				} | ||||
| 				while (p.pacchi() > pacchi) | ||||
| 				{ | ||||
| 					TCarrello * c = ncarrello < ncarrelli ? (TCarrello *) carrelli.objptr(ncarrello) : new TCarrello(p.key_carrello(ncarrello + 1)); | ||||
| 
 | ||||
| 					ncarrello++; | ||||
| 					c->destroy_rows(); | ||||
| 					carrelli.add(c); | ||||
| 
 | ||||
| 					TRectype & rec = c->row(c->rows() + 1, true); | ||||
| 
 | ||||
| 					p.prec2rec(rec); | ||||
| 					rec.put(PACKLIST_QTA, qta); | ||||
| 					rec.put(PACKLIST_CONF, pacchi); | ||||
| 					c->perc() = perc; | ||||
| 					p.qta() -= qta; | ||||
| 					p.pacchi() -= pacchi; | ||||
| 				} | ||||
| 
 | ||||
| 				TCarrello * c = ncarrello < ncarrelli ? (TCarrello *) carrelli.objptr(ncarrello) : new TCarrello(p.key_carrello(ncarrello + 1)); | ||||
| 
 | ||||
| 				c->destroy_rows(); | ||||
| 				carrelli.add(c); | ||||
| 
 | ||||
| 				TRectype & rec = c->row(c->rows() + 1, true); | ||||
| 
 | ||||
| 				p.prec2rec(rec); | ||||
| 				rec.put(PACKLIST_QTA, qta); | ||||
| 				rec.put(PACKLIST_CONF, pacchi); | ||||
| 				rec.put(PACKLIST_QTA,	p.qta()); | ||||
| 				rec.put(PACKLIST_CONF, p.pacchi()); | ||||
| 				perc = p.pacchi() / max_pacchi; | ||||
| 				c->perc() = perc; | ||||
| 				p.qta() -= qta; | ||||
| 				p.pacchi() -= pacchi; | ||||
| 				p.qta() = ZERO; | ||||
| 				p.pacchi() = ZERO; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| @ -601,38 +669,57 @@ void TCrea_cartellini::riempi_resti(TArray & carrelli, TArray & precs) | ||||
| { | ||||
| 	const int items = precs.items(); | ||||
| 
 | ||||
| 	for(int r = 1; r <= items; r++) | ||||
| 	for(int r = 0; r < items; r++) | ||||
| 	{ | ||||
| 		TPrecedenza &p = (TPrecedenza &) precs[r]; | ||||
| 
 | ||||
| 		if (p.pacchi() > ZERO) | ||||
| 		while (p.pacchi() > ZERO) | ||||
| 		{ | ||||
| 			TCarrello * c = (TCarrello *) carrelli.objptr(carrelli.items()); | ||||
| 			const real max_qta = p.get_qta_max(); | ||||
| 			const real max_pacchi = p.get_qta_max(); | ||||
| 			const real max_pacchi = p.get_pacchi_max(); | ||||
| 			const int ncarrelli = carrelli.items(); | ||||
| 			real qta = p.qta(); | ||||
| 			real pacchi = p.pacchi(); | ||||
| 
 | ||||
| 			if (pacchi <= ZERO || max_pacchi <= ZERO) | ||||
| 				break; | ||||
| 
 | ||||
| 			real perc = pacchi / max_pacchi; | ||||
| 			TCarrello * c = NULL; | ||||
| 			 | ||||
| 			perc.round(4); | ||||
| 			for (int i = 0; i < ncarrelli; i++) | ||||
| 			{ | ||||
| 				TCarrello * cc = (TCarrello *) carrelli.objptr(i); | ||||
| 				real cperc = cc->perc(); | ||||
| 
 | ||||
| 				if (UNO - cperc > UNO / max_pacchi) | ||||
| 				{ | ||||
| 				  c = (TCarrello *) carrelli.objptr(i); | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 			if (c == NULL) | ||||
| 			{ | ||||
| 				c = new TCarrello(p.key_carrello(carrelli.items() + 1)); | ||||
| 
 | ||||
| 				c->destroy_rows(); | ||||
| 				carrelli.add(c); | ||||
| 			} | ||||
| 			if (c->perc() + perc > UNO) | ||||
| 
 | ||||
| 			if (UNO - c->perc() < perc) | ||||
| 			{ | ||||
| 				real pppacco = cached_article(p.codart()).get(ANAMAG_PPCONF); | ||||
| 				real perc = UNO - c->perc(); | ||||
| 
 | ||||
| 				pacchi = perc * max_pacchi; | ||||
| 				pacchi.floor(); | ||||
| 				perc = UNO - c->perc(); | ||||
| 				pacchi = perc * max_pacchi; pacchi.floor(); | ||||
| 				perc = pacchi / max_pacchi; | ||||
| 				if (pppacco == 0) | ||||
| 					pppacco = 1; | ||||
| 				qta = pacchi * pppacco; | ||||
| 			} | ||||
| 				perc.round(4); | ||||
| 				qta = pacchi; | ||||
| 				real pppacco = cached_article(p.codart()).get(ANAMAG_PPCONF); | ||||
| 	 | ||||
| 				if (pppacco > 0) | ||||
| 					qta *= pppacco; | ||||
| 			} | ||||
| 			TRectype & rec = c->row(c->rows() + 1, true); | ||||
| 
 | ||||
| 			p.prec2rec(rec); | ||||
| @ -689,8 +776,15 @@ void TCrea_cartellini::crea_carrelli(TArray & precs) | ||||
| 
 | ||||
| void TCrea_cartellini::stampa() | ||||
| { | ||||
| 	TCartellini_report rep("pl1048100", _contnum); | ||||
| 	TString key; key << _doc->get(DOC_TIPOCF) << _doc->get_long(DOC_CODCF); | ||||
| 	const TString4 tpimballo = cache().get("&LV020", key, TPIMBALLO); | ||||
| 	TFilename name("pl1048100"); name << tpimballo; name.ext("rep"); | ||||
| 
 | ||||
| 	if (!name.custom_path()) | ||||
| 		name = "pl1048100"; | ||||
| 	TCartellini_report rep(name, _contnum); | ||||
| 	TRecordset * pset = rep.recordset(); | ||||
| 
 | ||||
|   if (pset != NULL) | ||||
|   { | ||||
| 		TTrec docs(LF_DOC); | ||||
| @ -705,15 +799,20 @@ void TCrea_cartellini::stampa() | ||||
| 			fieldname.insert("#"); | ||||
| 			pset->set_var(fieldname, var); | ||||
| 		} | ||||
| 		 | ||||
| 		pset->set_var("#CONT", tpimballo); | ||||
| 	} | ||||
| 
 | ||||
| 	TReport_book book; | ||||
| 	TString key; key << _doc->get(DOC_TIPOCF) << _doc->get_long(DOC_CODCF); | ||||
| 
 | ||||
| 	pset->set_var("#CONT", cache().get("&LV020", key, TPIMBALLO)); | ||||
| 	for (int c = 1; c <= _contnum; c++) | ||||
| 	{ | ||||
| 		pset->set_var("#KEY", format("%c%04d%-4s%-6ld%04d", _doc->get_char(DOC_PROVV), _doc->get_int(DOC_ANNO), (const char *)_doc->get(DOC_CODNUM), _doc->get_long(DOC_NDOC), c)); | ||||
| 		if (pset != NULL) | ||||
| 		{ | ||||
| 			TString4 codnum(_doc->get(DOC_CODNUM)); codnum.left_just(4, '_'); | ||||
| 
 | ||||
| 			pset->set_var("#KEY", format("%c%04d%-4s%06ld%04d", _doc->get_char(DOC_PROVV), _doc->get_int(DOC_ANNO), (const char *) codnum, _doc->get_long(DOC_NDOC), c)); | ||||
| 		} | ||||
| 
 | ||||
| 		book.add(rep); | ||||
| 	} | ||||
| @ -724,11 +823,13 @@ void TCrea_cartellini::ottimizza(const char * dir) | ||||
| { | ||||
| 	TString outname; | ||||
| 
 | ||||
| 	outname.format("%s/bo%s%06ld.xls", dir, doc().get(RDOC_CODNUM), doc().get_long(RDOC_NDOC)); | ||||
| 	outname.format("%s/bo%s%06ld.xls", dir, (const char *) doc().get(RDOC_CODNUM), doc().get_long(RDOC_NDOC)); | ||||
| 	TString_array  prec_rows; | ||||
| 	ofstream outfile(outname); | ||||
| 	{ | ||||
| 		ofstream outfile(outname); | ||||
| 
 | ||||
| 	crea_precedenze(outfile, prec_rows); | ||||
| 		crea_precedenze(outfile, prec_rows); | ||||
| 	} | ||||
| 	crea_carrelli(prec_rows); | ||||
| } | ||||
| 
 | ||||
| @ -776,9 +877,10 @@ void TCrea_cartellini::main_loop() //definizione della member function main_loop | ||||
| 		make_dir(outdir); | ||||
| 	if (argc() <= 2) | ||||
| 	{ | ||||
| 		TMask m("ps1048100a"); | ||||
| 		TMask m("pl1048100a"); | ||||
| 
 | ||||
| 		m.set(F_CODNUM, ini_get_string(CONFIG_DITTA, "ve", "NUM_GEN")); | ||||
| 		m.set(F_CODNUM, ini_get_string(CONFIG_DITTA, "lv", "NUM_GEN")); | ||||
| 		m.first_focus(F_NDOC); | ||||
| 		 | ||||
| 		while (m.run() == K_ENTER && set_params(m)) | ||||
| 		{ | ||||
| @ -786,6 +888,7 @@ void TCrea_cartellini::main_loop() //definizione della member function main_loop | ||||
| 			stampa(); | ||||
| 			delete _doc; | ||||
| 			_doc = NULL; | ||||
| 			m.first_focus(F_NDOC); | ||||
| 		} | ||||
| 	} | ||||
| 	else | ||||
|  | ||||
							
								
								
									
										117
									
								
								ps/pl1048100.rep
									
									
									
									
									
								
							
							
						
						
									
										117
									
								
								ps/pl1048100.rep
									
									
									
									
									
								
							| @ -1,17 +1,17 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| <report libraries="ve1300" name="pl1048100" orientation="2" lpi="6"> | ||||
| <report libraries="ve1300, pl1048100" name="PL1048100" lpi="6"> | ||||
|  <description>Cartellini</description> | ||||
|  <font face="Courier New" size="10" /> | ||||
|  <section type="Head" width="55" height="16" pattern="1"> | ||||
|  <section type="Head" height="12" pattern="1"> | ||||
|   <font face="Arial" size="10" /> | ||||
|   <field y="5" type="Testo" width="8" height="2" pattern="1" text="DATA"> | ||||
|   <field y="4.5" type="Testo" width="10" height="2" pattern="1" text="DATA"> | ||||
|    <font face="Courier New" bold="1" size="20" /> | ||||
|   </field> | ||||
|   <field x="10" y="5" type="Data" width="20" height="2" pattern="1"> | ||||
|   <field x="11.5" y="4.5" type="Data" width="20" height="2" pattern="1"> | ||||
|    <font face="Courier New" bold="1" size="20" /> | ||||
|    <source>DATADOC</source> | ||||
|    <source>126.DATADOC</source> | ||||
|   </field> | ||||
|   <field y="10" type="Array" width="15" height="2" pattern="1"> | ||||
|   <field y="7" type="Array" width="25" height="2" pattern="1"> | ||||
|    <font face="Courier New" bold="1" size="20" /> | ||||
|    <source>126.TIPOCONT</source> | ||||
|    <list> | ||||
| @ -19,129 +19,78 @@ | ||||
|     <li Value="SACCO" Code="S" /> | ||||
|    </list> | ||||
|   </field> | ||||
|   <field x="21" y="10" type="Testo" width="4" height="2" pattern="1" text="DI"> | ||||
|   <field x="36.5" y="7" type="Testo" width="5" height="2" pattern="1" text="DI"> | ||||
|    <font face="Courier New" bold="1" size="20" /> | ||||
|   </field> | ||||
|   <field border="1" y="15" type="Linea" width="55" height="0" pattern="1" /> | ||||
|   <field x="17" y="10" type="Stringa" width="4" height="2" id="9" pattern="1"> | ||||
|   <field border="1" y="11.5" type="Linea" width="87" height="0" pattern="1" /> | ||||
|   <field x="30" y="7" type="Numero" align="right" width="5" height="2" id="9" pattern="1"> | ||||
|    <font face="Courier New" bold="1" size="20" /> | ||||
|    <prescript description="H0.9 PRESCRIPT">MESSAGE _CURRCONT</prescript> | ||||
|   </field> | ||||
|   <field x="26" y="10" type="Stringa" width="4" height="2" id="9" pattern="1"> | ||||
|   <field x="42" y="7" type="Numero" align="right" width="5" height="2" id="9" pattern="1"> | ||||
|    <font face="Courier New" bold="1" size="20" /> | ||||
|    <prescript description="H0.9 PRESCRIPT">MESSAGE _CONTNUM</prescript> | ||||
|   </field> | ||||
|   <field x="39" y="6" type="Testo" width="8" id="11" pattern="1" text="DDT n."> | ||||
|    <font face="Courier New" bold="1" size="10" /> | ||||
|   <field x="62" y="4.75" type="Testo" width="10" height="2" id="11" pattern="1" text="DDT n."> | ||||
|    <font face="Courier New" bold="1" size="14" /> | ||||
|   </field> | ||||
|   <field x="48" y="6" type="Stringa" align="right" width="6.5" id="11" pattern="1"> | ||||
|    <font face="Courier New" bold="1" size="10" /> | ||||
|   <field x="72" y="4.75" type="Stringa" align="right" width="15" height="2" id="11" pattern="1"> | ||||
|    <font face="Courier New" bold="1" size="14" /> | ||||
|    <source>NDOC</source> | ||||
|   </field> | ||||
|   <field y="13" type="Testo" width="8" height="2" id="11" pattern="1" text="ART."> | ||||
|   <field y="9.5" type="Testo" width="16" height="2" id="11" pattern="1" text="ARTICOLO"> | ||||
|    <font face="Courier New" size="14" /> | ||||
|   </field> | ||||
|   <field x="15" y="13" type="Testo" width="25" height="2" id="11" pattern="1" text="DESCRIZIONE"> | ||||
|   <field x="15" y="9.5" type="Testo" width="40" height="2" id="11" pattern="1" text="DESCRIZIONE"> | ||||
|    <font face="Courier New" size="14" /> | ||||
|   </field> | ||||
|   <field x="40" y="13" type="Testo" width="7" height="2" id="11" pattern="1" text="Q.TA"> | ||||
|   <field x="57" y="9.5" type="Testo" align="right" width="15" height="2" id="11" pattern="1" text="Q.TA"> | ||||
|    <font face="Courier New" size="14" /> | ||||
|   </field> | ||||
|   <field x="47" y="13" type="Testo" width="9" height="2" id="11" pattern="1" text="PACCHI"> | ||||
|   <field x="71.5" y="9.5" type="Testo" align="right" width="15" height="2" id="11" pattern="1" text="PACCHI"> | ||||
|    <font face="Courier New" size="14" /> | ||||
|   </field> | ||||
|   <field type="Stringa" align="center" width="55" height="2" id="20" pattern="1"> | ||||
|   <field type="Stringa" align="center" width="87" height="2" id="20" pattern="1"> | ||||
|    <font face="Courier New" bold="1" size="14" /> | ||||
|    <prescript description="H0.20 PRESCRIPT">MESSAGE _DITTA,!RAGSOC</prescript> | ||||
|   </field> | ||||
|   <field y="2" type="Stringa" align="center" width="55" height="2" id="20" pattern="1"> | ||||
|   <field y="2" type="Stringa" align="center" width="87" height="2" id="20" pattern="1"> | ||||
|    <font face="Courier New" bold="1" size="20" /> | ||||
|    <source>20.RICALT</source> | ||||
|    <prescript description="H0.20 PRESCRIPT">MESSAGE _CLIENTE,!RAGSOC</prescript> | ||||
|   </field> | ||||
|  </section> | ||||
|  <section type="Head" level="1" pattern="1" /> | ||||
|  <section type="Body" width="55" pattern="1"> | ||||
|   <field border="1" x="0.5" y="19.5" type="Linea" width="92" height="0" pattern="1" /> | ||||
|   <field border="1" x="0.66" y="21.5" type="Linea" width="92" height="0" pattern="1" /> | ||||
|   <field border="1" radius="100" x="0.25" y="24.5" type="Rettangolo" shade_offset="50" width="92.5" height="30" pattern="2" /> | ||||
|   <field border="1" x="20.5" y="25" type="Linea" height="29" pattern="1" /> | ||||
|   <field border="1" x="74" y="25" type="Linea" height="29" pattern="1" /> | ||||
|   <field border="1" x="78" y="25" type="Linea" height="29" pattern="1" /> | ||||
|   <field border="1" radius="100" x="0.25" y="55" type="Rettangolo" shade_offset="50" width="92.5" height="8.75" pattern="2" /> | ||||
|   <field x="0.75" y="55" type="Testo" width="14.5" pattern="1" text="Trasporto a Mezzo"> | ||||
|    <font italic="1" face="Arial" size="8" /> | ||||
|   </field> | ||||
|   <field x="21.25" y="55" type="Testo" width="17.5" pattern="1" text="Aspetto Esteriore dei Beni"> | ||||
|    <font italic="1" face="Arial" size="8" /> | ||||
|   </field> | ||||
|   <field x="59.25" y="55" type="Testo" width="17" pattern="1" text="Causale del Trasporto"> | ||||
|    <font italic="1" face="Arial" size="8" /> | ||||
|   </field> | ||||
|   <field border="1" x="0.25" y="57.25" type="Linea" width="92" height="0" pattern="1" /> | ||||
|   <field x="0.75" y="57.25" type="Testo" align="right" width="6.5" pattern="1" text="Colli"> | ||||
|    <font italic="1" face="Arial" size="8" /> | ||||
|   </field> | ||||
|   <field x="10" y="57.25" type="Testo" align="right" width="7" pattern="1" text="N.Palette"> | ||||
|    <font italic="1" face="Arial" size="8" /> | ||||
|   </field> | ||||
|   <field x="23" y="57.25" type="Testo" width="6.5" pattern="1" text="Peso Kg."> | ||||
|    <font italic="1" face="Arial" size="8" /> | ||||
|   </field> | ||||
|   <field x="30" y="57.25" type="Testo" width="8.5" pattern="1" text="Porto"> | ||||
|    <font italic="1" face="Arial" size="8" /> | ||||
|   </field> | ||||
|   <field border="1" x="77.5" y="57.25" type="Linea" height="6.5" pattern="1" /> | ||||
|   <field x="78.5" y="57.25" type="Testo" width="14" pattern="1" text="Firma Conducente"> | ||||
|    <font italic="1" face="Arial" size="8" /> | ||||
|   </field> | ||||
|   <field x="59.75" y="57.5" type="Testo" width="17" pattern="2" text="Data e Ora Inizio Trasporto"> | ||||
|    <font italic="1" face="Arial" size="8" /> | ||||
|   </field> | ||||
|   <field border="1" x="0.25" y="59.25" type="Linea" width="92" height="0" pattern="1" /> | ||||
|   <field x="1" y="59.25" type="Testo" width="8" pattern="1" text="Annotazioni"> | ||||
|    <font italic="1" face="Arial" size="8" /> | ||||
|   </field> | ||||
|   <field x="78.5" y="59.25" type="Testo" width="14" pattern="1" text="Firma Destinatario"> | ||||
|    <font italic="1" face="Arial" size="8" /> | ||||
|   </field> | ||||
|   <field border="1" x="0.25" y="61.5" type="Linea" width="92" height="0" pattern="1" /> | ||||
|   <field x="0.75" y="61.5" type="Testo" width="15.5" pattern="1" text="Incaricato del Trasporto"> | ||||
|    <font italic="1" face="Arial" size="8" /> | ||||
|   </field> | ||||
|   <field x="78.5" y="61.5" type="Testo" width="14" pattern="1" text="Firma Vettore"> | ||||
|    <font italic="1" face="Arial" size="8" /> | ||||
|   </field> | ||||
|  </section> | ||||
|  <section type="Body" level="1" width="55" height="2" can_break="1" pattern="1"> | ||||
|  <section type="Body" width="55" pattern="1" /> | ||||
|  <section type="Body" level="1" height="2" pattern="1"> | ||||
|   <font face="Arial" size="10" /> | ||||
|   <field type="Stringa" width="15" height="2" id="51" pattern="1"> | ||||
|    <font face="Courier New" bold="1" size="20" /> | ||||
|    <source>34.CODART</source> | ||||
|    <source>CODART</source> | ||||
|   </field> | ||||
|   <field x="15.5" type="Stringa" bg_color="#D4D4D4" width="25" height="2" id="52" pattern="1"> | ||||
|   <field x="15" type="Stringa" bg_color="#D4D4D4" width="42" height="2" id="52" pattern="1"> | ||||
|    <font face="Courier New" size="10" /> | ||||
|    <prescript description="B1.52 PRESCRIPT">MESSAGE _DESCRIGA</prescript> | ||||
|    <source>47.DESCR</source> | ||||
|   </field> | ||||
|   <field x="40" type="Numero" align="right" bg_color="#00FFFF" width="7" height="2" id="54" pattern="1" hide_zero="1" text="#.###,@@"> | ||||
|   <field x="57" type="Numero" align="right" bg_color="#00FFFF" width="15" height="2" id="54" pattern="1" hide_zero="1" text="###.###"> | ||||
|    <font face="Courier New" bold="1" size="20" /> | ||||
|    <groups>30</groups> | ||||
|    <source>QTA</source> | ||||
|    <source>126.QTA</source> | ||||
|   </field> | ||||
|   <field x="48" type="Numero" align="right" bg_color="#00FFFF" width="7" height="2" id="55" pattern="1" hide_zero="1" text="#.###,@@"> | ||||
|   <field x="72" type="Numero" align="right" bg_color="#00FFFF" width="15" height="2" id="55" pattern="1" hide_zero="1" text="###.###"> | ||||
|    <font face="Courier New" bold="1" size="20" /> | ||||
|    <source>PACCHI</source> | ||||
|    <source>126.CONF</source> | ||||
|   </field> | ||||
|  </section> | ||||
|  <section y="46" hidden_if_needed="1" type="Foot" width="55" height="2" pattern="1"> | ||||
|  <section y="31" hidden_if_needed="1" type="Foot" height="3" pattern="1"> | ||||
|   <font face="Arial" size="10" /> | ||||
|   <field x="21" type="Testo" width="34" height="2" id="100" pattern="1" text="E;E;E; SEGUE E;E;E;"> | ||||
|   <field x="55" type="Testo" width="30" height="2" id="100" pattern="1" text="E;E;E; SEGUE E;E;E;"> | ||||
|    <font italic="1" face="Courier New" bold="1" size="20" /> | ||||
|   </field> | ||||
|  </section> | ||||
|  <section y="46" type="Foot" level="1" width="55" height="2" pattern="1" /> | ||||
|  <section y="31" type="Foot" level="1" height="3" pattern="1" /> | ||||
|  <sql>USE 126 | ||||
| JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF | ||||
| JOIN 47 INTO CODART==CODART | ||||
| FROM TIPOCONT=#CONT CODICE=#KEY | ||||
| TO TIPOCONT=#CONT CODICE=#KEY</sql> | ||||
| </report> | ||||
| @ -2,8 +2,9 @@ | ||||
| #define F_ANNO                      102   | ||||
| #define F_PROVV                     103   | ||||
| #define F_NDOC                      104   | ||||
| #define F_TIPOCF                    107   | ||||
| #define F_CODCF                     108 | ||||
| #define F_TIPODOC                   172   | ||||
| #define F_CODDITTA                  109 | ||||
| #define F_RAGSOCDITTA               110 | ||||
| 
 | ||||
| #define F_DESNUM                    173   | ||||
| #define F_DESTIPODOC                176   | ||||
|  | ||||
| @ -1,8 +1,8 @@ | ||||
| #include "veuml.h" | ||||
| #include "pl1048100a.h" | ||||
| 
 | ||||
| TOOLBAR "Toolbar" 0 0 0 2 | ||||
| 
 | ||||
| #include <relapbar.h> | ||||
| #include <stdbar.h> | ||||
| 
 | ||||
| ENDPAGE | ||||
| 
 | ||||
| @ -86,7 +86,7 @@ NUMBER F_NDOC 6 | ||||
| BEGIN | ||||
|   PROMPT 24 7 "Numero      " | ||||
|   FIELD NDOC | ||||
|   USE LF_DOC SELECT (#F_STATO=="")||(STATO==#F_STATO)      | ||||
|   USE LF_DOC | ||||
|   JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF  | ||||
|   INPUT PROVV F_PROVV SELECT | ||||
|   INPUT ANNO F_ANNO SELECT | ||||
| @ -103,25 +103,17 @@ BEGIN | ||||
|   DISPLAY "Codice" CODCF | ||||
|   DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC | ||||
|   OUTPUT F_NDOC NDOC | ||||
|   OUTPUT F_TIPODOC TIPODOC | ||||
| 	OUTPUT F_PROVV PROVV | ||||
|   CHECKTYPE REQUIRED | ||||
|   FLAG "R" | ||||
| END | ||||
| 
 | ||||
| LIST F_TIPOCF 1 12 | ||||
| BEGIN | ||||
|   PROMPT 2 8 "Tipo "  | ||||
|   ITEM "C|Cliente" | ||||
|   ITEM "F|Fornitore" | ||||
| END | ||||
| 
 | ||||
| NUMBER F_CODCF 6 | ||||
| BEGIN | ||||
|   PROMPT 24 8 "Codice      "  | ||||
|   USE LF_DOC KEY 2 SELECT (CODNUM==#F_CODNUM) && (PROVV==#F_PROVV) && (ANNO==#F_ANNO) && ((#F_STATO=="")||(STATO==#F_STATO)) | ||||
|   USE LF_DOC KEY 2 SELECT (CODNUM==#F_CODNUM)&&(PROVV==#F_PROVV)&&(ANNO==#F_ANNO) | ||||
|   JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF | ||||
|   INPUT TIPOCF F_TIPOCF SELECT | ||||
|   INPUT TIPOCF "C" | ||||
|   INPUT CODCF F_CODCF | ||||
|   INPUT PROVV F_PROVV | ||||
|   INPUT ANNO F_ANNO | ||||
| @ -140,7 +132,7 @@ BEGIN | ||||
|   DISPLAY "Stato" STATO | ||||
|   COPY OUTPUT F_NDOC | ||||
|   OUTPUT F_CODCF CODCF | ||||
|   CHECKTYPE NORMAL | ||||
|   CHECKTYPE SEARCH | ||||
| END | ||||
| 
 | ||||
| ENDPAGE | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user