diff --git a/ps/pl1048100.cpp b/ps/pl1048100.cpp index 19e8f5521..3d9fe0597 100755 --- a/ps/pl1048100.cpp +++ b/ps/pl1048100.cpp @@ -270,8 +270,10 @@ const char * TPrecedenza::key_carrello(int num) const TPrecedenza::TPrecedenza(const char * codart, int anno, char provv, const char * codnum, long ndoc, int idriga, int nrow, real & qta, real & pacchi, char tipocf, long codcf) : _codart(codart), _anno(anno), _provv(provv), _codnum(codnum), _ndoc(ndoc), _idriga(idriga), _nrow(nrow), _qta(qta), _pacchi(pacchi), _tipocf(tipocf), _codcf(codcf) { - TString key; key << tipocf << codcf; // verificare + TString8 key; key << tipocf << codcf; // verificare const bool separa_articoli = cache().get("&LV020", key).get_bool(ARTSEP); + const bool sacchi = cache().get("&LV020", key, TPIMBALLO) == "S"; + _tipoart = separa_articoli ? atoi(cache().get("&LV047", codart, TPARTICOLO)) : 0; if (__contract == NULL) @@ -284,7 +286,7 @@ TPrecedenza::TPrecedenza(const char * codart, int anno, char provv, const char * _prec = 0; _prec = rec.get_int(LVRCONDV_PRECEDENZA); if (_prec == 0) - _prec = atoi(cache().get("&LV047", _codart, PRECEDENZA)); + _prec = sacchi ? 10 : atoi(cache().get("&LV047", _codart, PRECEDENZA)); } const char * TPrecedenza::contr_field_max() const @@ -460,7 +462,7 @@ void TPrecedenza::prec2rec(TRectype & rec) const void TPrecedenza::print_on(ostream& out) const { - out << _tipoart << _prec << ';' << _codart << ';' << _anno << ';' << _provv << ';' << _codnum << ';' << _ndoc << ';' << _idriga << ';' << _nrow << ';' << _qta << ';' << _pacchi << ';' << _tipocf << ';' << _codcf; + out << _tipoart << ';' << _prec << ';' << _codart << ';' << _anno << ';' << _provv << ';' << _codnum << ';' << _ndoc << ';' << _idriga << ';' << _nrow << ';' << _qta << ';' << _pacchi << ';' << _tipocf << ';' << _codcf; } int sort_prec(const TObject** o1, const TObject** o2) @@ -507,7 +509,7 @@ void TCrea_cartellini::crea_precedenze(ofstream & outfile, TArray & precs) precs.sort(sort_prec); const int prec_nrows = precs.items(); - outfile << "Precedenze\nPrecedenza;Articolo;Anno;;Numerazione;Numero;ID Riga;Numero riga;Quantità;Pacchi;Cliente\n"; + outfile << "Precedenze\nTipo;Precedenza;Articolo;Anno;;Numerazione;Numero;ID Riga;Numero riga;Quantità;Pacchi;Cliente\n"; for (int r = 0; r < prec_nrows; r++) outfile << precs[r] << '\n'; } @@ -634,12 +636,15 @@ void TCrea_cartellini::riempi_normale(TArray & carrelli, TArray & precs, int lev } 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); - + TCarrello * c = (TCarrello *) carrelli.objptr(ncarrello++); + + if (c == NULL) + { + c = new TCarrello(p.key_carrello(ncarrello)); + carrelli.add(c); + c->destroy_rows(); + } + TRectype & rec = c->row(c->rows() + 1, true); p.prec2rec(rec); @@ -650,10 +655,14 @@ void TCrea_cartellini::riempi_normale(TArray & carrelli, TArray & precs, int lev p.pacchi() -= pacchi; } - TCarrello * c = ncarrello < ncarrelli ? (TCarrello *) carrelli.objptr(ncarrello) : new TCarrello(p.key_carrello(ncarrello + 1)); - - c->destroy_rows(); - carrelli.add(c); + TCarrello * c = (TCarrello *) carrelli.objptr(ncarrello++); + + if (c == NULL) + { + c = new TCarrello(p.key_carrello(ncarrello)); + carrelli.add(c); + c->destroy_rows(); + } TRectype & rec = c->row(c->rows() + 1, true); @@ -754,14 +763,16 @@ void TCrea_cartellini::crea_carrelli(TArray & precs) riempi_resti(carrelli, precs); } - for (int c = 0; c < carrelli.items(); c++) + _contnum = carrelli.items(); + + for (int c = 0; c < _contnum; c++) { TCarrello & carrello = (TCarrello &) carrelli[c]; carrello.write(true); } - for (int c = carrelli.items() + 1 ; ; c++) + for (int c = _contnum + 1 ; ; c++) { TCarrello carrello(((TPrecedenza &) precs[0]).key_carrello(c)); @@ -775,7 +786,6 @@ void TCrea_cartellini::crea_carrelli(TArray & precs) else break; } - _contnum = carrelli.items(); } void TCrea_cartellini::stampa()