Skip to content

Commit

Permalink
Assembly v 6.0.8 (7.12.24)
Browse files Browse the repository at this point in the history
  • Loading branch information
adslbarxatov committed Dec 6, 2024
1 parent 21dffa3 commit cb523ca
Show file tree
Hide file tree
Showing 11 changed files with 106 additions and 50 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/Release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
# Константы, используемые далее по тексту
env:
PROJ: ${{ github.event.repository.name }}
TAG: '6.0.6'
TAG: '6.0.8'

steps:
# Проверка состава репозитория (без анализа, как может показаться)
Expand Down
Binary file modified .release/KassArray.apk
Binary file not shown.
Binary file modified .release/KassArray.exe
Binary file not shown.
Binary file modified .release/KassArrayDB.dll
Binary file not shown.
Binary file modified .release/KassArrayFN.exe
Binary file not shown.
Binary file modified .release/KassArrayLL.dll
Binary file not shown.
11 changes: 5 additions & 6 deletions .release/Release.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
_Изменения для v 6.0.6_:
_Изменения для v 6.0.8_:
- `Windows`: добавлена возможность наносить пользовательский логотип (или любое другое изображение, в том числе – с текстом) на сохраняемые руководства пользователя;
- `Android`: обновлены пакеты поддержки MAUI;
- `Android`: целевая платформа повышена до версии 35;
- `ФН`: исправлен дефект чтения ФН, внесённый версией `6.0.2`;
- `ФН`: кэш считанных статусов ФН теперь включён по умолчанию (касается только первого запуска);
- Добавлена серия ЗН ФН 73864408 для Пр15-4;
Expand All @@ -7,8 +10,4 @@ _Изменения для v 6.0.6_:
- Исправлена распиновка разъёма денежного ящика для ККТ Штрих (была отзеркалена);
- Добавлена серия ЗН ФН `7384408` для `Ав15-4`;
- Добавлены предполагаемые серии ЗН ФН `73824407` и `73844407`;
- Базовый адрес чтения ФН теперь может быть корректно переопределён даже для неизвестных приложению моделей;
- В интерфейсе срока жизни ФН разделены поля срока жизни и комментариев о применимости указанной модели ФН с данными реквизитами регистрации;
- Скорректировано отображение сроков жизни ФН для моделей на 36 месяцев;
- Добавлена серия ЗН ФН `72824407` для `Эв15-3`;
- `ФН`: отключено ограничение по сроку эксплуатации версии: актуальность сборки теперь полностью на контроле у пользователя
- Базовый адрес чтения ФН теперь может быть корректно переопределён даже для неизвестных приложению моделей
8 changes: 7 additions & 1 deletion Changes.log
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
KassArray: лог изменений

Версия 6.0.8:
• Windows: добавлена возможность наносить пользовательский логотип (или любое другое изображение,
в том числе – с текстом) на сохраняемые руководства пользователя;
• Android: обновлены пакеты поддержки MAUI;
• Android: целевая платформа повышена до версии 35

Версия 6.0.6:
• ФН: исправлен дефект чтения ФН, внесённый версией 6.0.2;
• ФН: кэш считанных статусов ФН теперь включён по умолчанию (касается только первого запуска);
Expand All @@ -11,7 +17,7 @@ KassArray: лог изменений
Версия 6.0.2:
• Добавлена серия ЗН ФН 73844408 для Ав15-4;
• Добавлены предполагаемые серии ЗН ФН 73824407 и 73844407;
Базовый адрес чтения ФН теперь может быть корректно переопределён даже для неизвестных
ФН: базовый адрес чтения ФН теперь может быть корректно переопределён даже для неизвестных
приложению моделей

Версия 6.0:
Expand Down
59 changes: 37 additions & 22 deletions src/KKTSupport.cs
Original file line number Diff line number Diff line change
Expand Up @@ -94,37 +94,42 @@ public enum UserManualsFlags
/// <summary>
/// Кассиры работают с паролями
/// </summary>
CashiersHavePasswords = 0x01,
CashiersHavePasswords = 0x0001,

/// <summary>
/// В чеках может быть более одной позиции
/// </summary>
MoreThanOneItemPerDocument = 0x02,
MoreThanOneItemPerDocument = 0x0002,

/// <summary>
/// Номенклатура содержит цены
/// </summary>
ProductBaseContainsPrices = 0x04,
ProductBaseContainsPrices = 0x0004,

/// <summary>
/// Номенклатура содержит услуги
/// </summary>
ProductBaseContainsServices = 0x08,
ProductBaseContainsServices = 0x0008,

