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:
parent
0f3e400b2a
commit
259d007550
157
ve/velib06a.cpp
157
ve/velib06a.cpp
@ -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")
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user