|
@@ -142,20 +142,16 @@ class ReferenceSyncService {
|
|
|
codArticolo: json['codArticolo'] as String? ?? '',
|
|
codArticolo: json['codArticolo'] as String? ?? '',
|
|
|
descrizione: json['descrizione'] as String?,
|
|
descrizione: json['descrizione'] as String?,
|
|
|
ean: json['ean'] as String?,
|
|
ean: json['ean'] as String?,
|
|
|
- idIva: (json['iva'] as Map<String, dynamic>?)?['idTabella']
|
|
|
|
|
- as int?,
|
|
|
|
|
- idClassifica1:
|
|
|
|
|
- (json['classifica1'] as Map<String, dynamic>?)?['idTabella']
|
|
|
|
|
- as int?,
|
|
|
|
|
- idClassifica2:
|
|
|
|
|
- (json['classifica2'] as Map<String, dynamic>?)?['idTabella']
|
|
|
|
|
- as int?,
|
|
|
|
|
- idClassifica3:
|
|
|
|
|
- (json['classifica3'] as Map<String, dynamic>?)?['idTabella']
|
|
|
|
|
- as int?,
|
|
|
|
|
- idClassifica4:
|
|
|
|
|
- (json['classifica4'] as Map<String, dynamic>?)?['idTabella']
|
|
|
|
|
- as int?,
|
|
|
|
|
|
|
+ idIva:
|
|
|
|
|
+ (json['iva'] as Map<String, dynamic>?)?['idTabella'] as int?,
|
|
|
|
|
+ idClassifica1: (json['classifica1']
|
|
|
|
|
+ as Map<String, dynamic>?)?['idTabella'] as int?,
|
|
|
|
|
+ idClassifica2: (json['classifica2']
|
|
|
|
|
+ as Map<String, dynamic>?)?['idTabella'] as int?,
|
|
|
|
|
+ idClassifica3: (json['classifica3']
|
|
|
|
|
+ as Map<String, dynamic>?)?['idTabella'] as int?,
|
|
|
|
|
+ idClassifica4: (json['classifica4']
|
|
|
|
|
+ as Map<String, dynamic>?)?['idTabella'] as int?,
|
|
|
peso: _toDouble(json['peso']),
|
|
peso: _toDouble(json['peso']),
|
|
|
giacenza: _toDouble(json['giacenza']),
|
|
giacenza: _toDouble(json['giacenza']),
|
|
|
unitaMisura: json['unitaMisura'] as String?,
|
|
unitaMisura: json['unitaMisura'] as String?,
|
|
@@ -197,6 +193,7 @@ class ReferenceSyncService {
|
|
|
validoA: json['validoA'] as String?,
|
|
validoA: json['validoA'] as String?,
|
|
|
attivo: json['attivo'] as int? ?? 1,
|
|
attivo: json['attivo'] as int? ?? 1,
|
|
|
dataModifica: json['dataModifica'] as String?,
|
|
dataModifica: json['dataModifica'] as String?,
|
|
|
|
|
+ listinoAgente: json['listinoAgente'] as int?,
|
|
|
),
|
|
),
|
|
|
mode: InsertMode.insertOrReplace,
|
|
mode: InsertMode.insertOrReplace,
|
|
|
);
|
|
);
|
|
@@ -226,11 +223,9 @@ class ReferenceSyncService {
|
|
|
idListino:
|
|
idListino:
|
|
|
listino?['idListino'] as int? ?? json['idListino'] as int?,
|
|
listino?['idListino'] as int? ?? json['idListino'] as int?,
|
|
|
idArticolo:
|
|
idArticolo:
|
|
|
- articolo?['idArticolo'] as int? ??
|
|
|
|
|
- json['idArticolo'] as int?,
|
|
|
|
|
|
|
+ articolo?['idArticolo'] as int? ?? json['idArticolo'] as int?,
|
|
|
prezzo: _toDouble(json['prezzo']),
|
|
prezzo: _toDouble(json['prezzo']),
|
|
|
- idSconto:
|
|
|
|
|
- sconto?['idSconto'] as int? ?? json['idSconto'] as int?,
|
|
|
|
|
|
|
+ idSconto: sconto?['idSconto'] as int? ?? json['idSconto'] as int?,
|
|
|
validoDa: json['validoDa'] as String?,
|
|
validoDa: json['validoDa'] as String?,
|
|
|
validoA: json['validoA'] as String?,
|
|
validoA: json['validoA'] as String?,
|
|
|
attivo: json['attivo'] as int? ?? 1,
|
|
attivo: json['attivo'] as int? ?? 1,
|
|
@@ -267,8 +262,7 @@ class ReferenceSyncService {
|
|
|
if (jsonIdCliente != null) {
|
|
if (jsonIdCliente != null) {
|
|
|
localIdCliente = cacheCliente[jsonIdCliente];
|
|
localIdCliente = cacheCliente[jsonIdCliente];
|
|
|
if (localIdCliente == null) {
|
|
if (localIdCliente == null) {
|
|
|
- final c =
|
|
|
|
|
- await _clientiDao.getByRemoteId(idAgente, jsonIdCliente);
|
|
|
|
|
|
|
+ final c = await _clientiDao.getByRemoteId(idAgente, jsonIdCliente);
|
|
|
localIdCliente = c?.idCliente;
|
|
localIdCliente = c?.idCliente;
|
|
|
cacheCliente[jsonIdCliente] = localIdCliente;
|
|
cacheCliente[jsonIdCliente] = localIdCliente;
|
|
|
}
|
|
}
|
|
@@ -280,8 +274,7 @@ class ReferenceSyncService {
|
|
|
idListino: listino?['idListino'] as int?,
|
|
idListino: listino?['idListino'] as int?,
|
|
|
idCliente: localIdCliente,
|
|
idCliente: localIdCliente,
|
|
|
idArticolo:
|
|
idArticolo:
|
|
|
- articolo?['idArticolo'] as int? ??
|
|
|
|
|
- json['idArticolo'] as int?,
|
|
|
|
|
|
|
+ articolo?['idArticolo'] as int? ?? json['idArticolo'] as int?,
|
|
|
idSconto: sconto?['idSconto'] as int?,
|
|
idSconto: sconto?['idSconto'] as int?,
|
|
|
validoDa: json['validoDa'] as String?,
|
|
validoDa: json['validoDa'] as String?,
|
|
|
validoA: json['validoA'] as String?,
|
|
validoA: json['validoA'] as String?,
|
|
@@ -295,7 +288,8 @@ class ReferenceSyncService {
|
|
|
}
|
|
}
|
|
|
await db.batch((batch) {
|
|
await db.batch((batch) {
|
|
|
for (final item in items) {
|
|
for (final item in items) {
|
|
|
- batch.insert(db.listiniCliente, item, mode: InsertMode.insertOrReplace);
|
|
|
|
|
|
|
+ batch.insert(db.listiniCliente, item,
|
|
|
|
|
+ mode: InsertMode.insertOrReplace);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
return data.length;
|
|
return data.length;
|
|
@@ -352,50 +346,51 @@ class ReferenceSyncService {
|
|
|
for (final json in data) {
|
|
for (final json in data) {
|
|
|
final dto = SyncPromoDto.fromJson(json as Map<String, dynamic>);
|
|
final dto = SyncPromoDto.fromJson(json as Map<String, dynamic>);
|
|
|
await db.into(db.promozioni).insert(
|
|
await db.into(db.promozioni).insert(
|
|
|
- Promozione(
|
|
|
|
|
- progressivo: dto.progressivo ?? 0,
|
|
|
|
|
- tipoPromozione: dto.tipoPromozione,
|
|
|
|
|
- descrizione: dto.descrizione,
|
|
|
|
|
- dataInizio: dto.dataInizio,
|
|
|
|
|
- dataFine: dto.dataFine,
|
|
|
|
|
- limiteQta: dto.limiteQta,
|
|
|
|
|
- quantitaOmaggio: dto.quantitaOmaggio,
|
|
|
|
|
- limiteImporto: dto.limiteImporto,
|
|
|
|
|
- stato: dto.stato,
|
|
|
|
|
- priorita: dto.priorita ?? 0,
|
|
|
|
|
- codice: dto.codice,
|
|
|
|
|
- idArticoloOmaggio: dto.articoloOmaggio?.idArticolo,
|
|
|
|
|
- idSconto: dto.sconto?.idSconto,
|
|
|
|
|
- idListino: dto.listinoOmaggio?.idListino,
|
|
|
|
|
- ),
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ Promozione(
|
|
|
|
|
+ progressivo: dto.progressivo ?? 0,
|
|
|
|
|
+ tipoPromozione: dto.tipoPromozione,
|
|
|
|
|
+ descrizione: dto.descrizione,
|
|
|
|
|
+ dataInizio: dto.dataInizio,
|
|
|
|
|
+ dataFine: dto.dataFine,
|
|
|
|
|
+ limiteQta: dto.limiteQta,
|
|
|
|
|
+ quantitaOmaggio: dto.quantitaOmaggio,
|
|
|
|
|
+ limiteImporto: dto.limiteImporto,
|
|
|
|
|
+ stato: dto.stato,
|
|
|
|
|
+ priorita: dto.priorita ?? 0,
|
|
|
|
|
+ codice: dto.codice,
|
|
|
|
|
+ idArticoloOmaggio: dto.articoloOmaggio?.idArticolo,
|
|
|
|
|
+ idSconto: dto.sconto?.idSconto,
|
|
|
|
|
+ idListino: dto.listinoOmaggio?.idListino,
|
|
|
|
|
+ ),
|
|
|
|
|
+ );
|
|
|
for (final art in dto.promozioneArticoli) {
|
|
for (final art in dto.promozioneArticoli) {
|
|
|
await db.into(db.promoArticoli).insert(
|
|
await db.into(db.promoArticoli).insert(
|
|
|
- PromoArticolo(
|
|
|
|
|
- progressivo: dto.progressivo ?? 0,
|
|
|
|
|
- riga: art.promozioneArticoloKey?.riga ?? 0,
|
|
|
|
|
- quantitaOmaggio: art.promozioneArticoloKey?.riga?.toDouble(),
|
|
|
|
|
- idArticolo: art.articolo?.idArticolo,
|
|
|
|
|
- ),
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ PromoArticolo(
|
|
|
|
|
+ progressivo: dto.progressivo ?? 0,
|
|
|
|
|
+ riga: art.promozioneArticoloKey?.riga ?? 0,
|
|
|
|
|
+ quantitaOmaggio:
|
|
|
|
|
+ art.promozioneArticoloKey?.riga?.toDouble(),
|
|
|
|
|
+ idArticolo: art.articolo?.idArticolo,
|
|
|
|
|
+ ),
|
|
|
|
|
+ );
|
|
|
}
|
|
}
|
|
|
for (final l in dto.promozioneListini) {
|
|
for (final l in dto.promozioneListini) {
|
|
|
await db.into(db.promoListini).insert(
|
|
await db.into(db.promoListini).insert(
|
|
|
- PromoListino(
|
|
|
|
|
- progressivo: dto.progressivo ?? 0,
|
|
|
|
|
- idListino: l.promozioneListinoKey?.idListino ?? 0,
|
|
|
|
|
- ),
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ PromoListino(
|
|
|
|
|
+ progressivo: dto.progressivo ?? 0,
|
|
|
|
|
+ idListino: l.promozioneListinoKey?.idListino ?? 0,
|
|
|
|
|
+ ),
|
|
|
|
|
+ );
|
|
|
}
|
|
}
|
|
|
for (final om in dto.promozioneOmaggio) {
|
|
for (final om in dto.promozioneOmaggio) {
|
|
|
await db.into(db.promoOmaggi).insert(
|
|
await db.into(db.promoOmaggi).insert(
|
|
|
- PromoOmaggio(
|
|
|
|
|
- progressivo: dto.progressivo ?? 0,
|
|
|
|
|
- riga: om.promozioneOmaggioKey?.riga ?? 0,
|
|
|
|
|
- idArticolo: om.articolo?.idArticolo,
|
|
|
|
|
- quantita: om.quantita,
|
|
|
|
|
- ),
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ PromoOmaggio(
|
|
|
|
|
+ progressivo: dto.progressivo ?? 0,
|
|
|
|
|
+ riga: om.promozioneOmaggioKey?.riga ?? 0,
|
|
|
|
|
+ idArticolo: om.articolo?.idArticolo,
|
|
|
|
|
+ quantita: om.quantita,
|
|
|
|
|
+ ),
|
|
|
|
|
+ );
|
|
|
}
|
|
}
|
|
|
count++;
|
|
count++;
|
|
|
}
|
|
}
|
|
@@ -411,43 +406,61 @@ class ReferenceSyncService {
|
|
|
String codAgente,
|
|
String codAgente,
|
|
|
String lastUpdate,
|
|
String lastUpdate,
|
|
|
) async {
|
|
) async {
|
|
|
|
|
+ Map<int, Cliente> cacheCliente = {};
|
|
|
|
|
+
|
|
|
try {
|
|
try {
|
|
|
final data = await _api.getList(
|
|
final data = await _api.getList(
|
|
|
'/rest/scadenze/updates/$codAgente/$lastUpdate',
|
|
'/rest/scadenze/updates/$codAgente/$lastUpdate',
|
|
|
);
|
|
);
|
|
|
final db = _scadenzeDao.db;
|
|
final db = _scadenzeDao.db;
|
|
|
await db.transaction(() async {
|
|
await db.transaction(() async {
|
|
|
- await db.delete(db.scadenze).go();
|
|
|
|
|
- await db.batch((batch) {
|
|
|
|
|
|
|
+ //await _scadenzeDao.markAllAsDeleted(idAgente);
|
|
|
|
|
+ await db.batch((batch) async {
|
|
|
for (final json in data) {
|
|
for (final json in data) {
|
|
|
- batch.insert(
|
|
|
|
|
- db.scadenze,
|
|
|
|
|
- Scadenza(
|
|
|
|
|
- idScadenza: json['idScadenza'] as int? ?? 0,
|
|
|
|
|
- idCliente: json['idCliente'] as int?,
|
|
|
|
|
- idAgente: json['idAgente'] as int?,
|
|
|
|
|
- chiave: json['chiave'] as String?,
|
|
|
|
|
- numPartita: json['numPartita'] as String?,
|
|
|
|
|
- dataScadenza: json['dataScadenza'] as String?,
|
|
|
|
|
- segno: json['segno'] as String?,
|
|
|
|
|
- importoFattura: _toDouble(json['importoFattura']),
|
|
|
|
|
- valuta: json['valuta'] as String?,
|
|
|
|
|
- numDoc: json['numDoc'] as String?,
|
|
|
|
|
- serieDoc: json['serieDoc'] as String?,
|
|
|
|
|
- dataDoc: json['dataDoc'] as String?,
|
|
|
|
|
- importoScadenza: _toDouble(json['importoScadenza']),
|
|
|
|
|
- saldo: _toDouble(json['saldo']),
|
|
|
|
|
- tipoPagamento: json['tipoPagamento'] as String?,
|
|
|
|
|
- flgSoppressa: json['flgSoppressa'] as int?,
|
|
|
|
|
- importoAbbuono: _toDouble(json['importoAbbuono']),
|
|
|
|
|
- note: json['note'] as String?,
|
|
|
|
|
- dataModifica: json['dataModifica'] as String?,
|
|
|
|
|
- stato: json['stato'] as String?,
|
|
|
|
|
- ),
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ // cerca il cliente nella cache usando idClienteRemoto
|
|
|
|
|
+ final idClienteRemoto = json['idCliente'] as int?;
|
|
|
|
|
+ Cliente? cliente = cacheCliente[idClienteRemoto];
|
|
|
|
|
+ if (cliente == null) {
|
|
|
|
|
+ cliente =
|
|
|
|
|
+ await _clientiDao.getByRemoteId(idAgente, idClienteRemoto!);
|
|
|
|
|
+ if (cliente != null) {
|
|
|
|
|
+ cacheCliente[idClienteRemoto] = cliente;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (cliente != null) {
|
|
|
|
|
+ batch.insert(
|
|
|
|
|
+ db.scadenze,
|
|
|
|
|
+ Scadenza(
|
|
|
|
|
+ idScadenza: json['idScadenza'] as int? ?? 0,
|
|
|
|
|
+ idCliente: cliente.idCliente,
|
|
|
|
|
+ idAgente: idAgente,
|
|
|
|
|
+ chiave: json['chiave'] as String?,
|
|
|
|
|
+ numPartita: json['numPartita'] as String?,
|
|
|
|
|
+ dataScadenza: json['dataScadenza'] as String?,
|
|
|
|
|
+ segno: json['segno'] as String?,
|
|
|
|
|
+ importoFattura: _toDouble(json['importoFattura']),
|
|
|
|
|
+ valuta: json['valuta'] as String?,
|
|
|
|
|
+ numDoc: json['numDoc'] as String?,
|
|
|
|
|
+ serieDoc: json['serieDoc'] as String?,
|
|
|
|
|
+ dataDoc: json['dataDoc'] as String?,
|
|
|
|
|
+ importoScadenza: _toDouble(json['importoScadenza']),
|
|
|
|
|
+ saldo: _toDouble(json['saldo']),
|
|
|
|
|
+ tipoPagamento: json['tipoPagamento'] as String?,
|
|
|
|
|
+ flgSoppressa: json['flgSoppressa'] as int?,
|
|
|
|
|
+ importoAbbuono: _toDouble(json['importoAbbuono']),
|
|
|
|
|
+ note: json['note'] as String?,
|
|
|
|
|
+ dataModifica: json['dataModifica'] as String?,
|
|
|
|
|
+ stato: json['stato'] as String?,
|
|
|
|
|
+ ),
|
|
|
|
|
+ mode: InsertMode.insertOrReplace,
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
|
|
+
|
|
|
|
|
+ _scadenzeDao.removeDeleted();
|
|
|
return data.length;
|
|
return data.length;
|
|
|
} catch (ex) {
|
|
} catch (ex) {
|
|
|
print('Error downloading scadenze: $ex');
|
|
print('Error downloading scadenze: $ex');
|
|
@@ -460,31 +473,48 @@ class ReferenceSyncService {
|
|
|
String codAgente,
|
|
String codAgente,
|
|
|
String lastUpdate,
|
|
String lastUpdate,
|
|
|
) async {
|
|
) async {
|
|
|
|
|
+ Map<int, Cliente> cacheCliente = {};
|
|
|
|
|
+
|
|
|
try {
|
|
try {
|
|
|
final data = await _api.getList(
|
|
final data = await _api.getList(
|
|
|
'/rest/statistiche/updates/$codAgente/$lastUpdate',
|
|
'/rest/statistiche/updates/$codAgente/$lastUpdate',
|
|
|
);
|
|
);
|
|
|
final db = _statisticheDao.db;
|
|
final db = _statisticheDao.db;
|
|
|
await db.transaction(() async {
|
|
await db.transaction(() async {
|
|
|
- await db.delete(db.statisticheVendita).go();
|
|
|
|
|
- await db.batch((batch) {
|
|
|
|
|
|
|
+ await db.batch((batch) async {
|
|
|
for (final json in data) {
|
|
for (final json in data) {
|
|
|
- batch.insert(
|
|
|
|
|
- db.statisticheVendita,
|
|
|
|
|
- StatisticheVenditaData(
|
|
|
|
|
- id: json['id'] as int? ?? 0,
|
|
|
|
|
- idAgente: json['idAgente'] as int?,
|
|
|
|
|
- idCliente: json['idCliente'] as int?,
|
|
|
|
|
- idArticolo: json['idArticolo'] as int?,
|
|
|
|
|
- codStatistiche: json['codStatistiche'] as String?,
|
|
|
|
|
- riga: json['riga'] as int?,
|
|
|
|
|
- numeroFattura: json['numeroFattura'] as String?,
|
|
|
|
|
- dataFattura: json['dataFattura'] as String?,
|
|
|
|
|
- qta: _toDouble(json['qta']),
|
|
|
|
|
- importo: _toDouble(json['importo']),
|
|
|
|
|
- tipoVendita: json['tipoVendita'] as String?,
|
|
|
|
|
- ),
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ final idAgente = json['idAgente'] as int?;
|
|
|
|
|
+
|
|
|
|
|
+ // cerca il cliente nella cache usando idClienteRemoto
|
|
|
|
|
+ final idClienteRemoto = json['idCliente'] as int?;
|
|
|
|
|
+ Cliente? cliente = cacheCliente[idClienteRemoto];
|
|
|
|
|
+ if (cliente == null) {
|
|
|
|
|
+ cliente =
|
|
|
|
|
+ await _clientiDao.getByRemoteId(idAgente!, idClienteRemoto!);
|
|
|
|
|
+ if (cliente != null) {
|
|
|
|
|
+ cacheCliente[idClienteRemoto] = cliente;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (cliente != null) {
|
|
|
|
|
+ batch.insert(
|
|
|
|
|
+ db.statisticheVendita,
|
|
|
|
|
+ StatisticheVenditaData(
|
|
|
|
|
+ id: json['id'] as int? ?? 0,
|
|
|
|
|
+ idAgente: json['idAgente'] as int?,
|
|
|
|
|
+ idCliente: cliente.idCliente,
|
|
|
|
|
+ idArticolo: json['idArticolo'] as int?,
|
|
|
|
|
+ codStatistiche: json['codStatistiche'] as String?,
|
|
|
|
|
+ riga: json['riga'] as int?,
|
|
|
|
|
+ numeroFattura: json['numeroFattura'] as String?,
|
|
|
|
|
+ dataFattura: json['dataFattura'] as String?,
|
|
|
|
|
+ qta: _toDouble(json['qta']),
|
|
|
|
|
+ importo: _toDouble(json['importo']),
|
|
|
|
|
+ tipoVendita: json['tipoVendita'] as String?,
|
|
|
|
|
+ ),
|
|
|
|
|
+ mode: InsertMode.insertOrReplace,
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|