Patch level : 10.0 332

Files correlati     : ve0.exe
Ricompilazione Demo : [ ]
Commento

Esteso l'handler sulla data di consegna ora duplica la riga se non puo' generare le date di scadenza


git-svn-id: svn://10.65.10.50/trunk@19005 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2009-06-11 01:02:50 +00:00
parent 0f3e400b2a
commit 259d007550

View File

@ -471,89 +471,122 @@ bool dcons_handler( TMask_field& f, KEY key )
TMask& row_mask = f.mask();
TSheet_field& s = *row_mask.get_sheet();
TDocumento_mask & mask = (TDocumento_mask &) s.mask();
int r = f.mask().get_sheet()->selected() + 1;
const int r0 = f.mask().get_sheet()->selected() + 1;
int r = r0 + 1;
TDocumento & doc = mask.doc();
bool multiple_rows = (r <= doc.physical_rows());
if (r > 1)
{
TDocumento & doc = mask.doc();
const TRiga_documento& prev = doc[r - 1];
TDate first_date = prev.get_date(RDOC_DATACONS);
TDate second_date = row_mask.get_date(FR_DATACONS);
if (!second_date.ok())
second_date = mask.get_date(F_DATACONS);
if (second_date.ok())
if (multiple_rows)
{
if (!first_date.ok())
first_date = mask.get_date(F_DATACONS);
if (first_date.ok())
const TString codart = doc[r].get(RDOC_CODART);
multiple_rows = codart == doc[r0].get(RDOC_CODART);
}
if (multiple_rows)
{
const TRiga_documento& prev = doc[r - 1];
TDate first_date = prev.get_date(RDOC_DATACONS);
TDate second_date = doc[r].get_date(RDOC_DATACONS);
if (!second_date.ok())
second_date = mask.get_date(F_DATACONS);
if (second_date.ok())
{
if (second_date.is_end_month() && first_date.is_end_month())
if (!first_date.ok())
first_date = mask.get_date(F_DATACONS);
if (first_date.ok())
{
int year = second_date.year();
int month = second_date.month();
const int months = ( year * 12 + month) - (first_date.year() * 12 + first_date.month());
if (months > 0)
if (second_date.is_end_month() && first_date.is_end_month())
{
for (r++ ; r <= doc.physical_rows(); r++)
{
TRiga_documento & riga = doc[r];
TToken_string & tr = s.row(r - 1);
month += months;
if (month > 12)
{
year++;
month -= 12;
}
TDate d(1, month, year);
d.set_end_month();
riga.put(RDOC_DATACONS, d);
tr.add(riga.get(RDOC_DATACONS), s.cid2index(FR_DATACONS));
}
s.force_update();
}
}
else
if (second_date.day() == first_date.day())
{
const int months = ( second_date.year() * 12 + second_date.month()) - (first_date.year() * 12 + first_date.month());
int year = second_date.year();
int month = second_date.month();
const int months = ( year * 12 + month) - (first_date.year() * 12 + first_date.month());
const TString80 cod = doc[r].get(RDOC_CODART);
if (months > 0)
{
for (r++ ; r <= doc.physical_rows(); r++)
for (r++ ; r <= doc.physical_rows() && cod == doc[r].get(RDOC_CODART); r++)
{
TRiga_documento & riga = doc[r];
TToken_string & tr = s.row(r - 1);
second_date.addmonth(months);
riga.put(RDOC_DATACONS, second_date);
month += months;
if (month > 12)
{
year++;
month -= 12;
}
TDate d(1, month, year);
d.set_end_month();
riga.put(RDOC_DATACONS, d);
tr.add(riga.get(RDOC_DATACONS), s.cid2index(FR_DATACONS));
}
s.force_update();
}
}
else
{
const int days = second_date - first_date;
if (days > 0)
if (second_date.day() == first_date.day())
{
for (r++ ; r <= doc.physical_rows(); r++)
const int months = ( second_date.year() * 12 + second_date.month()) - (first_date.year() * 12 + first_date.month());
if (months > 0)
{
TRiga_documento & riga = doc[r];
TToken_string & tr = s.row(r - 1);
const TString80 cod = doc[r].get(RDOC_CODART);
for (r++ ; r <= doc.physical_rows() && cod == doc[r].get(RDOC_CODART); r++)
{
TRiga_documento & riga = doc[r];
TToken_string & tr = s.row(r - 1);
second_date += days;
riga.put(RDOC_DATACONS, second_date);
tr.add(riga.get(RDOC_DATACONS), s.cid2index(FR_DATACONS));
second_date.addmonth(months);
riga.put(RDOC_DATACONS, second_date);
tr.add(riga.get(RDOC_DATACONS), s.cid2index(FR_DATACONS));
}
s.force_update();
}
s.force_update();
}
}
else
{
const int days = second_date - first_date;
if (days > 0)
{
const TString80 cod = doc[r].get(RDOC_CODART);
for (r++ ; r <= doc.physical_rows() && cod == doc[r].get(RDOC_CODART); r++)
{
TRiga_documento & riga = doc[r];
TToken_string & tr = s.row(r - 1);
second_date += days;
riga.put(RDOC_DATACONS, second_date);
tr.add(riga.get(RDOC_DATACONS), s.cid2index(FR_DATACONS));
}
s.force_update();
}
}
}
}
}
else
{
TRiga_documento & riga = doc.insert_row(r, doc[r - 1].tipo().codice());
TDocumento::copy_data(riga, doc[r - 1]);
s.insert(r - 1);
s.select(r - 1);
TToken_string & tr = s.row(r - 1);
riga.zero(RDOC_QTA);
riga.zero(RDOC_DATACONS);
riga.autoload(s);
// tr.add("", s.cid2index(FR_QTA));
// tr.add("", s.cid2index(FR_DATACONS));
s.check_row(r - 1);
s.force_update();
}
}
}
return true;
@ -2294,8 +2327,8 @@ bool TDocumento_mask::numdocrif_search_handler(TMask_field& f, KEY key)
(const char *)m.get(F_CODNUM), m.get_int(F_ANNO));
cur.setfilter(filter);
TToken_string siblings;
TToken_string header(HR("Codice|Ragione Sociale@50|Docum.Rif.|Data@10|Docum.Rif. 1|Docum.Rif. 2|Docum.Rif. 3|Documento|Data\nDocumento@10|Totale\nDocumento@18V|Valuta"));
TToken_string fieldlist("CODCF|20->RAGSOC|NUMDOCRIF|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|DATADOC|G1:TOTDOC|CODVAL");
TToken_string header(HR("Codice|Ragione Sociale@50|Docum.Rif.|Data@10|Docum.Rif. 1|Docum.Rif. 2|Docum.Rif. 3|Documento|Data\nDocumento@10|Totale\nDocumento@18V|Valuta|Stato"));
TToken_string fieldlist("CODCF|20->RAGSOC|NUMDOCRIF|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|DATADOC|G1:TOTDOC|CODVAL|STATO");
if (__header == "883")
{
@ -2343,8 +2376,8 @@ bool TDocumento_mask::ragsoc_search_handler(TMask_field& f, KEY key)
cur.setfilter(filter, true);
TToken_string siblings;
TToken_string header(HR("Ragione Sociale@50|Codice|Documento|Data\nDocumento@10|Totale\nDocumento@18V|Valuta|Partita IVA"));
TToken_string fieldlist("20->RAGSOC|CODCF|NDOC|DATADOC|G1:TOTDOC|CODVAL|20->PAIV");
TToken_string header(HR("Ragione Sociale@50|Codice|Documento|Data\nDocumento@10|Totale\nDocumento@18V|Valuta|Stato|Partita IVA"));
TToken_string fieldlist("20->RAGSOC|CODCF|NDOC|DATADOC|G1:TOTDOC|CODVAL|STATO|20->PAIV");
if (__header == "883")
{