ЗМІНА РОЗМІРУ МОДИФІКАТОРІВ І КОМЕНТАРІВ НА СЕРВІСНОМУ ЧЕЦІ
У шаблоні сервісного чеку шукаємо функцію:
@helper ModifiersTable(IProductItem productItem, bool onlyCommonModifiers = false)
У тілі цієї функції, шукаємо цей кусок коду:
<f1>
<table>
<columns>
<column autowidth="" minwidth="2"/>
@TableColumns()
</columns>
<cells>
@if (commentText != null && (onlyCommonModifiers || productItem.CompoundsInfo == null))
{
<ct />
<c>
@(Model.CookingPlace == productItem.CookingPlace
? commentText
: string.Format(Resources.CookingPlaceTemplate, productItem.CookingPlace.Name, commentText))
</c>
<ct />
}
@Modifiers(modifiers, productItem, onlyCommonModifiers)
@foreach (var zeroAmountModifier in zeroAmountModifiers)
{
var cookingPlace = zeroAmountModifier.Product.CookWithMainDish ? productItem.CookingPlace : zeroAmountModifier.CookingPlace;
<ct />
<c>
@(Model.CookingPlace == cookingPlace
? zeroAmountModifier.Product.GetKitchenOrDefaultName()
: string.Format(Resources.CookingPlaceTemplate, cookingPlace.Name, zeroAmountModifier.Product.GetKitchenOrDefaultName()))
</c>
<ct>
@CalculateModifierAmountString(0, zeroAmountModifier.DefaultAmount, zeroAmountModifier.HideIfDefaultAmount, zeroAmountModifier.AmountIndependentOfParentAmount, showDeltaAmount)
</ct>
}
</cells>
</table>
</f1> Фото зліва - ДО змін
Фото справа - Після внесення змін
ВИДАЛЕННЯ НАЗВ ЦЕХІВ ІЗ ЗВЕДЕНОГО СЕРВІСНОГО ЧЕКУ
У шаблоні сервісного чеку, шукаємо рядки, які починаються із:
string.Format(Resources.CookingPlaceTemplate, productItem.CookingPlace.Name......)
Текст Resources.CookingPlaceTemplate - буде однаковий, у кожному із рядків.
Текст productItem.CookingPlace.Name - може відрізнятись, але потрібно орієнтуватись на текст "CookingPlace.Name"
Алгоритм дій: щоб легше було знайти ці рядки, скопіюємо шаблон у Блокнот або Notepad++, та за допомогою пошуку, шукаємо "string.Format(Resources.CookingPlaceTemplate".
Після того, як впевнились, що знайшли потрібний рядок разом із "CookingPlace.Name" - видаляємо його. Дані зміни проводимо у всіх рядках, які містять цей текст.
Ось вирізка із коду, як виглядає один із рядків:
<f2>
<table>
<columns>
<column autowidth="" minwidth="2"/>
@TableColumns()
</columns>
<cells>
@if (commentText != null && (onlyCommonModifiers || productItem.CompoundsInfo == null))
{
<ct />
<c>
@(Model.CookingPlace == productItem.CookingPlace
? commentText
: string.Format(Resources.CookingPlaceTemplate, productItem.CookingPlace.Name, commentText))
</c>
<ct />
}
@Modifiers(modifiers, productItem, onlyCommonModifiers)
@foreach (var zeroAmountModifier in zeroAmountModifiers)
{
var cookingPlace = zeroAmountModifier.Product.CookWithMainDish ? productItem.CookingPlace : zeroAmountModifier.CookingPlace;
<ct />
<c>
@(Model.CookingPlace == cookingPlace
? zeroAmountModifier.Product.GetKitchenOrDefaultName()
: string.Format(Resources.CookingPlaceTemplate, cookingPlace.Name, zeroAmountModifier.Product.GetKitchenOrDefaultName()))
</c>
<ct>
@CalculateModifierAmountString(0, zeroAmountModifier.DefaultAmount, zeroAmountModifier.HideIfDefaultAmount, zeroAmountModifier.AmountIndependentOfParentAmount, showDeltaAmount)
</ct>
}
</cells>
</table>
</f2> : string.Format(Resources.CookingPlaceTemplate, productItem.CookingPlace.Name, commentText))
та нижче, є ще один рядок:
: string.Format(Resources.CookingPlaceTemplate, cookingPlace.Name, zeroAmountModifier.Product.GetKitchenOrDefaultName()))
Різниця між цими рядками, що у них назва CookingPlace.Name - різна.
Далі потрібно в усіх рядках string.Format видалити текст із дужок - Resources.CookingPlaceTemplate, productItem.CookingPlace.Name та зберегти.
Фото зліва - ДО змін
Фото справа - Після внесення змін
Зміна Шрифту Позиції У Сервісному Чеку
У шаблоні сервісного чеку шукаємо функцію:
@helper ProductTable(IProductItem product)
У тілі цієї функції, шукаємо код:
@helper ProductTable(IProductItem product)
{
if (product.CompoundsInfo != null && product.CompoundsInfo.IsPrimaryComponent)
{
<f1>
<table>
<columns>
@TableColumns()
</columns>
<cells>
<ct>@string.Format("{0} {1}", product.CompoundsInfo.ModifierSchemaName, product.ProductSize == null ? string.Empty : product.ProductSize.Name)</ct>
<ct>@FormatAmount(product.Amount * 2)</ct>
</cells>
</table>
</f1>
@ModifiersTable(product, true)
}
<f1>
<table>
<columns>
@TableColumns()
</columns>
<cells>
@Product(product)
</cells>
</table>
</f1>
}
Зробити Відступ Між Рядками На Чеках
За допомогою тегу <np/> можемо у шаблоні чеку зробити інтервал між рядками. У вирізці із шаблону, для прикладу, додамо на початку три теги <np/>, які дадуть нам інтервал
<doc bell="" formatter="split">
<np/>
<np/>
<np/>
@if (Model is IServiceCheque)
{
@Service((IServiceCheque)Model)
}
else if (Model is IBanquetServiceCheque)
{
@Banquet((IBanquetServiceCheque)Model)
}
else if (Model is IDeleteProductsServiceCheque)
{
@DeleteProducts((IDeleteProductsServiceCheque)Model)
}
else if (Model is IDeleteModifiersServiceCheque)
{
@DeleteModifiers((IDeleteModifiersServiceCheque)Model)
}
else if (Model is IProductsServeCheque)
{
@ProductsServe((IProductsServeCheque)Model)
}
else if (Model is IWholeCourseServeCheque)
{
@WholeCourseServe((IWholeCourseServeCheque)Model)
}
else if (Model is ITableChangeServiceCheque)
{
@TableChanged((ITableChangeServiceCheque)Model)
}
else if (Model is IProductsMoveServiceCheque)
{
@ProductsMove((IProductsMoveServiceCheque)Model)
}
else
{
throw new NotSupportedException(string.Format("Invalid model type '{0}'", Model.GetType()));
}
</doc> Фото зліва - ДО змін
Фото справа - Після змін
Збільшити Текст "Разом До Сплати" І "Суму" На Гостьовому Рахунку
У шаблоні шукаємо функцію @helper Summaries(). У тілі цієї функції, шукаємо код:
@* -- РАЗОМ ДО СПЛАТИ - BEGIN -- *@
<c font="f1" colspan="4">
@(Model.AdditionalServiceChequeInfo == null ? Resources.BillFooterTotal : Resources.AdditionalServiceFooterTotalUpper)
</c>
<c font="f1" colspan="4">
<right>@MyFormatMoney(total)</right>
</c>
<linecell />
@* -- РАЗОМ ДО СПЛАТИ - END -- *@ Фото зліва - ДО змін
Фото справа - Після змін
Вивести на гостьовий рахунок інформацію про контрагентів
Для того, щоб вивести на шаблон інформацію про контрагентів, потрібно у шаблоні попереднього чеку знайти рядок
@СontrAgent()
та розкоментувати його. Щоб закоментувати певну інформацію на чеках, потрібно добавити символи @*----- тут код ----- *@
Ось як виглядає код, коли відображення по контрагентах вимкнено:
@* -- ПО КОНТРАГЕНТАМ - BEGIN (для того щоб включити в чеку опцію "По контрагентам:" потрібно розкоментувати рядок нижче - але до того відповідним чином відредагувати процедуру - @helper @СontrAgent()) -- *@
@* @СontrAgent()*@
@* -- ПО КОНТРАГЕНТАМ - END -- *@ @* -- ПО КОНТРАГЕНТАМ - BEGIN (для того щоб включити в чеку опцію "По контрагентам:" потрібно розкоментувати рядок нижче - але до того відповідним чином відредагувати процедуру - @helper @СontrAgent()) -- *@
@СontrAgent()
@* -- ПО КОНТРАГЕНТАМ - END -- *@ Фото зліва - ДО змін
Фото справа - Після змін
Змінити Назву Контрагента На Гостьовому Рахунку
Щоб змінити назву контрагента, потрібно у тілі функції @helper СontrAgent() знайти рядки, які починаються на IP_OOO_SUMM.Add.
Ось, як виглядає це у коді:
@helper СontrAgent()
{
@* -- ПО КОНТРАГЕНТАМ - BEGIN (для "Бар" - назва типу місця приготування повинна починатися з символу "_", все інше - "Кухня" ) -- *@
var order = Model.Order;
<linecell symbols="." />
<c colspan="4">По контрагентам:</c>
var cookingPlaceToSum = new Dictionary<ICookingPlaceType, decimal>();
decimal ooo =0m;
decimal ip=0m;
var IP_OOO_SUMM = new Dictionary<string, decimal>();
foreach (var productItem in order.Guests.SelectMany(g => g.Items).Where(item => item.DeletionInfo == null).OfType<IProductItem>())
{
var productItemSum = productItem.GetCost() - order.DiscountItems.Select(di => di.GetDiscountSumFor(productItem)).Sum();
if (productItem.CookingPlaceType.Name[0]=='_')
{
ooo += productItemSum;
}
else
{
ip += productItemSum;
}
foreach (var modifierEntry in productItem.ModifierEntries.Where(entry => entry.DeletionInfo == null))
{
var modifierEntrySum = modifierEntry.GetCost() - order.DiscountItems.Select(di => di.GetDiscountSumFor(modifierEntry)).Sum();
if (modifierEntry.CookingPlaceType.Name[0]=='_')
{
ooo += modifierEntrySum;
}
else
{
ip += modifierEntrySum;
}
}
}
IP_OOO_SUMM.Add("ФОП Петренко П.В :", ip);
IP_OOO_SUMM.Add("ФОП Іваненко О.Г :", ooo);
foreach (var kvp in IP_OOO_SUMM)
{
<c colspan="3" font="f0">
@kvp.Key
</c>
<ct>
@MyFormatMoney(kvp.Value)
</ct>
}
<linecell symbols="." />
IP_OOO_SUMM.Add("ФОП Петренко П.В :", ip);
IP_OOO_SUMM.Add("ФОП Іваненко О.Г :", ooo);
Де, "ФОП Петренко П.В" та "ФОП Іваненко О.Г" - контрагенти.
Щоб змінити назву контрагента на нового, необхідно у цьому рядку знайти потрібного, та вписати нового, наприклад, замість ФОП Петренко П.В - буде новий контрагент - ФОП Шевченко О.О. Код після змін буде виглядати:
@helper СontrAgent()
{
@* -- ПО КОНТРАГЕНТАМ - BEGIN (для "Бар" - назва типу місця приготування повинна починатися з символу "_", все інше - "Кухня" ) -- *@
var order = Model.Order;
<linecell symbols="." />
<c colspan="4">По контрагентам:</c>
var cookingPlaceToSum = new Dictionary<ICookingPlaceType, decimal>();
decimal ooo =0m;
decimal ip=0m;
var IP_OOO_SUMM = new Dictionary<string, decimal>();
foreach (var productItem in order.Guests.SelectMany(g => g.Items).Where(item => item.DeletionInfo == null).OfType<IProductItem>())
{
var productItemSum = productItem.GetCost() - order.DiscountItems.Select(di => di.GetDiscountSumFor(productItem)).Sum();
if (productItem.CookingPlaceType.Name[0]=='_')
{
ooo += productItemSum;
}
else
{
ip += productItemSum;
}
foreach (var modifierEntry in productItem.ModifierEntries.Where(entry => entry.DeletionInfo == null))
{
var modifierEntrySum = modifierEntry.GetCost() - order.DiscountItems.Select(di => di.GetDiscountSumFor(modifierEntry)).Sum();
if (modifierEntry.CookingPlaceType.Name[0]=='_')
{
ooo += modifierEntrySum;
}
else
{
ip += modifierEntrySum;
}
}
}
IP_OOO_SUMM.Add("ФОП Петренко П.В :", ip);
IP_OOO_SUMM.Add("ФОП Шевченко О.О :", ooo);
foreach (var kvp in IP_OOO_SUMM)
{
<c colspan="3" font="f0">
@kvp.Key
</c>
<ct>
@MyFormatMoney(kvp.Value)
</ct>
}
<linecell symbols="." />
Фото зліва - ДО змін
Фото справа - Після змін
Добавити +1 контрагента на гостьовому рахунку
Щоб добавити нового контрагента до поточних, у тілі функції @helper СontrAgent() маємо знайти змінні:
decimal ooo =0m;
decimal ip=0m;
Це наші зміни, у які ми записуємо вивід сум по контрагентах.
Вигляд коду до змін:
@helper СontrAgent()
{
var order = Model.Order;
<linecell symbols="." />
<c colspan="4">По контрагентам:</c>
var cookingPlaceToSum = new Dictionary<ICookingPlaceType, decimal>();
decimal ooo =0m;
decimal ip=0m;
var IP_OOO_SUMM = new Dictionary<string, decimal>();
foreach (var productItem in order.Guests.SelectMany(g => g.Items).Where(item => item.DeletionInfo == null).OfType<IProductItem>())
{
var productItemSum = productItem.GetCost() - order.DiscountItems.Select(di => di.GetDiscountSumFor(productItem)).Sum();
if (productItem.CookingPlaceType.Name[0]=='_')
{
ooo += productItemSum;
}
else
{
ip += productItemSum;
}
foreach (var modifierEntry in productItem.ModifierEntries.Where(entry => entry.DeletionInfo == null))
{
var modifierEntrySum = modifierEntry.GetCost() - order.DiscountItems.Select(di => di.GetDiscountSumFor(modifierEntry)).Sum();
if (modifierEntry.CookingPlaceType.Name[0]=='_')
{
ooo += modifierEntrySum;
}
else
{
ip += modifierEntrySum;
}
}
}
IP_OOO_SUMM.Add("ФОП Петренко П.В :", ip);
IP_OOO_SUMM.Add("ФОП Шевченко О.О :", ooo);
foreach (var kvp in IP_OOO_SUMM)
{
<c colspan="3" font="f0">
@kvp.Key
</c>
<ct>
@MyFormatMoney(kvp.Value)
</ct>
}
<linecell symbols="." />
else if (productItem.CookingPlaceType.Name[0]=='+')
{
op += productItemSum;
}
else if (modifierEntry.CookingPlaceType.Name[0]=='+')
{
op += modifierEntrySum;
} IP_OOO_SUMM.Add("ФОП Василенко Н.П :", op);
Вигляд коду, після внесення змін:
@helper СontrAgent()
{
var order = Model.Order;
<linecell symbols="." />
<c colspan="4">По контрагентам:</c>
var cookingPlaceToSum = new Dictionary<ICookingPlaceType, decimal>();
decimal ooo =0m;
decimal ip=0m;
decimal op=0m;
var IP_OOO_SUMM = new Dictionary<string, decimal>();
foreach (var productItem in order.Guests.SelectMany(g => g.Items).Where(item => item.DeletionInfo == null).OfType<IProductItem>())
{
var productItemSum = productItem.GetCost() - order.DiscountItems.Select(di => di.GetDiscountSumFor(productItem)).Sum();
if (productItem.CookingPlaceType.Name[0]=='_')
{
ooo += productItemSum;
}
else if (productItem.CookingPlaceType.Name[0]=='+')
{
op += productItemSum;
}
else
{
ip += productItemSum;
}
foreach (var modifierEntry in productItem.ModifierEntries.Where(entry => entry.DeletionInfo == null))
{
var modifierEntrySum = modifierEntry.GetCost() - order.DiscountItems.Select(di => di.GetDiscountSumFor(modifierEntry)).Sum();
if (modifierEntry.CookingPlaceType.Name[0]=='_')
{
ooo += modifierEntrySum;
}
else if (modifierEntry.CookingPlaceType.Name[0]=='+')
{
op += modifierEntrySum;
}
else
{
ip += modifierEntrySum;
}
}
}
IP_OOO_SUMM.Add("ФОП Петренко П.В :", ip);
IP_OOO_SUMM.Add("ФОП Шевченко О.О :", ooo);
IP_OOO_SUMM.Add("ФОП Василенко Н.П :", op);
foreach (var kvp in IP_OOO_SUMM)
{
<c colspan="3" font="f0">
@kvp.Key
</c>
<ct>
@MyFormatMoney(kvp.Value)
</ct>
}
<linecell symbols="." />
} Фото зліва - ДО змін
Фото справа - Після змін
Прибрати вивід певної інформації на гостьовому рахунку
<center>@string.Format(Resources.BillHeaderTablePattern, order.Table.Number)</center>
Фото зліва - ДО змін
Фото справа - Після змін