public static void ShowWndPrintLabels(IOrderLabel order) { try { logger.Debug("ShowWndPrintLabels"); if (order == null) { ShowAlert("Нет выделенного заказа для печати"); return; } if ((order.DishPackagesForLab == null) || (order.DishPackagesForLab.Count() == 0)) { ShowAlert("Нет блюд в заказе для печати"); return; } //var vm = new PrintLabelsViewModel(order); var vm = new AddLabelsViewModel(order) { Header = $"Печать наклеек заказ {order.Id}" }; //var ctrl = new CtrlPrintLabels(); var ctrl = new ctrlItemLabels(); ctrl.DataContext = vm; MainClass.ShowUC(ctrl); } catch (Exception e) { logger.Error($"ShowWndChangeOrderStatus {e.Message}"); } }
public LabelPapersVisualViewModel(IOrderLabel order) { Order = order; PapersInit(); PrintCommand = new DelegateCommand((_) => { PrintWinPrinter(); }); }
static public bool PrintOrderToGoToKitchen(IOrderLabel order, out List <string> resDescr, List <IDishPackageLabel> deletedDishes = null) { logger.Debug($"PrintOrderToGoToKitchen Order: {order?.Id}"); bool res = true; resDescr = new List <string>(); List <FiscalCheckVisualString> strs; if (deletedDishes == null) { strs = GetFStrings(order, 0); } else { strs = GetFStringsForDelete(order, deletedDishes); } if (!PrintDoc2(strs, 1, Properties.Settings.Default.HotColdPrinterName)) { resDescr.Add("Ошибка при печати на принтере горячих блюд"); res = false; } if (!PrintDoc2(strs, 1, Properties.Settings.Default.HotColdPrinterName)) { resDescr.Add("Ошибка при печати на принтере горячих блюд"); res = false; } if (!PrintDoc2(strs, 1, Properties.Settings.Default.HotColdPrinterName)) { resDescr.Add("Ошибка при печати на принтере горячих блюд"); res = false; } if (!PrintDoc2(strs, 1, Properties.Settings.Default.ConditerPrinterName)) { resDescr.Add("Ошибка при печати на принтере кондитера"); res = false; } if (!PrintDoc2(strs, 1, Properties.Settings.Default.UpackPrinterName)) { resDescr.Add("Ошибка при печати на принтере упаковки"); res = false; } logger.Debug($"ToGo PrintOrderToGoToKitchen Order: {order?.Id} end"); return(res); }
public AddLabelsViewModel(IOrderLabel order) { CurentOrder = order; DishPackages = new FullyObservableCollection<IDishPackageLabel>(); foreach (var dp in order.DishPackagesForLab) { dp.PrintLabel = DataExtension.DataCatalogsSingleton.Instance.ItemLabelsInfo.Where(a => a.ParenItemId == dp.DishId).Count() > 0; dp.LabelSeriesCount = dp.LabelsCount; DishPackages.Add(dp); } order.PropertyChanged += Order_PropertyChanged; OrderDish = DishPackages.First(); AllDishGridVis = Visibility.Collapsed; OrderDishGridVis = Visibility.Visible; Init(); }
public static bool DeleteSalesInvoice(IOrderLabel order) { if (order == null) { return(false); } TStoreHouse sh = null; order.IsSHSent = false; try { logger.Debug($"DeleteSalesInvoice Oreder {order.Id}"); sh = ConnectSH(); if (sh == null) { return(false); } var prefix = Properties.Settings.Default.SHDocPrefix + DBProvider.TestStr + (order is OrderToGo ? "ToGo" : ""); var prefixAnn = prefix + "_Annul"; TExpenceDocument d = new TExpenceDocument() { Prefix = prefixAnn, DocNum = (int)order.Id, Date = order.DeliveryDate, Type = 1 }; logger.Debug($"sh.ExpenceDocumentDelete anul DocNum: {d.DocNum}; Prefix: {d.Prefix}; Date: {d.Date}"); sh.ExpenceDocumentDelete(d, out int errCodet, out string errt); d.Prefix = prefix; logger.Debug($"sh.ExpenceDocumentDelete DocNum: {d.DocNum}; Prefix: {d.Prefix}; Date: {d.Date}"); bool res = sh.ExpenceDocumentDelete(d, out int errCode, out string err); logger.Debug($"DeleteSalesInvoice {res}; err: {err}"); if (errCode == -100) { logger.Debug($"(errCode == -100) ok;"); res = true; } order.IsSHSent = res; return(res); } catch (Exception e) { logger.Error($"DeleteSalesInvoice error. Mess: {e.Message}"); return(false); } finally { if (sh != null) { try { sh.CloseConection(); } catch { } } } }
public static bool CreateSalesInvoiceSyncSale(IOrderLabel order, List <IDishPackageLabel> dishes, int docNum, int catExp, int ridPlace, string prefix, string comment, out string ErrMesssage) { try { ErrMesssage = ""; //TStoreHouse sh = null; logger.Debug($"CreateSalesInvoice Order {order.Id}"); //sh = ConnectSH(); //if (sh == null) return false; TExpenceDocument d = new TExpenceDocument() { Prefix = prefix, DocNum = docNum, RidPlace = ridPlace, CatExpence = catExp, Date = order.DeliveryDate, Coment = comment, ListItemDocument = new List <TItemDocument>() }; logger.Debug($"TExpenceDocument create Prefix: {d.Prefix}; DocNum:{d.DocNum}; RidPlace:{d.RidPlace}; CatExpence:{d.CatExpence}; Date:{d.Date}; Coment:{d.Coment};"); if (dishes != null) { decimal DPSumm = 0; foreach (var dp in dishes.Where(a => a.Amount != 0)) { decimal dSumm = dp.TotalPrice * (1 - order.DiscountPercent / 100) * dp.Amount; if (!dp.Deleted) { if (dp == dishes.Last()) { dSumm = (order.OrderDishesSumm * (1 - order.DiscountPercent / 100) - DPSumm); } else { DPSumm += dSumm; } } TItemDocument itm = new TItemDocument() { Quantity = (double)dp.Amount, Rid = (int)dp.Dish.SHIdNewBase, Price = (double)dSumm//* 1000 }; logger.Debug($"TExpenceDocument create itm {dp.Dish.Name}; Price: {itm.Price}; Quantity: {itm.Quantity}; Rid:{itm.Rid} "); d.ListItemDocument.Add(itm); } if (!dishes.FirstOrDefault().Deleted) { if (order is OrderToGo orderToGo) { if (orderToGo.DeliveryPrice > 0) { TItemDocument itm = new TItemDocument() { Quantity = 1, Rid = 3632, // Доставка Price = (double)orderToGo.DeliveryPrice }; logger.Debug($"TExpenceDocument create itm delev Quantity: {itm.Quantity}; Rid:{itm.Rid}"); d.ListItemDocument.Add(itm); } } if (order is OrderFlight orderFlight) { if (orderFlight.ExtraChargeSumm > 0) { TItemDocument itm = new TItemDocument() { Quantity = 1, Rid = 3631, // Надбавка Price = (double)orderFlight.ExtraChargeSumm }; logger.Debug($"TExpenceDocument create ExtraChargeSumm Quantity: {itm.Quantity}; Rid:{itm.Rid}"); d.ListItemDocument.Add(itm); } } } } d.Type = 1; string err = ""; int errCode = 0; bool res = sh.ExpenceDocumentCreate(d, out errCode, out err); //bool res = err.ToLower() == "ok"; if (res) { logger.Debug($"CreateSalesToGoInvoice Ok"); } else { logger.Debug($"CreateSalesToGoInvoice error Number {order.Id} err: {err}"); } return(res); } catch (Exception e) { ErrMesssage = $"Ошибка создания расходной накладной {Environment.NewLine + e.Message}"; logger.Error($"CreateSalesInvoice Oreder {order.Id}. Mess: {e.Message}"); return(false); } finally { /* * if (sh != null) * { * try * { * sh.CloseConection(); * * } * catch (Exception ee) { logger.Error($"CreateSalesInvoice error CloseConection Mess: {ee.Message}"); } * * } */ } }
//public static bool CreateSalesInvoiceSync(OrderFlight order, out string ErrMesssage) //{ // ErrMesssage = ""; // if (order == null) return false; // if (order.OrderStatus == OrderStatus.Cancelled || order.OrderStatus==OrderStatus.InWork) // { // return DeleteSalesInvoice(order); // } // TStoreHouse sh = null; // order.IsSHSent = false; // try // { // logger.Debug($"CreateSalesInvoice Order {order.Id}"); // sh = ConnectSH(); // if (sh == null) return false; // if (order.AirCompany.SHId == 0) // { // var addAirRes = AddAirCompany(order.AirCompany, out ErrMesssage); // if (!addAirRes) // { // return false; // } // } // TExpenceDocument d = new TExpenceDocument() // { // Prefix = Properties.Settings.Default.SHDocPrefix, // DocNum = (int)order.Id, // RidPlace = Properties.Settings.Default.SHRidPlace, // CatExpence = (int)order.AirCompany.SHId, // Date = order.DeliveryDate, // Coment = $"{order.DeliveryPlace?.Name} {order.FlightNumber} {order.DeliveryDate.ToString("HH:mm")} ", // ListItemDocument = new List<TItemDocument>() // }; // if (DBProvider.SharAirs.Contains(order.AirCompany.Id)) // { // d.RidPlace = Properties.Settings.Default.SHRidPlaceSVO; // d.Coment = "SVO" + d.Coment; // } // if (order.ContactPerson != null) { d.Coment += order.ContactPerson.FullSearchData; } // logger.Debug($"TExpenceDocument create Prefix: {d.Prefix}; DocNum:{d.DocNum}; RidPlace:{d.RidPlace}; CatExpence:{d.CatExpence}; Date:{d.Date}; Coment:{d.Coment};"); // if (order.DishPackages != null) // { // decimal DPSumm = 0; // foreach (var dp in order.DishPackages) // { // if (dp.Dish.SHIdNewBase == 0) // { // logger.Debug($"dp.Dish.SHIdNewBase == 0"); // int catId = 0; // if (!AddNewDishToFly(dp.Dish, out ErrMesssage, out catId)) // { // logger.Debug($"TExpenceDocument create AddNewDishToFly error return false"); // return false; // } // } // decimal discDownPecent = (order.OrderSumm == 0) ? 0 : order.OrderTotalSumm / order.OrderSumm; // if (order.DiscountSumm == 0) { discDownPecent = 1; } // decimal dSumm = dp.TotalPrice * (discDownPecent) * dp.Amount; // if (dp == order.DishPackages.Last()) // { // dSumm = (order.OrderTotalSumm - DPSumm); // } // else // { // DPSumm += dSumm; // } // TItemDocument itm = new TItemDocument() // { // Quantity = (double)dp.Amount, // Rid = (int)dp.Dish.SHIdNewBase, // Price = (double)dSumm//* 1000 // }; // logger.Debug($"TExpenceDocument create itm {dp.DishName}; Price: {itm.Price}; Quantity: {itm.Quantity}; Rid:{itm.Rid} "); // d.ListItemDocument.Add(itm); // } // } // d.Type = 1; // string err = ""; // int errCode = 0; // bool res = sh.ExpenceDocumentCreate(d, out errCode, out ErrMesssage); // if (res) // { // logger.Debug($"CreateSalesToFlyInvoice Ok"); // } // else // { // logger.Debug($"CreateSalesToFlyInvoice error Number {order.Id} err: {ErrMesssage}"); // } // order.IsSHSent = res; // return res; // } // catch (Exception e) // { // ErrMesssage = $"Ошибка создания расходной накладной {Environment.NewLine + e.Message}"; // logger.Error($"CreateSalesInvoice Oreder {order.Id}. Mess: {e.Message}"); // return false; // } // finally // { // if (sh != null) // { // try // { // sh.CloseConection(); // } // catch (Exception ee) { logger.Error($"CreateSalesInvoice error CloseConection Mess: {ee.Message}"); } // } // } //} /* * * public static bool ShSendCheck(IOrderLabel order, out string ErrMesssage) * { * ErrMesssage = ""; * var prefix = Properties.Settings.Default.SHDocPrefix + DBProvider.TestStr + (order is OrderToGo ? "ToGo" : ""); * var prefixAnn = prefix + "_Annul"; * TExpenceDocument d = new TExpenceDocument() * { * Prefix = prefix, * DocNum = (int)order.Id, * Date = order.DeliveryDate, * Type = 1 * }; * TStoreHouse sh = null; * sh = ConnectSH(); * if (sh == null) return false; * //sh.ExpenceDocumentCheck(d,) * bool res = sh.ExpenceDocumentCheck(d, out int errCode, out string err); * logger.Debug($"DeleteSalesInvoice {res}; err: {err}"); * if (errCode == -100) * { * logger.Debug($"(errCode == -100) ok;"); * res = true; * } * } */ public static bool CreateSalesInvoiceSync(IOrderLabel order, out string ErrMesssage) { ErrMesssage = ""; if (order == null) { return(false); } try { DeleteSalesInvoice(order); if (order.OrderStatus == OrderStatus.Cancelled) { order.IsSHSent = true; } if (order.OrderStatus == OrderStatus.Cancelled || order.OrderStatus == OrderStatus.InWork) { return(true); } order.IsSHSent = false; TStoreHouse sh = null; sh = ConnectSH(); if (sh == null) { return(false); } foreach (var dp in order.DishPackagesForLab.Where(a => a.Dish.SHIdNewBase == 0)) { if (order is OrderFlight) { if (!AddNewDishToFly(dp.Dish, out ErrMesssage, out int catId)) { logger.Debug($"TExpenceDocument create AddNewDishToFly error return false"); return(false); } } else { if (!AddNewDishToGo(dp.Dish, out ErrMesssage, out int catId)) { logger.Debug($"TExpenceDocument create AddNewDishToFly error return false"); return(false); } } } var prefix = Properties.Settings.Default.SHDocPrefix + DBProvider.TestStr; var docNum = (int)order.Id; var ridPlace = 0; var comment = ""; var catExp = 0; if (order is OrderFlight orderFlight) { //prefix += "ToFly"; ridPlace = Properties.Settings.Default.SHRidPlace; comment = $"{orderFlight.DeliveryPlace?.Name} {orderFlight.FlightNumber} {orderFlight.DeliveryDate.ToString("HH:mm")} "; catExp = (int)orderFlight.AirCompany.SHId; if (DBProvider.SharAirs.Contains(orderFlight.AirCompany.Id)) { ridPlace = Properties.Settings.Default.SHRidPlaceSVO; comment = "SVO " + comment; } if (orderFlight.AirCompany.SHId == 0) { var addAirRes = AddAirCompany(orderFlight.AirCompany, out ErrMesssage); if (!addAirRes) { return(false); } } } else if (order is OrderToGo orderToGo) { if (orderToGo.PaymentType != null && orderToGo.PaymentType.SHId == 0) { var addPRes = AddToGoPayment(orderToGo.PaymentType, out ErrMesssage); if (!addPRes) { return(false); } } prefix += "ToGo"; ridPlace = Properties.Settings.Default.SHRidPlaceToGo; catExp = (int)(orderToGo.PaymentType?.SHId ?? Properties.Settings.Default.SHToGoNotPaymentCatId); //: (int)orderToGo.PaymentType.SHId comment = orderToGo.OrderComment == null ? "" : orderToGo.OrderComment + (orderToGo.CommentKitchen ?? ""); } bool res = true; if (order.DishPackagesNoSpis.Any()) { res &= CreateSalesInvoiceSyncSale(order, order.DishPackagesNoSpis.ToList(), docNum, catExp, ridPlace, prefix, comment, out string ErrMesssage2); ErrMesssage += ErrMesssage2 + Environment.NewLine; } if (order.DishPackagesSpis.Where(a => a.DeletedStatus == 1).Any()) { foreach (var p in order.DishPackagesSpis.Where(a => a.DeletedStatus == 1).Select(x => x.SpisPaymentId).Distinct()) { prefix += "_Annul"; catExp = (int)DataExtension.DataCatalogsSingleton.Instance.GetPayment(p)?.SHId; res &= CreateSalesInvoiceSyncSale(order, order.DishPackagesSpis.Where(x => x.SpisPaymentId == p).ToList(), docNum, catExp, ridPlace, prefix, comment, out string ErrMesg); ErrMesssage += ErrMesg + Environment.NewLine; } } order.IsSHSent = res; return(res); } catch (Exception e) { ErrMesssage = $"Ошибка создания расходной накладной {Environment.NewLine + e.Message}"; logger.Error($"CreateSalesInvoice Oreder {order.Id}. Mess: {e.Message}"); return(false); } finally { if (sh != null) { try { sh.CloseConection(); } catch (Exception ee) { logger.Error($"CreateSalesInvoice error CloseConection Mess: {ee.Message}"); } } } }
public LabelPageViewModel(IOrderLabel _order, Dish _d) { order = _order; d = _d; }
static List <FiscalCheckVisualString> GetFStrings(IOrderLabel order, int grId) { logger.Debug($"GetFStrings Order: {order?.Id}"); var res = new List <FiscalCheckVisualString>(); res.Add(new FiscalCheckVisualString(" ", true, true)); if (order is OrderToGo) { res.Add(new FiscalCheckVisualString($"Заказ ToGo № {order.Id}", true, true)); if (order.DishPackagesForLab.Any(a => a.Printed)) { res.Add(new FiscalCheckVisualString($"Дополнение", true, false)); } } if (order is OrderFlight) { res.Add(new FiscalCheckVisualString($"Заказ ToFly № {order.Id}", true, true)); if (order.DishPackagesForLab.Any(a => a.Printed)) { res.Add(new FiscalCheckVisualString($"Дополнение", true, false)); } } if (order is OrderFlight) { res.Add(new FiscalCheckVisualString(order.ReadyTime.ToString("HH:mm dd/MM/yy"), true, false)); } else { res.Add(new FiscalCheckVisualString(order.DeliveryDate.ToString("HH:mm dd/MM/yy"), true, false)); } res.Add(new FiscalCheckVisualString(" ", true, false)); if (order is OrderToGo) { var ordTG = (OrderToGo)order; if (ordTG.MarketingChannel != null) { res.Add(new FiscalCheckVisualString($"Канал продаж:", true)); res.Add(new FiscalCheckVisualString(ordTG.MarketingChannel.Name, false)); } } if (!(order is OrderFlight) && order.CommentKitchen != null && order.CommentKitchen.Trim().Length > 0) { res.Add(new FiscalCheckVisualString($"Комментарий к заказу", true)); res.Add(new FiscalCheckVisualString(order.CommentKitchen, false)); } res.Add(new FiscalCheckVisualString(" ", true, true)); if (grId == 0) { foreach (var dp in order.DishPackagesForLab.Where(a => !a.Printed)) { res.Add(new FiscalCheckVisualString(dp.Dish.Name, dp.Amount.ToString("0.#"), false)); if (!(order is OrderFlight)) { if (dp.Comment != null && dp.Comment.Trim() != "") { res.Add(new FiscalCheckVisualString($" {dp.Comment}", false)); } } } res.Add(new FiscalCheckVisualString(" ", true, true)); res.Add(new FiscalCheckVisualString(" ", true, true)); res.Add(new FiscalCheckVisualString("___________________________", true, false)); logger.Debug($"GetFStrings Order: {order?.Id} Return:"); foreach (var f in res) { logger.Debug(f.strLeft + " " + f.strRight); } logger.Debug($"GetFStrings Order: {order?.Id} Return end:"); return(res); } return(null); }
static List <FiscalCheckVisualString> GetFStringsForDelete(IOrderLabel order, List <IDishPackageLabel> dishes) { if ((dishes == null) || (dishes.Count < 1)) { return(null); } logger.Debug($"GetFStringsForDelete: {dishes.First().Dish?.Name}"); var res = new List <FiscalCheckVisualString>(); res.Add(new FiscalCheckVisualString(" ", true, true)); if (order is OrderToGo) { res.Add(new FiscalCheckVisualString($"Заказ ToGo № {order.Id}", true, true)); res.Add(new FiscalCheckVisualString($"УДАЛЕНИЕ ПОЗИЦИЙ!!!", true, false)); } if (order is OrderFlight) { res.Add(new FiscalCheckVisualString($"Заказ ToFly № {order.Id}", true, true)); res.Add(new FiscalCheckVisualString($"УДАЛЕНИЕ ПОЗИЦИЙ!!!", true, false)); } if (order is OrderFlight) { res.Add(new FiscalCheckVisualString(order.ReadyTime.ToString("HH:mm dd/MM/yy"), true, false)); } else { res.Add(new FiscalCheckVisualString(order.DeliveryDate.ToString("HH:mm dd/MM/yy"), true, false)); } res.Add(new FiscalCheckVisualString(" ", true, false)); if (order is OrderToGo) { var ordTG = (OrderToGo)order; if (ordTG.MarketingChannel != null) { res.Add(new FiscalCheckVisualString($"Канал продаж:", true)); res.Add(new FiscalCheckVisualString(ordTG.MarketingChannel.Name, false)); } } if (!(order is OrderFlight) && order.CommentKitchen != null && order.CommentKitchen.Trim().Length > 0) { res.Add(new FiscalCheckVisualString($"Комментарий к заказу", true)); res.Add(new FiscalCheckVisualString(order.CommentKitchen, false)); } res.Add(new FiscalCheckVisualString(" ", true, true)); // if (grId == 0) { foreach (var dp in dishes) { res.Add(new FiscalCheckVisualString(dp.Dish.Name, dp.Amount.ToString("0.#"), false)); if (dp.DeletedStatus == 1) { res.Add(new FiscalCheckVisualString($"Удаление со списанием")); res.Add(new FiscalCheckVisualString($"Причина: {dp.SpisPayment?.Name}")); } else { res.Add(new FiscalCheckVisualString($"Удаление без списания")); } if (!(order is OrderFlight)) { if (dp.Comment != null && dp.Comment.Trim() != "") { res.Add(new FiscalCheckVisualString($" {dp.Comment}", false)); } } } res.Add(new FiscalCheckVisualString(" ", true, true)); res.Add(new FiscalCheckVisualString(" ", true, true)); res.Add(new FiscalCheckVisualString("___________________________", true, false)); logger.Debug($"GetFStrings Order: {order?.Id} Return:"); foreach (var f in res) { logger.Debug(f.strLeft + " " + f.strRight); } logger.Debug($"GetFStrings Order: {order?.Id} Return end:"); return(res); } }