reportStockArtCalibres property
List<ReportStockArtCalibre>
get
reportStockArtCalibres
Implementation
List<ReportStockArtCalibre> get reportStockArtCalibres {
// reset
for (final r in emptyReportStockArtCalibres) {
r.initialQtCl = 0.0;
r.finalQtCl = 0.0;
//r.initialQtTickets = 0.0; // not mentioned here but needed keep it
r.varQtTickets = 0.0; // not mentioned here but needed keep it
for (final a in r.articles) {
a.qtIn = 0.0;
a.qtOut = 0.0;
}
}
final dateRange = DateRange(start, end);
// ticket logic is handled here
emptyReportStockArtCalibres = tickets.herderTicketsStock(
objectId, dateRange, articlesC, emptyReportStockArtCalibres);
final products = articlesC.where((p) => p.id != 0);
for (final cH in closingsObjects) {
// filtering like .where but more performant
if (cH.contactId == objectId && cH.closingRange.isInRange(start, end)) {
for (final p in products) {
// NO products can be bought & sold on the same ticket
// so we can SUM ALL movements
if (cH.articleCalibres.any((cSP) => cSP.id == p.id)) {
// qtin && qtOut needed for milk
// find the one matching the time filter
final clStockPrd = cH.articleCalibres
.firstWhere((closingStockP) => closingStockP.id == p.id);
// find the report
final rP = emptyReportStockArtCalibres
.firstWhere((reportStockP) => reportStockP.id == p.id);
// update values
rP.initialQtCl += clStockPrd.initialQtCl;
rP.finalQtCl += clStockPrd.finalQtCl;
// print("rP.finalQtCl ${rP.finalQtCl} rP.initialQtCl ${rP.initialQtCl} ${rP.title}");
if (p.articles.length > 1) {
for (final article in p.articles) {
// find the one matching the time filter
if (clStockPrd.articles.any((a) =>
a.id == article.id && a.calibreId == article.calibreId)) {
// find the exact closing
var cSArticle = clStockPrd.articles.firstWhere((a) =>
a.id == article.id && a.calibreId == article.calibreId);
// find the report
final aR = rP.articles.firstWhere((element) =>
element.id == article.id &&
element.calibreId == article.calibreId);
// update values
aR.qtIn += cSArticle.quantityIn;
aR.qtOut += cSArticle.quantityOut;
}
}
}
} else {
// print('closings do not fit requirements');
}
}
}
}
return emptyReportStockArtCalibres;
}