This commit is contained in:
thuannd88
2024-09-05 13:54:06 +07:00
parent f4f433b838
commit acfa22a83a
3 changed files with 167 additions and 97 deletions
+107 -75
View File
@@ -120,7 +120,7 @@ namespace SafeBagDE70
StopTimers();
ShowError(state.CDMStatus);
}
GetCassetteData();
AppData.GetCassetteData();
}
catch (Exception ex)
{
@@ -231,7 +231,7 @@ namespace SafeBagDE70
DoStoreStart();
Dispatcher.Invoke(() =>
{
EndSession(1);
EndSession(COUNTINGSTATE.AUTOEND,"Tự động kết thúc");
});
Log.Information("7. Timout completed");
});
@@ -631,24 +631,7 @@ namespace SafeBagDE70
}
return bSuccess;
}
private byte[] GetCassetteData()
{
cCmdRsp.SendXXCmd((byte)Command.CMD_DE_READ_CASSETTE);
var data=cCmdRsp.recv_dat.dat;
StringBuilder str=new StringBuilder();
var recv_dat = cCmdRsp.recv_dat;
AppData.DeviceStatus.Notes = GetNotes(recv_dat.dat);
str.Append("DATA:");
for (int i = 0; i < recv_dat.leng - 1; i++)
{
var dat = string.Format("{0:X2} ", recv_dat.dat[i]);
str.Append(dat);
}
Log.Information("[CASSETTE]" + str.ToString());
return (byte[])data.Clone();
}
private int GetNotes(byte[] cassetData)
{
int notes = 0;
@@ -659,6 +642,7 @@ namespace SafeBagDE70
}
return notes;
}
private bool CheckStoreValid(byte[] previousCassetData, byte[] newCassetData,List<CountSession> countSessions)
{
var quantFromSession = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };//500.000->500
@@ -686,54 +670,80 @@ namespace SafeBagDE70
return bValid;
}
private bool CheckPreStoreValid(byte[] previousCassetData, int maxNotes, List<CountSession> countSessions)
{
var quantFromSession = 0;//500.000->500
var quantFromCasset = 0;
bool bValid = true;
foreach (var session in countSessions)
{
if ((session.IsStored == false))
{
for (int i = 0; i < 10; i++)
quantFromSession += session.QuantityDenomi[i];
}
}
int offset = 14;
for (int i=0;i<10; i++)
{
quantFromCasset += previousCassetData[2 * i + offset] * 256 + previousCassetData[2 * i + 1 + offset];
}
if (quantFromCasset + quantFromSession > maxNotes)
bValid = false;
return bValid;
}
private void UpdateListViewCountItems()
{
Dispatcher.Invoke(DispatcherPriority.Normal, () =>
{
double sum = 0;
if (sessions != null && sessions.Count > 0)
if (lvCountItems != null && lvCountItems.Count > 0)
{
for (int i = 0; i < 10; i++)
double sum = 0;
if (sessions != null && sessions.Count > 0)
{
int quantity = 0;
for (int i = 0; i < 10; i++)
{
int quantity = 0;
for (int j = 0; j < sessions.Count; j++)
{
quantity += sessions[j].QuantityDenomi[9 - i];
}
lvCountItems[i].Quantity = quantity.ToString();
sum += lvCountItems[i].getValue();
}
//Update amount of money
lvCountItems[10].Quantity = UpdateTotalQuantity().ToString();
lvCountItems[10].Value = sum.ToString();
//Update Notes In Sesion
notesInSession.GenuineNotes = 0;
notesInSession.RejectNotes = 0;
for (int j = 0; j < sessions.Count; j++)
{
quantity += sessions[j].QuantityDenomi[9 - i];
}
lvCountItems[i].Quantity = quantity.ToString();
sum += lvCountItems[i].getValue();
}
//Update amount of money
lvCountItems[10].Quantity = UpdateTotalQuantity().ToString();
lvCountItems[10].Value = sum.ToString();
//Update Notes In Sesion
notesInSession.GenuineNotes = 0;
notesInSession.RejectNotes = 0;
for (int j = 0; j < sessions.Count; j++)
{
if (sessions[j].IsStored == false)
{
for (int i = 0; i < 10; i++)
if (sessions[j].IsStored == false)
{
notesInSession.GenuineNotes += sessions[j].QuantityDenomi[9 - i];
for (int i = 0; i < 10; i++)
{
notesInSession.GenuineNotes += sessions[j].QuantityDenomi[9 - i];
}
notesInSession.RejectNotes += sessions[j].TempNotes.Sum();
}
notesInSession.RejectNotes += sessions[j].TempNotes.Sum();
}
}
else
{
for (int i = 0; i < 11; i++)
{
lvCountItems[i].Quantity = "0";
lvCountItems[i].Value = "0";
}
}
}
else
{
for (int i = 0; i < 11; i++)
{
lvCountItems[i].Quantity = "0";
lvCountItems[i].Value = "0";
}
}
});
}
@@ -824,35 +834,46 @@ namespace SafeBagDE70
//Debug.WriteLine(quantityStored);
var previousCassetData = GetCassetteData();
cCmdRsp.SendXXCmd((byte)Command.CMD_DE_STORESTART);
bSuccess=WaitUntilCountReady(10);
var newCasstData = GetCassetteData();
bool bValid= CheckStoreValid(previousCassetData,newCasstData,sessions);
if(bValid)
var previousCassetData = AppData.GetCassetteData();
if(CheckPreStoreValid(previousCassetData,300,sessions))
{
if (bSuccess)
cCmdRsp.SendXXCmd((byte)Command.CMD_DE_STORESTART);
bSuccess = WaitUntilCountReady(10);
var newCasstData = AppData.GetCassetteData();
bool bValid = CheckStoreValid(previousCassetData, newCasstData, sessions);
if (bValid)
{
foreach (var item in sessions)
if (bSuccess)
{
item.IsStored = true;
foreach (var item in sessions)
{
item.IsStored = true;
}
quantityStored = UpdateTotalQuantity();
Log.Information("Stored " + GetShortInforFromCountItems());
}
else
{
Log.Error("Store FAIL " + GetShortInforFromCountItems());
}
quantityStored = UpdateTotalQuantity();
Log.Information("Stored " + GetShortInforFromCountItems());
}
else
{
Log.Error("Store FAIL " + GetShortInforFromCountItems());
string str = "PHIÊN GIAO DỊCH KHÔNG HỢP LỆ (SỐ TIỀN GIAO DỊCH KHÔNG KHỚP), VUI LÒNG BÁO CÁO LẠI CHI NHÁNH";
Log.Information(str);
ShowError(str);
}
}
Thread.Sleep(1000);
}
else
{
string str = "PHIÊN GIAO DỊCH KHÔNG HỢP LỆ (SỐ TIỀN GIAO DỊCH KHÔNG KHỚP), VUI LÒNG BÁO CÁO LẠI CHI NHÁNH";
string str = "KÉT ĐÃ ĐẦY ĐỀ NGHỊ LẤY LẠI TIỀN VÀ KẾT THÚC GIAO DỊCH, VUI LÒNG BÁO CÁO LẠI CHI NHÁNH";
Log.Information(str);
ShowError(str);
}
Thread.Sleep(2000);
DoCheck();
EndSession(COUNTINGSTATE.FULLIFSTORE,str);
}
}
catch (Exception ex)
{
@@ -959,7 +980,7 @@ namespace SafeBagDE70
return bSuccess;
}
private void EndSession(int _CountingState=0)
private void EndSession(COUNTINGSTATE _CountingState =0, string? strMessage=null)
{
string currentMethod = MethodBase.GetCurrentMethod().Name;
@@ -986,7 +1007,7 @@ namespace SafeBagDE70
UserId = AppData.CurrentCustomerAccount.CustomerId,
MachineTime = DateTime.Now.ToString("yyyyMMddHHmmss"),
GenuineNotes = quantityStored,
CountingState= _CountingState
CountingState= (int)_CountingState
};
SyncData(data2Send);
@@ -1000,9 +1021,20 @@ namespace SafeBagDE70
}
String strNotify = $"BẠN VỪA THỰC HIỆN NỘP TIỀN VÀO MÁY CDM:\r\n"
+ $"SỐ LƯỢNG TỜ: {totalQuantity}\r\n"
+ $"SỐ TIỀN: {totalValue} VND\r\n";
if (AppData.CurrentCustomerAccount != null)
{
var strTransactionCode = AppData.CurrentCustomerAccount.TransactionCode;
strNotify = strTransactionCode + "\r\n" + strNotify;
}
if(strMessage!=null)
{
strNotify += strMessage;
}
mainWindow.ShowInformationScreen(strNotify, false, false);
ResetSessions();
StartWelcomeTimer();