/// <summary>
/// Номенклатура содержит маркированные товары
/// </summary>
DocumentsContainMarks = 0x10,
DocumentsContainMarks = 0x0010,

/// <summary>
/// Номенклатура содержит единственное наименование
/// </summary>
BaseContainsSingleItem = 0x20,
BaseContainsSingleItem = 0x0020,

/// <summary>
/// Необходимо добавить пользовательский логотип в печатное руководство
/// </summary>
AddManualLogo = 0x0040,

/// <summary>
/// Руководство для кассира
/// </summary>
GuideForCashier = 0x80,
GuideForCashier = 0x8000,
}

/// <summary>
Expand Down Expand Up @@ -199,16 +204,6 @@ public FNLifeResult (DateTime PDeadLine, FNLifeStatus PStatus)
/// </summary>
public static class KKTSupport
{
/*/// <summary>
/// Признак неприменимости ФН с указанными параметрами
/// </summary>
public const string FNLifeInacceptableSign = "!";
/// <summary>
/// Признак нежелательности использования ФН с указанными параметрами
/// </summary>
public const string FNLifeUnwelcomeSign = "?";*/

/// <summary>
/// Метод формирует дату истечения срока эксплуатации ФН с указанными параметрами
/// </summary>
Expand Down Expand Up @@ -251,16 +246,14 @@ public static FNLifeResult GetFNLifeEndDate (DateTime StartDate, FNLifeFlags Fla
!Flags.HasFlag (FNLifeFlags.Season) && !Flags.HasFlag (FNLifeFlags.Agents) &&
!Flags.HasFlag (FNLifeFlags.Excise) && !Flags.HasFlag (FNLifeFlags.Autonomous) ||

!Flags.HasFlag (FNLifeFlags.FN15) && /*Flags.HasFlag (FNLifeFlags.FFD12) &&*/
Flags.HasFlag (FNLifeFlags.Excise) ||
!Flags.HasFlag (FNLifeFlags.FN15) && Flags.HasFlag (FNLifeFlags.Excise) ||

!Flags.HasFlag (FNLifeFlags.FN15) && Flags.HasFlag (FNLifeFlags.Autonomous))
{
res = FNLifeStatus.Unwelcome;
}

// Результат
/*return res + StartDate.AddDays (length).ToString ("dd.MM.yyyy");*/
return new FNLifeResult (StartDate.AddDays (length), res);
}

Expand Down Expand Up @@ -952,6 +945,7 @@ public static PrintManager ActPrintManager
private static int charactersPerLine; // Зависимое значение
private static PrinterTypes internalPrinterType;
private static uint pageNumber;
private static bool addManualLogo;

private static Font printFont; // Зависимое значение
private static Brush printBrush = new SolidBrush (Color.FromArgb (0, 0, 0));
Expand Down Expand Up @@ -1037,6 +1031,11 @@ public static string PrintText (string TextForPrinting, PrinterTypes PrinterType
return null;
}

/// <summary>
/// Возвращает имя файла логотипа для добавления в руководство пользователя
/// </summary>
public const string ManualLogoFileName = "ManualLogo.p";

// Обработчик событий принтера
private static bool IsA4
{
Expand Down Expand Up @@ -1104,7 +1103,19 @@ private static void PrintPage (object sender, PrintPageEventArgs ev)
#if UMPRINT
if (IsA4)
ev.Graphics.DrawImage (Properties.KassArrayDB.KAQR, ev.PageBounds.Width -
leftMargin - 50, topMargin);
leftMargin - Properties.KassArrayDB.KAQR.Width / 12, topMargin);

if (addManualLogo && (internalPrinterType == PrinterTypes.ManualA4))
{
try
{
Bitmap b = (Bitmap)Image.FromFile (RDGenerics.AppStartupPath + ManualLogoFileName);
ev.Graphics.DrawImage (b, ev.PageBounds.Width - leftMargin - b.Width / 12,
Properties.KassArrayDB.KAQR.Height / 12 + 30 + topMargin);
b.Dispose ();
}
catch { }
}
#endif
}

