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 | 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 }; |   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) | bool TCartellini_report::execute_usr_word(unsigned int opcode, TVariant_stack& stack) | ||||||
| { | { | ||||||
|   if (opcode < _first_msg) |   if (opcode < _first_msg) | ||||||
|     return TReport::execute_usr_word(opcode, stack); |     return TDocument_report::execute_usr_word(opcode, stack); | ||||||
|   opcode -= _first_msg; |   opcode -= _first_msg; | ||||||
|   switch (opcode) |   switch (opcode) | ||||||
|   { |   { | ||||||
| @ -173,11 +173,40 @@ public: | |||||||
| 	const real perc() const {return _perc;} | 	const real perc() const {return _perc;} | ||||||
| 	real & perc() { 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; | 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 | class TPrecedenza : public TObject | ||||||
| { | { | ||||||
| 	int _tipoart; | 	int _tipoart; | ||||||
| @ -232,8 +261,9 @@ public: | |||||||
| const char * TPrecedenza::key_carrello(int num) const | const char * TPrecedenza::key_carrello(int num) const | ||||||
| { | { | ||||||
| 	TString & key = get_tmp_string(25); | 	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; | 	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); | 	const bool separa_articoli = cache().get("&LV020", key).get_bool(ARTSEP); | ||||||
| 
 | 
 | ||||||
| 	_tipoart = separa_articoli ? atoi(cache().get("&LV047", codart, TPARTICOLO)) : 0; | 	_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))); | 		__contract = new TLaundry_contract(_codcf, 0, TDate(cache().get(LF_DOC, key, DOC_DATADOC))); | ||||||
| 	} | 	} | ||||||
| 	const TRectype & rec = __contract->row(_codart); | 	const TRectype & rec = __contract->row(_codart); | ||||||
| @ -365,8 +395,10 @@ real TPrecedenza::get_pacchi_max() const | |||||||
| 	real pppacco = cached_article(_codart).get(ANAMAG_PPCONF); | 	real pppacco = cached_article(_codart).get(ANAMAG_PPCONF); | ||||||
| 	 | 	 | ||||||
| 	if (pppacco > 0) | 	if (pppacco > 0) | ||||||
|  | 	{ | ||||||
| 		pacchi /= pppacco; | 		pacchi /= pppacco; | ||||||
| 	pppacco.floor(); | 		pacchi.floor(); | ||||||
|  | 	} | ||||||
| 	return pacchi; | 	return pacchi; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -387,8 +419,10 @@ real TPrecedenza::get_pacchi_nor() const | |||||||
| 	real pppacco = cached_article(_codart).get(ANAMAG_PPCONF); | 	real pppacco = cached_article(_codart).get(ANAMAG_PPCONF); | ||||||
| 	 | 	 | ||||||
| 	if (pppacco > 0) | 	if (pppacco > 0) | ||||||
|  | 	{ | ||||||
| 		pacchi /= pppacco; | 		pacchi /= pppacco; | ||||||
| 	pppacco.floor(); | 		pacchi.floor(); | ||||||
|  | 	} | ||||||
| 	return pacchi; | 	return pacchi; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -401,7 +435,7 @@ const TString & TPrecedenza::tipo_contenitore() const | |||||||
| 
 | 
 | ||||||
| const TString & TPrecedenza::dimensione() const | const TString & TPrecedenza::dimensione() const | ||||||
| { | { | ||||||
| 	TString key; key << _tipocf << _codcf; // verificare
 | 	TString key; key << _tipocf  << _codcf; // verificare
 | ||||||
| 	 | 	 | ||||||
| 	return cache().get("&LV020", key, DIMENSIONE); | 	return cache().get("&LV020", key, DIMENSIONE); | ||||||
| } | } | ||||||
| @ -421,6 +455,7 @@ void TPrecedenza::prec2rec(TRectype & rec) const | |||||||
| 	rec.put(PACKLIST_NDOC, _ndoc); | 	rec.put(PACKLIST_NDOC, _ndoc); | ||||||
| 	rec.put(PACKLIST_IDRIGA, _idriga); | 	rec.put(PACKLIST_IDRIGA, _idriga); | ||||||
| 	rec.put(PACKLIST_NRIGADOC, _nrow); | 	rec.put(PACKLIST_NRIGADOC, _nrow); | ||||||
|  | 	rec.put(PACKLIST_DATADOC, app().doc().get(DOC_DATADOC)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void TPrecedenza::print_on(ostream& out) const | 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 p1.prec() - p2.prec(); | ||||||
| 	return strcmp(p1.codart(), p2.codart()); | 	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) | 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.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(); | 	const int prec_nrows = precs.items(); | ||||||
| 
 | 
 | ||||||
| 	outfile << "Precedenze\nPrecedenza;Articolo;Anno;;Numerazione;Numero;ID Riga;Numero riga;Quantità;Pacchi;Cliente"; | 	outfile << "Precedenze\nPrecedenza;Articolo;Anno;;Numerazione;Numero;ID Riga;Numero riga;Quantità;Pacchi;Cliente\n"; | ||||||
| 	for (int r = 1; r <= prec_nrows; r++) | 	for (int r = 0; r < prec_nrows; r++) | ||||||
| 		outfile << precs[r] << '\n'; | 		outfile << precs[r] << '\n'; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -504,16 +516,20 @@ void TCrea_cartellini::riempi_max(TArray & carrelli, TArray & precs) | |||||||
| { | { | ||||||
| 	const int items = precs.items(); | 	const int items = precs.items(); | ||||||
| 	 | 	 | ||||||
| 	for(int r = 1; r <= items; r++) | 	for(int r = 0; r < items; r++) | ||||||
| 	{ | 	{ | ||||||
| 		TPrecedenza & p = (TPrecedenza &) precs[r]; | 		TPrecedenza & p = (TPrecedenza &) precs[r]; | ||||||
| 		const real max_qta = p.get_qta_max(); | 		const real max_qta = p.get_qta_max(); | ||||||
| 		const real max_pacchi = p.get_pacchi_max(); | 		const real max_pacchi = p.get_pacchi_max(); | ||||||
| 
 | 
 | ||||||
|  | 		if (max_pacchi <= ZERO) | ||||||
|  | 			break; | ||||||
|  | 
 | ||||||
| 		while (p.pacchi() > max_pacchi) | 		while (p.pacchi() > max_pacchi) | ||||||
| 		{ | 		{ | ||||||
| 			TCarrello * c = new TCarrello(p.key_carrello(carrelli.items() + 1)); | 			TCarrello * c = new TCarrello(p.key_carrello(carrelli.items() + 1)); | ||||||
| 
 | 
 | ||||||
|  | 			c->destroy_rows(); | ||||||
| 			carrelli.add(c); | 			carrelli.add(c); | ||||||
| 
 | 
 | ||||||
| 			TRectype & rec = c->row(c->rows() + 1, true); | 			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(); | 	const int items = precs.items(); | ||||||
| 
 | 
 | ||||||
| 	for(int r = 1; r <= items; r++) | 	for(int r = 0; r < items; r++) | ||||||
| 	{ | 	{ | ||||||
| 		TPrecedenza &p = (TPrecedenza &) precs[r]; | 		TPrecedenza &p = (TPrecedenza &) precs[r]; | ||||||
| 
 | 
 | ||||||
| 		if (p.pacchi() > ZERO) | 		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_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; | 			real perc = p.pacchi() / max_pacchi; | ||||||
| 
 | 
 | ||||||
| 			perc.round(4); | 			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 = new TCarrello(p.key_carrello(carrelli.items() + 1)); | ||||||
|  | 
 | ||||||
|  | 				c->destroy_rows(); | ||||||
| 				carrelli.add(c); | 				carrelli.add(c); | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| @ -566,32 +600,66 @@ void TCrea_cartellini::riempi_normale(TArray & carrelli, TArray & precs, int lev | |||||||
| { | { | ||||||
| 	const int items = precs.items(); | 	const int items = precs.items(); | ||||||
| 	 | 	 | ||||||
| 	for(int r = 1; r <= items; r++) | 	for(int r = 0; r < items; r++) | ||||||
| 	{ | 	{ | ||||||
| 		TPrecedenza & p = (TPrecedenza &) precs[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 qta = p.get_qta_nor(); | ||||||
| 			const real pacchi = p.get_pacchi_nor(); | 			const real pacchi = p.get_pacchi_nor(); | ||||||
| 			const real max_pacchi = p.get_pacchi_max(); | 			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); | 			perc.round(4); | ||||||
| 
 | 			if (p.pacchi() >= pacchi) | ||||||
| 			while (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); | 				carrelli.add(c); | ||||||
| 
 | 
 | ||||||
| 				TRectype & rec = c->row(c->rows() + 1, true); | 				TRectype & rec = c->row(c->rows() + 1, true); | ||||||
| 
 | 
 | ||||||
| 				p.prec2rec(rec); | 				p.prec2rec(rec); | ||||||
| 				rec.put(PACKLIST_QTA, qta); | 				rec.put(PACKLIST_QTA,	p.qta()); | ||||||
| 				rec.put(PACKLIST_CONF, pacchi); | 				rec.put(PACKLIST_CONF, p.pacchi()); | ||||||
|  | 				perc = p.pacchi() / max_pacchi; | ||||||
| 				c->perc() = perc; | 				c->perc() = perc; | ||||||
| 				p.qta() -= qta; | 				p.qta() = ZERO; | ||||||
| 				p.pacchi() -= pacchi; | 				p.pacchi() = ZERO; | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| @ -601,38 +669,57 @@ void TCrea_cartellini::riempi_resti(TArray & carrelli, TArray & precs) | |||||||
| { | { | ||||||
| 	const int items = precs.items(); | 	const int items = precs.items(); | ||||||
| 
 | 
 | ||||||
| 	for(int r = 1; r <= items; r++) | 	for(int r = 0; r < items; r++) | ||||||
| 	{ | 	{ | ||||||
| 		TPrecedenza &p = (TPrecedenza &) precs[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_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 qta = p.qta(); | ||||||
| 			real pacchi = p.pacchi(); | 			real pacchi = p.pacchi(); | ||||||
|  | 
 | ||||||
|  | 			if (pacchi <= ZERO || max_pacchi <= ZERO) | ||||||
|  | 				break; | ||||||
|  | 
 | ||||||
| 			real perc = pacchi / max_pacchi; | 			real perc = pacchi / max_pacchi; | ||||||
|  | 			TCarrello * c = NULL; | ||||||
| 			 | 			 | ||||||
| 			perc.round(4); | 			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) | 			if (c == NULL) | ||||||
| 			{ | 			{ | ||||||
| 				c = new TCarrello(p.key_carrello(carrelli.items() + 1)); | 				c = new TCarrello(p.key_carrello(carrelli.items() + 1)); | ||||||
|  | 
 | ||||||
|  | 				c->destroy_rows(); | ||||||
| 				carrelli.add(c); | 				carrelli.add(c); | ||||||
| 			} | 			} | ||||||
| 			if (c->perc() + perc > UNO) | 
 | ||||||
|  | 			if (UNO - c->perc() < perc) | ||||||
| 			{ | 			{ | ||||||
| 				real pppacco = cached_article(p.codart()).get(ANAMAG_PPCONF); | 				perc = UNO - c->perc(); | ||||||
| 				real perc = UNO - c->perc(); | 				pacchi = perc * max_pacchi; pacchi.floor(); | ||||||
| 
 |  | ||||||
| 				pacchi = perc * max_pacchi; |  | ||||||
| 				pacchi.floor(); |  | ||||||
| 				perc = pacchi / max_pacchi; | 				perc = pacchi / max_pacchi; | ||||||
| 				if (pppacco == 0) | 				perc.round(4); | ||||||
| 					pppacco = 1; | 				qta = pacchi; | ||||||
| 				qta = pacchi * pppacco; | 				real pppacco = cached_article(p.codart()).get(ANAMAG_PPCONF); | ||||||
| 			} |  | ||||||
| 	 | 	 | ||||||
|  | 				if (pppacco > 0) | ||||||
|  | 					qta *= pppacco; | ||||||
|  | 			} | ||||||
| 			TRectype & rec = c->row(c->rows() + 1, true); | 			TRectype & rec = c->row(c->rows() + 1, true); | ||||||
| 
 | 
 | ||||||
| 			p.prec2rec(rec); | 			p.prec2rec(rec); | ||||||
| @ -689,8 +776,15 @@ void TCrea_cartellini::crea_carrelli(TArray & precs) | |||||||
| 
 | 
 | ||||||
| void TCrea_cartellini::stampa() | 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(); | 	TRecordset * pset = rep.recordset(); | ||||||
|  | 
 | ||||||
|   if (pset != NULL) |   if (pset != NULL) | ||||||
|   { |   { | ||||||
| 		TTrec docs(LF_DOC); | 		TTrec docs(LF_DOC); | ||||||
| @ -705,15 +799,20 @@ void TCrea_cartellini::stampa() | |||||||
| 			fieldname.insert("#"); | 			fieldname.insert("#"); | ||||||
| 			pset->set_var(fieldname, var); | 			pset->set_var(fieldname, var); | ||||||
| 		} | 		} | ||||||
|  | 		 | ||||||
|  | 		pset->set_var("#CONT", tpimballo); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	TReport_book book; | 	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++) | 	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); | 		book.add(rep); | ||||||
| 	} | 	} | ||||||
| @ -724,11 +823,13 @@ void TCrea_cartellini::ottimizza(const char * dir) | |||||||
| { | { | ||||||
| 	TString outname; | 	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; | 	TString_array  prec_rows; | ||||||
| 	ofstream outfile(outname); | 	{ | ||||||
|  | 		ofstream outfile(outname); | ||||||
| 
 | 
 | ||||||
| 	crea_precedenze(outfile, prec_rows); | 		crea_precedenze(outfile, prec_rows); | ||||||
|  | 	} | ||||||
| 	crea_carrelli(prec_rows); | 	crea_carrelli(prec_rows); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -776,9 +877,10 @@ void TCrea_cartellini::main_loop() //definizione della member function main_loop | |||||||
| 		make_dir(outdir); | 		make_dir(outdir); | ||||||
| 	if (argc() <= 2) | 	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)) | 		while (m.run() == K_ENTER && set_params(m)) | ||||||
| 		{ | 		{ | ||||||
| @ -786,6 +888,7 @@ void TCrea_cartellini::main_loop() //definizione della member function main_loop | |||||||
| 			stampa(); | 			stampa(); | ||||||
| 			delete _doc; | 			delete _doc; | ||||||
| 			_doc = NULL; | 			_doc = NULL; | ||||||
|  | 			m.first_focus(F_NDOC); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	else | 	else | ||||||
|  | |||||||
							
								
								
									
										117
									
								
								ps/pl1048100.rep
									
									
									
									
									
								
							
							
						
						
									
										117
									
								
								ps/pl1048100.rep
									
									
									
									
									
								
							| @ -1,17 +1,17 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8" ?> | <?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> |  <description>Cartellini</description> | ||||||
|  <font face="Courier New" size="10" /> |  <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" /> |   <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" /> |    <font face="Courier New" bold="1" size="20" /> | ||||||
|   </field> |   </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" /> |    <font face="Courier New" bold="1" size="20" /> | ||||||
|    <source>DATADOC</source> |    <source>126.DATADOC</source> | ||||||
|   </field> |   </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" /> |    <font face="Courier New" bold="1" size="20" /> | ||||||
|    <source>126.TIPOCONT</source> |    <source>126.TIPOCONT</source> | ||||||
|    <list> |    <list> | ||||||
| @ -19,129 +19,78 @@ | |||||||
|     <li Value="SACCO" Code="S" /> |     <li Value="SACCO" Code="S" /> | ||||||
|    </list> |    </list> | ||||||
|   </field> |   </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" /> |    <font face="Courier New" bold="1" size="20" /> | ||||||
|   </field> |   </field> | ||||||
|   <field border="1" y="15" type="Linea" width="55" height="0" pattern="1" /> |   <field border="1" y="11.5" type="Linea" width="87" height="0" pattern="1" /> | ||||||
|   <field x="17" y="10" type="Stringa" width="4" height="2" id="9" 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" /> |    <font face="Courier New" bold="1" size="20" /> | ||||||
|    <prescript description="H0.9 PRESCRIPT">MESSAGE _CURRCONT</prescript> |    <prescript description="H0.9 PRESCRIPT">MESSAGE _CURRCONT</prescript> | ||||||
|   </field> |   </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" /> |    <font face="Courier New" bold="1" size="20" /> | ||||||
|    <prescript description="H0.9 PRESCRIPT">MESSAGE _CONTNUM</prescript> |    <prescript description="H0.9 PRESCRIPT">MESSAGE _CONTNUM</prescript> | ||||||
|   </field> |   </field> | ||||||
|   <field x="39" y="6" type="Testo" width="8" id="11" pattern="1" text="DDT n."> |   <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="10" /> |    <font face="Courier New" bold="1" size="14" /> | ||||||
|   </field> |   </field> | ||||||
|   <field x="48" y="6" type="Stringa" align="right" width="6.5" id="11" pattern="1"> |   <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="10" /> |    <font face="Courier New" bold="1" size="14" /> | ||||||
|    <source>NDOC</source> |    <source>NDOC</source> | ||||||
|   </field> |   </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" /> |    <font face="Courier New" size="14" /> | ||||||
|   </field> |   </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" /> |    <font face="Courier New" size="14" /> | ||||||
|   </field> |   </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" /> |    <font face="Courier New" size="14" /> | ||||||
|   </field> |   </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" /> |    <font face="Courier New" size="14" /> | ||||||
|   </field> |   </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" /> |    <font face="Courier New" bold="1" size="14" /> | ||||||
|    <prescript description="H0.20 PRESCRIPT">MESSAGE _DITTA,!RAGSOC</prescript> |    <prescript description="H0.20 PRESCRIPT">MESSAGE _DITTA,!RAGSOC</prescript> | ||||||
|   </field> |   </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" /> |    <font face="Courier New" bold="1" size="20" /> | ||||||
|    <source>20.RICALT</source> |    <source>20.RICALT</source> | ||||||
|    <prescript description="H0.20 PRESCRIPT">MESSAGE _CLIENTE,!RAGSOC</prescript> |    <prescript description="H0.20 PRESCRIPT">MESSAGE _CLIENTE,!RAGSOC</prescript> | ||||||
|   </field> |   </field> | ||||||
|  </section> |  </section> | ||||||
|  <section type="Head" level="1" pattern="1" /> |  <section type="Head" level="1" pattern="1" /> | ||||||
|  <section type="Body" width="55" 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" /> |  <section type="Body" level="1" height="2" 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"> |  | ||||||
|   <font face="Arial" size="10" /> |   <font face="Arial" size="10" /> | ||||||
|   <field type="Stringa" width="15" height="2" id="51" pattern="1"> |   <field type="Stringa" width="15" height="2" id="51" pattern="1"> | ||||||
|    <font face="Courier New" bold="1" size="20" /> |    <font face="Courier New" bold="1" size="20" /> | ||||||
|    <source>34.CODART</source> |    <source>CODART</source> | ||||||
|   </field> |   </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" /> |    <font face="Courier New" size="10" /> | ||||||
|    <prescript description="B1.52 PRESCRIPT">MESSAGE _DESCRIGA</prescript> |    <source>47.DESCR</source> | ||||||
|   </field> |   </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" /> |    <font face="Courier New" bold="1" size="20" /> | ||||||
|    <groups>30</groups> |    <source>126.QTA</source> | ||||||
|    <source>QTA</source> |  | ||||||
|   </field> |   </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" /> |    <font face="Courier New" bold="1" size="20" /> | ||||||
|    <source>PACCHI</source> |    <source>126.CONF</source> | ||||||
|   </field> |   </field> | ||||||
|  </section> |  </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" /> |   <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" /> |    <font italic="1" face="Courier New" bold="1" size="20" /> | ||||||
|   </field> |   </field> | ||||||
|  </section> |  </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 |  <sql>USE 126 | ||||||
| JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF | JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF | ||||||
|  | JOIN 47 INTO CODART==CODART | ||||||
| FROM TIPOCONT=#CONT CODICE=#KEY | FROM TIPOCONT=#CONT CODICE=#KEY | ||||||
| TO TIPOCONT=#CONT CODICE=#KEY</sql> | TO TIPOCONT=#CONT CODICE=#KEY</sql> | ||||||
| </report> | </report> | ||||||
| @ -2,8 +2,9 @@ | |||||||
| #define F_ANNO                      102   | #define F_ANNO                      102   | ||||||
| #define F_PROVV                     103   | #define F_PROVV                     103   | ||||||
| #define F_NDOC                      104   | #define F_NDOC                      104   | ||||||
| #define F_TIPOCF                    107   |  | ||||||
| #define F_CODCF                     108 | #define F_CODCF                     108 | ||||||
| #define F_TIPODOC                   172   | #define F_CODDITTA                  109 | ||||||
|  | #define F_RAGSOCDITTA               110 | ||||||
|  | 
 | ||||||
| #define F_DESNUM                    173   | #define F_DESNUM                    173   | ||||||
| #define F_DESTIPODOC                176   | #define F_DESTIPODOC                176   | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| #include "veuml.h" | #include "pl1048100a.h" | ||||||
| 
 | 
 | ||||||
| TOOLBAR "Toolbar" 0 0 0 2 | TOOLBAR "Toolbar" 0 0 0 2 | ||||||
| 
 | 
 | ||||||
| #include <relapbar.h> | #include <stdbar.h> | ||||||
| 
 | 
 | ||||||
| ENDPAGE | ENDPAGE | ||||||
| 
 | 
 | ||||||
| @ -86,7 +86,7 @@ NUMBER F_NDOC 6 | |||||||
| BEGIN | BEGIN | ||||||
|   PROMPT 24 7 "Numero      " |   PROMPT 24 7 "Numero      " | ||||||
|   FIELD NDOC |   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  |   JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF  | ||||||
|   INPUT PROVV F_PROVV SELECT |   INPUT PROVV F_PROVV SELECT | ||||||
|   INPUT ANNO F_ANNO SELECT |   INPUT ANNO F_ANNO SELECT | ||||||
| @ -103,25 +103,17 @@ BEGIN | |||||||
|   DISPLAY "Codice" CODCF |   DISPLAY "Codice" CODCF | ||||||
|   DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC |   DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC | ||||||
|   OUTPUT F_NDOC NDOC |   OUTPUT F_NDOC NDOC | ||||||
|   OUTPUT F_TIPODOC TIPODOC |  | ||||||
| 	OUTPUT F_PROVV PROVV | 	OUTPUT F_PROVV PROVV | ||||||
|   CHECKTYPE REQUIRED |   CHECKTYPE REQUIRED | ||||||
|   FLAG "R" |   FLAG "R" | ||||||
| END | END | ||||||
| 
 | 
 | ||||||
| LIST F_TIPOCF 1 12 |  | ||||||
| BEGIN |  | ||||||
|   PROMPT 2 8 "Tipo "  |  | ||||||
|   ITEM "C|Cliente" |  | ||||||
|   ITEM "F|Fornitore" |  | ||||||
| END |  | ||||||
| 
 |  | ||||||
| NUMBER F_CODCF 6 | NUMBER F_CODCF 6 | ||||||
| BEGIN | BEGIN | ||||||
|   PROMPT 24 8 "Codice      "  |   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 |   JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF | ||||||
|   INPUT TIPOCF F_TIPOCF SELECT |   INPUT TIPOCF "C" | ||||||
|   INPUT CODCF F_CODCF |   INPUT CODCF F_CODCF | ||||||
|   INPUT PROVV F_PROVV |   INPUT PROVV F_PROVV | ||||||
|   INPUT ANNO F_ANNO |   INPUT ANNO F_ANNO | ||||||
| @ -140,7 +132,7 @@ BEGIN | |||||||
|   DISPLAY "Stato" STATO |   DISPLAY "Stato" STATO | ||||||
|   COPY OUTPUT F_NDOC |   COPY OUTPUT F_NDOC | ||||||
|   OUTPUT F_CODCF CODCF |   OUTPUT F_CODCF CODCF | ||||||
|   CHECKTYPE NORMAL |   CHECKTYPE SEARCH | ||||||
| END | END | ||||||
| 
 | 
 | ||||||
| ENDPAGE | ENDPAGE | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user