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}"); } * * } */ } }