refined document sequence management

This commit is contained in:
2026-05-16 09:04:18 +02:00
parent b5ccb0428d
commit a166992b04
6 changed files with 170 additions and 78 deletions

View File

@@ -5,6 +5,7 @@ import 'package:flux/features/documents/data/tickets_shipment_repository.dart';
import 'package:flux/features/documents/models/shipment_document_model.dart';
import 'package:flux/features/master_data/providers/models/provider_location_model.dart';
import 'package:flux/features/master_data/providers/models/provider_model.dart';
import 'package:flux/features/settings/document_sequence/data/document_sequence_repository.dart';
import 'package:get_it/get_it.dart';
part 'ticket_shipping_state.dart';
@@ -12,6 +13,8 @@ part 'ticket_shipping_state.dart';
class TicketShippingCubit extends Cubit<TicketShippingState> {
final TicketsShipmentRepository _repository =
GetIt.I<TicketsShipmentRepository>();
final DocumentSequenceRepository _sequenceRepository =
GetIt.I<DocumentSequenceRepository>();
TicketShippingCubit({required List<String> ticketIds})
: super(
TicketShippingState(
@@ -79,16 +82,28 @@ class TicketShippingCubit extends Cubit<TicketShippingState> {
);
}
void toggleAutoNumber(bool value) {
Future<void> toggleAutoNumber(bool value) async {
// Aggiorniamo subito l'UI per mostrare che lo switch si è acceso
emit(state.copyWith(isAutoNumber: value));
if (value) {
final nextNumber = "DDT-${DateTime.now().year}-001";
emit(
state.copyWith(
document: state.document.copyWith(docNumber: nextNumber),
),
);
// Se lo switch è acceso, chiediamo il numero al DB
try {
final nextNumber = await _sequenceRepository.getNextDocumentNumber(
'ddt',
);
emit(
state.copyWith(
document: state.document.copyWith(docNumber: nextNumber),
),
);
} catch (e) {
// Se qualcosa va storto, spegniamo lo switch e mostriamo l'errore
emit(state.copyWith(isAutoNumber: false, errorMessage: e.toString()));
}
} else {
// Se lo spegne, svuotiamo semplicemente il campo
emit(state.copyWith(document: state.document.copyWith(docNumber: '')));
}
}