| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- import '../database/daos/articoli_dao.dart';
- import '../database/daos/listini_dao.dart';
- import '../database/daos/sconti_dao.dart';
- class PriceResult {
- final double? prezzo;
- final double sconto1;
- final double sconto2;
- final double sconto3;
- final double sconto4;
- final double sconto5;
- final String? listinoCode;
- PriceResult({
- this.prezzo,
- this.sconto1 = 0,
- this.sconto2 = 0,
- this.sconto3 = 0,
- this.sconto4 = 0,
- this.sconto5 = 0,
- this.listinoCode,
- });
- double get netto {
- double n = prezzo ?? 0;
- n *= (100 - sconto1) / 100;
- n *= (100 - sconto2) / 100;
- n *= (100 - sconto3) / 100;
- n *= (100 - sconto4) / 100;
- n *= (100 - sconto5) / 100;
- return n;
- }
- }
- class PricingService {
- final ArticoliDao _articoliDao;
- final ListiniDao _listiniDao;
- final ScontiDao _scontiDao;
- PricingService(this._articoliDao, this._listiniDao, this._scontiDao);
- Future<PriceResult> getPriceAndDiscountForCustomer(
- int idCliente, int idArticolo, String date
- ) async {
- // First try: customer-specific list
- final clienteList = await _articoliDao.getCustomerListPrice(idCliente, idArticolo, date);
- if (clienteList != null && clienteList.prezzo != null && clienteList.prezzo! > 0) {
- double? s1, s2, s3, s4, s5;
- if (clienteList.idSconto != null) {
- final sconto = await _scontiDao.findById(clienteList.idSconto!);
- if (sconto != null) {
- s1 = sconto.sconto1;
- s2 = sconto.sconto2;
- s3 = sconto.sconto3;
- s4 = sconto.sconto4;
- s5 = sconto.sconto5;
- }
- }
- return PriceResult(
- prezzo: clienteList.prezzo,
- sconto1: s1 ?? 0,
- sconto2: s2 ?? 0,
- sconto3: s3 ?? 0,
- sconto4: s4 ?? 0,
- sconto5: s5 ?? 0,
- );
- }
- // Second try: general list price
- final listini = await _articoliDao.getPriceCodes(idArticolo);
- for (final l in listini) {
- final lp = await _articoliDao.getListPrice(l.idListino, idArticolo, date);
- if (lp != null && lp.prezzo != null && lp.prezzo! > 0) {
- double? s1, s2, s3, s4, s5;
- if (lp.idSconto != null) {
- final tabella = await _scontiDao.findById(lp.idSconto!);
- if (tabella != null) {
- s1 = tabella.sconto1;
- s2 = tabella.sconto2;
- s3 = tabella.sconto3;
- s4 = tabella.sconto4;
- s5 = tabella.sconto5;
- }
- }
- return PriceResult(
- prezzo: lp.prezzo,
- sconto1: s1 ?? 0,
- sconto2: s2 ?? 0,
- sconto3: s3 ?? 0,
- sconto4: s4 ?? 0,
- sconto5: s5 ?? 0,
- listinoCode: l.codListino,
- );
- }
- }
- return PriceResult();
- }
- }
|