Fix scanner barcode per i plu
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
using CommunityToolkit.Mvvm.Messaging;
|
||||
using Microsoft.Maui.Devices.Sensors;
|
||||
using SteUp.Shared.Core.BarcodeReader.Contracts;
|
||||
using SteUp.Shared.Core.BarcodeReader.Dto;
|
||||
using SteUp.Shared.Core.BarcodeReader.Enum;
|
||||
using SteUp.Shared.Core.Messages.Scanner;
|
||||
|
||||
namespace SteUp.Shared.Core.BarcodeReader;
|
||||
@@ -19,14 +22,31 @@ public class BarcodeManager(
|
||||
scanner.Register(
|
||||
onScanSuccessful: dto =>
|
||||
{
|
||||
messenger.Send(new NewScannerMessage(dto.StringValue));
|
||||
var stringValue = dto.StringValue;
|
||||
|
||||
if (IsEanPeso(dto))
|
||||
stringValue = DecodeEanPeso(stringValue);
|
||||
|
||||
messenger.Send(new NewScannerMessage(stringValue));
|
||||
},
|
||||
onScanFailed: ex =>
|
||||
{
|
||||
messenger.Send(new ErrorScannerMessage(ex.Message));
|
||||
}
|
||||
onScanFailed: ex => { messenger.Send(new ErrorScannerMessage(ex.Message)); }
|
||||
);
|
||||
|
||||
scanner.Init(() => { scanner.ChangeSettings([("TRIGGER_SCAN_MODE", "ONE_SHOT")]); });
|
||||
}
|
||||
|
||||
private static bool IsEanPeso(BarcodeScanDto barcodeScan) =>
|
||||
(IsEtichetta128(barcodeScan) || IsEan13(barcodeScan)) && barcodeScan.StringValue is { Length: 13 } &&
|
||||
barcodeScan.StringValue.StartsWith('2');
|
||||
|
||||
private static bool IsEtichetta128(BarcodeScanDto barcodeScan) =>
|
||||
barcodeScan.Type is BarcodeType.CODE128 or BarcodeType.EAN128;
|
||||
|
||||
private static bool IsEan13(BarcodeScanDto barcodeScan) =>
|
||||
barcodeScan.Type == BarcodeType.EAN13;
|
||||
|
||||
private static string DecodeEanPeso(string? barcode)
|
||||
{
|
||||
return barcode is not { Length: 13 } ? throw new Exception("Errore durante il parse del barcode (" + barcode + ")") : barcode.Substring(1, 6);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user