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