Expand Down Expand Up @@ -1168,7 +1179,11 @@ private static void PrintPage (object sender, PrintPageEventArgs ev)
public static string BuildUserManual (UserManuals Manuals, uint ManualNumber, ulong Sections,
UserManualsFlags Flags)
{
bool forCashier = (Flags & UserManualsFlags.GuideForCashier) != 0;
bool forCashier = Flags.HasFlag ( UserManualsFlags.GuideForCashier);
#if !ANDROID
addManualLogo = Flags.HasFlag (UserManualsFlags.AddManualLogo);
#endif

string text = "Инструкция к ККТ " + Manuals.GetKKTList ()[(int)ManualNumber] +
" (" + (forCashier ? "для кассиров" : "полная") + ")";
text = text.PadLeft ((ManualA4CharPerLine - text.Length) / 2 + text.Length);
Expand Down
72 changes: 54 additions & 18 deletions src/TextToKKTForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,6 @@ public partial class TextToKKTForm: Form
// Дескриптор иконки в трее
private NotifyIcon ni = new NotifyIcon ();

/*// Рассчитанный срок жизни ФН
private string fnLifeResult = "";*/

// Сообщение о применимости ФН
private string fnLifeMessage = "";

Expand All @@ -36,6 +33,9 @@ public partial class TextToKKTForm: Form
// Число режимов преобразования
private uint encodingModesCount;

// Пересчитанная ширина логотипа для руководств пользователя
private int manualLogoWidth = 1200;

/// <summary>
/// Ключ командной строки, используемый при автозапуске для скрытия главного окна приложения
/// </summary>
Expand Down Expand Up @@ -202,6 +202,8 @@ public TextToKKTForm (string Flags)
RNMGenerate.Visible = LowLevelTab.Enabled = TLVTab.Enabled = ConnectorsTab.Enabled =
PrintFullUserManual.Visible = AppSettings.EnableExtendedMode; // Уровень 2
CodesTab.Enabled = AppSettings.EnableExtendedMode; // Уровень 1
AddManualLogo.Visible = ManualLogo.Visible = AppSettings.EnableExtendedMode &&
!RDGenerics.StartedFromMSStore;

if (AppSettings.EnableExtendedMode) // Уровень 2
{
Expand Down Expand Up @@ -261,7 +263,7 @@ private void ExtendedMode_CheckedChanged (object sender, EventArgs e)
}
else
{
RDGenerics.MessageBox (RDMessageTypes.Question_Left, AppSettings.NoExtendedModeMessage);
RDGenerics.MessageBox (RDMessageTypes.Question_Center, AppSettings.NoExtendedModeMessage);
AppSettings.EnableExtendedMode = false;
}

Expand Down Expand Up @@ -665,38 +667,26 @@ private void FNLifeStartDate_ValueChanged (object sender, EventArgs e)
KassArrayDB::RD_AAOW.FNLifeResult res =
KassArrayDB::RD_AAOW.KKTSupport.GetFNLifeEndDate (FNLifeStartDate.Value, FNLifeEvFlags);

/*FNLifeResult.Text = "ФН прекратит работу ";
if (res.StartsWith (KassArrayDB::RD_AAOW.KKTSupport.FNLifeInacceptableSign))*/
FNLifeDate.Text = res.DeadLine;
switch (res.Status)
{
case KassArrayDB::RD_AAOW.FNLifeStatus.Inacceptable:
FNLifeDate.ForeColor = FNLifeStatus.ForeColor =
RDGenerics.GetInterfaceColor (RDInterfaceColors.ErrorText);
/*fnLifeResult = res.Substring (1);
FNLifeResult.Text += (fnLifeResult + KassArrayDB::RD_AAOW.FNSerial.FNIsNotAcceptableMessage);*/
fnLifeMessage = KassArrayDB::RD_AAOW.FNSerial.FNIsNotAcceptableMessage;
break;

/*else if (res.StartsWith (KassArrayDB::RD_AAOW.KKTSupport.FNLifeUnwelcomeSign))*/
case KassArrayDB::RD_AAOW.FNLifeStatus.Unwelcome:
FNLifeDate.ForeColor = FNLifeStatus.ForeColor =
RDGenerics.GetInterfaceColor (RDInterfaceColors.WarningText);
/*FNLifeResult.ForeColor = RDGenerics.GetInterfaceColor (RDInterfaceColors.WarningText);
fnLifeResult = res.Substring (1);
FNLifeResult.Text += (fnLifeResult + KassArrayDB::RD_AAOW.FNSerial.FNIsNotRecommendedMessage);*/
fnLifeMessage = KassArrayDB::RD_AAOW.FNSerial.FNIsNotRecommendedMessage;
break;

/*else*/
case KassArrayDB::RD_AAOW.FNLifeStatus.Acceptable:
default:
FNLifeDate.ForeColor = FNLifeStatus.ForeColor =
RDGenerics.GetInterfaceColor (RDInterfaceColors.SuccessText);
fnLifeMessage = KassArrayDB::RD_AAOW.FNSerial.FNIsAcceptableMessage;
/*FNLifeResult.ForeColor = RDGenerics.GetInterfaceColor (RDInterfaceColors.SuccessText);
fnLifeResult = res;
FNLifeResult.Text += res;*/
break;

case KassArrayDB::RD_AAOW.FNLifeStatus.StronglyUnwelcome:
Expand All @@ -713,7 +703,6 @@ private void FNLifeStartDate_ValueChanged (object sender, EventArgs e)
FNLifeDate.ForeColor = FNLifeStatus.ForeColor =
RDGenerics.GetInterfaceColor (RDInterfaceColors.ErrorText);

/*FNLifeResult.Text += KassArrayDB::RD_AAOW.FNSerial.FNIsNotAllowedMessage;*/
fnLifeMessage += (RDLocale.RN + KassArrayDB::RD_AAOW.FNSerial.FNIsNotAllowedMessage);
FNLifeName.BackColor = RDGenerics.GetInterfaceColor (RDInterfaceColors.ErrorMessage);
}
Expand Down Expand Up @@ -1077,7 +1066,7 @@ private void PrintUserManual_Click (object sender, EventArgs e)
{
// Сборка задания на печать
KassArrayDB::RD_AAOW.UserManualsFlags flags = UserManualFlags;
if (((Button)sender).Name.Contains ("Cashier"))
if (((Button)sender).Name == PrintUserManualForCashier.Name)
flags |= KassArrayDB::RD_AAOW.UserManualsFlags.GuideForCashier;

string text = KassArrayDB::RD_AAOW.KKTSupport.BuildUserManual (kb.UserGuides,
Expand All @@ -1101,6 +1090,49 @@ private void AddToPrint_CheckedChanged (object sender, EventArgs e)
AppSettings.UserManualSectionsState = (uint)sections;
}

// Выбор лого для руководства пользователя
private void SetUserManualLogo (object sender, EventArgs e)
{
// Попытка загрузки исходного изображения
if (OFDialog.ShowDialog () != DialogResult.OK)
return;

Bitmap b;
try
{
b = (Bitmap)Image.FromFile (OFDialog.FileName);
}
catch
{
RDGenerics.MessageBox (RDMessageTypes.Warning_Center,
"Выбранный файл недоступен или не является поддерживаемым файлом изображения");
return;
}

// Преобразование и сохранение
Bitmap b2 = new Bitmap (b, manualLogoWidth, manualLogoWidth * b.Height / b.Width);
b2.SetResolution (1000, 1000);
b.Dispose ();

try
{
b2.Save (RDGenerics.AppStartupPath + KassArrayDB::RD_AAOW.KKTSupport.ManualLogoFileName,
System.Drawing.Imaging.ImageFormat.Png);
}
catch
{
RDGenerics.MessageBox (RDMessageTypes.Warning_Center,
string.Format (RDLocale.GetDefaultText (RDLDefaultTexts.Message_SaveFailure_Fmt),
KassArrayDB::RD_AAOW.KKTSupport.ManualLogoFileName));
b2.Dispose ();
return;
}
b2.Dispose ();

// Успешно
RDGenerics.MessageBox (RDMessageTypes.Success_Center, "Логотип успешно добавлен", 1000);
}

/// <summary>
/// Возвращает или задаёт состав флагов для руководства пользователя
/// </summary>
Expand All @@ -1122,6 +1154,8 @@ private void AddToPrint_CheckedChanged (object sender, EventArgs e)
flags |= KassArrayDB::RD_AAOW.UserManualsFlags.DocumentsContainMarks;
if (BaseContainsSingleItem.Checked)
flags |= KassArrayDB::RD_AAOW.UserManualsFlags.BaseContainsSingleItem;
if (AddManualLogo.Checked)
flags |= KassArrayDB::RD_AAOW.UserManualsFlags.AddManualLogo;

return flags;
}
Expand All @@ -1139,6 +1173,8 @@ private void AddToPrint_CheckedChanged (object sender, EventArgs e)
value.HasFlag (KassArrayDB::RD_AAOW.UserManualsFlags.DocumentsContainMarks);
BaseContainsSingleItem.Checked =
value.HasFlag (KassArrayDB::RD_AAOW.UserManualsFlags.BaseContainsSingleItem);
AddManualLogo.Checked =
value.HasFlag (KassArrayDB::RD_AAOW.UserManualsFlags.AddManualLogo);
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/android/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.RD_AAOW.TextToKKT"
android:installLocation="internalOnly" android:versionCode="601602" android:versionName="6.0">
android:installLocation="internalOnly" android:versionCode="601603" android:versionName="6.0.8">

<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="34" />
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="35" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
Expand Down

0 comments on commit cb523ca

Please sign in to comment.