static void Uninit() { Log.Warning("Shutting down backend"); Helper.KillProcess("sbmon"); Talk.Stop(); LogService.Stop(); Edi.KillEdi(); RequestBridge.Shutdown(); RequestQueue.Shutdown(); RequestDispatcher.Shutdown(); DataCacheInstance.Instance.Shutdown(); }
static void Init() { bool watchdog = !System.Diagnostics.Debugger.IsAttached; Log.Warning("Initializing backend. (watchdog? = {0})", watchdog); RequestDispatcher.CreateDispatchers(4); RequestBridge.CreatePipeServers(4); Edi.StartEdi(); //start health monitor. System.Diagnostics.Process.Start( Config.Get().SbmonPath, string.Format("-backend {0} -memcached {1} -mport {2} -watchdog {3}", System.Diagnostics.Process.GetCurrentProcess().Id, DataCacheInstance.ProcessId, Config.Get().MemcachedPort, watchdog)); LogService.Start(); Talk = new InternalTalk(true); Talk.OnTalk += Talk_OnTalk; }
private async void SynchronizationContext_UnhandledException(object sender, Edi.UWP.Helpers.UnhandledExceptionEventArgs e) { e.Handled = true; await new MessageDialog("Synchronization Context Unhandled Exception:\r\n" + GetExceptionDetailMessage(e.Exception), "爆了 :(") .ShowAsync(); }
public string EdiEncode(InvoiceModel invoice) { List <string> segments = new List <string>(); segments.Add("UNH+1+INVOIC:D:96A:UN:EAN008"); //numer faktury segments.Add("BGM+380+" + invoice.Number + "+" + invoice.Type); //data wystawienia faktury segments.Add("DTM+137:" + invoice.SaleDate.ToString("yyyyMMdd") + ":102"); //dane dostawcy segments.Add("NAD+SU+4012345500004::9++" + Edi.Filter(invoice.ProviderName) + ":::::+" + Edi.Filter(invoice.ProviderAddress.Street) + " " + invoice.ProviderAddress.Number + ":::+" + Edi.Filter(invoice.ProviderAddress.City) + "++" + invoice.ProviderAddress.PostCode + "+" + invoice.ProviderAddress.CountryCode ); segments.Add("RFF+VA:" + invoice.ProviderNip); //dane nabywcy segments.Add("NAD+BY+4012345500004::9++" + Edi.Filter(invoice.BuyerName) + ":::::+" + Edi.Filter(invoice.BuyerAddress.Street) + " " + invoice.BuyerAddress.Number + ":::+" + Edi.Filter(invoice.BuyerAddress.City) + "++" + invoice.BuyerAddress.PostCode + "+" + invoice.BuyerAddress.CountryCode ); segments.Add("RFF+VA:" + invoice.BuyerNip); //miejsce dostwy if (invoice.DeliveryName != null && invoice.DeliveryAddress != null) { segments.Add("NAD+DP+4012345500004::9++" + Edi.Filter(invoice.DeliveryName) + ":::::+" + Edi.Filter(invoice.DeliveryAddress.Street) + " " + invoice.DeliveryAddress.Number + ":::+" + Edi.Filter(invoice.DeliveryAddress.City) + "++" + invoice.DeliveryAddress.PostCode + "+" + invoice.DeliveryAddress.CountryCode ); } // segments.Add("PAT+1"); //data płatności segments.Add("DTM+13:" + invoice.PaymentDate.ToString("yyyyMMdd") + ":102"); //wypisanie towarów/usług foreach (InvoiceProductModel p in invoice.Products) { //numer pozycji towarowej na fakturze++globalny numer towaru segments.Add("LIN+" + p.ItemNumber + "++" + p.Number); //nazwa towaru/uslugi segments.Add("IMD+C++" + p.Type + "::9:" + Edi.Filter(p.Name)); //ilość segments.Add("QTY+" + p.QuantityType + ":" + p.Quantity); //sumaryczna wartość towarów segments.Add("MOA+" + p.SumAmountType + ":" + p.SumAmountNet + ":PLN"); //cena jednostkowa netto segments.Add("PRI+AAA:" + p.UnitPriceNet); } //liczba pozycji towarowych segments.Add("CNT+" + invoice.ProductQuntity + ":120"); //kwota do zapłaty segments.Add("MOA+77:" + invoice.AmountGross); //kwota netto segments.Add("MOA+79:" + invoice.AmountNet); //kwota podatku segments.Add("MOA+124:" + invoice.AmountTax); //kwota opodatkowana segments.Add("MOA+125:" + invoice.AmountTax); //stawka podatku segments.Add("TAX+7+VAT+++:::" + invoice.Tax + "+S"); //liczba segmentow w komunikacie segments.Add("UNT+" + (segments.Count() + 1) + "+1"); return(String.Join("'", segments)); }
public InvoiceModel EdiDecode(string strEdi) { InvoiceModel invoice = new InvoiceModel(); string[] segments = Edi.ParseToSegmets(strEdi); int nSegments = segments.Length; // ustawiam czy odczytywane dane należą do dostwcy czy nabywcy, lub czy są to dane dostwy // 0 - dostawca, 1 - nabywca, 2 - dane do dostwy int who = 0; string[] arguments; string[] parameters; InvoiceAddressModel address; int productIndex = -1; InvoiceProductModel product; List <InvoiceProductModel> products = new List <InvoiceProductModel>(); bool details = false; for (int i = 0; i < nSegments; i++) { if (i == 23) { } segments[i] = segments[i].Trim(); if (String.IsNullOrEmpty(segments[i])) { continue; } arguments = Edi.ParseToArguments(segments[i]); switch (arguments[0]) { case "UNH": parameters = Edi.ParseToParameters(arguments[2]); if (parameters[0] != "INVOIC") { return(null); } break; case "BGM": if (arguments[1] == "380") { invoice.Number = arguments[2]; invoice.Type = Int16.Parse(arguments[3]); } break; case "DTM": DateTime date; parameters = Edi.ParseToParameters(arguments[1]); if (parameters[2] == "102") { date = DateTime.ParseExact(parameters[1], "yyyyMMdd", null); } else { date = DateTime.Parse(parameters[1]); } switch (parameters[0]) { case "137": invoice.SaleDate = date; break; case "13": invoice.PaymentDate = date; break; } break; case "NAD": address = new InvoiceAddressModel(); parameters = Edi.ParseToParameters(arguments[5]); address.Street = parameters[0]; address.City = arguments[6]; address.PostCode = arguments[8]; address.CountryCode = arguments[9]; switch (arguments[1]) { case "SU": //dane dostawcy who = 0; parameters = Edi.ParseToParameters(arguments[4]); invoice.ProviderName = parameters[0]; invoice.ProviderAddress = address; break; case "BY": //dane nabywcy who = 1; parameters = Edi.ParseToParameters(arguments[4]); invoice.BuyerName = parameters[0]; invoice.BuyerAddress = address; break; case "DP": //dane do dostawy who = 2; parameters = Edi.ParseToParameters(arguments[4]); invoice.DeliveryName = parameters[0]; invoice.DeliveryAddress = address; break; } break; case "RFF": parameters = Edi.ParseToParameters(arguments[1]); if (parameters[0] == "VA") { switch (who) { case 0: //nip dostawcy invoice.ProviderNip = parameters[1]; break; case 1: //nip nabywcy invoice.BuyerNip = parameters[1]; break; } } break; case "PAT": details = true; break; case "LIN": productIndex++; product = new InvoiceProductModel(); product.ItemNumber = Int16.Parse(arguments[1]); parameters = Edi.ParseToParameters(arguments[3]); product.Number = parameters[0]; products.Insert(productIndex, product); break; case "IMD": product = products[productIndex]; product.Name = arguments[2]; parameters = Edi.ParseToParameters(arguments[3]); product.Type = parameters[0]; break; case "QTY": product = products[productIndex]; parameters = Edi.ParseToParameters(arguments[1]); product.QuantityType = Int16.Parse(parameters[0]); product.Quantity = int.Parse(parameters[1]); break; case "MOA": parameters = Edi.ParseToParameters(arguments[1]); if (details) { switch (parameters[0]) { case "66": case "35E": product = products[productIndex]; product.SumAmountType = parameters[0]; product.SumAmountNet = float.Parse(parameters[1]); break; } } else { float amount = float.Parse(parameters[1]); switch (parameters[0]) { case "77": invoice.AmountGross = amount; break; case "79": invoice.AmountNet = amount; break; case "124": invoice.AmountTax = amount; break; } } break; case "PRI": parameters = Edi.ParseToParameters(arguments[1]); if (parameters[0] == "AAA") { product = products[productIndex]; product.UnitPriceNet = float.Parse(parameters[1]); } break; case "TAX": if (arguments[1] == "7" && arguments[2] == "VAT") { parameters = Edi.ParseToParameters(arguments[5]); if (details) { product = products[productIndex]; product.Tax = Int16.Parse(parameters[3]); } else { invoice.Tax = Int16.Parse(parameters[3]); } } break; case "UNS": if (arguments[1] == "S") { invoice.Products = products; details = false; } break; case "CNT": parameters = Edi.ParseToParameters(arguments[1]); invoice.ProductQuntity = int.Parse(parameters[0]); break; } } return(invoice); }
// Example: // // eax=7ffdb000 ebx=00000000 ecx=00000000 edx=7785f17d esi=00000000 edi=00000000 // eip=777f410c esp=040ef770 ebp=040ef79c iopl=0 nv up ei pl zr na pe nc // cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246 // ntdll!DbgBreakPoint: // public override ColorString ToColorString() { if (null == m_colorString) { ConsoleColor color; ColorString cs = new ColorString("eax="); color = GetColorForDiffAgainstBaseline("eax"); cs.Append(Eax.GetColorizedValueString(color)); cs.Append(" ebx="); color = GetColorForDiffAgainstBaseline("ebx"); cs.Append(Ebx.GetColorizedValueString(color)); cs.Append(" ecx="); color = GetColorForDiffAgainstBaseline("ecx"); cs.Append(Ecx.GetColorizedValueString(color)); cs.Append(" edx="); color = GetColorForDiffAgainstBaseline("edx"); cs.Append(Edx.GetColorizedValueString(color)); cs.Append(" esi="); color = GetColorForDiffAgainstBaseline("esi"); cs.Append(Esi.GetColorizedValueString(color)); cs.Append(" edi="); color = GetColorForDiffAgainstBaseline("edi"); cs.Append(Edi.GetColorizedValueString(color)); cs.AppendLine(); cs.Append("eip="); color = GetColorForDiffAgainstBaseline("eip"); cs.Append(Eip.GetColorizedValueString(color)); cs.Append(" esp="); color = GetColorForDiffAgainstBaseline("esp"); cs.Append(Esp.GetColorizedValueString(color)); cs.Append(" ebp="); color = GetColorForDiffAgainstBaseline("ebp"); cs.Append(Ebp.GetColorizedValueString(color)); cs.Append(" iopl="); color = GetColorForDiffAgainstBaseline("iopl"); cs.AppendPushPopFg(color, ((uint)Iopl.Value).ToString("x")); // TODO: cs.AppendLine(" TBD: flags"); cs.Append("cs="); color = GetColorForDiffAgainstBaseline("cs"); cs.AppendPushPopFg(color, ((uint)Cs.Value).ToString("x4")); cs.Append(" ss="); color = GetColorForDiffAgainstBaseline("ss"); cs.AppendPushPopFg(color, ((uint)Ss.Value).ToString("x4")); cs.Append(" ds="); color = GetColorForDiffAgainstBaseline("ds"); cs.AppendPushPopFg(color, ((uint)Ds.Value).ToString("x4")); cs.Append(" es="); color = GetColorForDiffAgainstBaseline("es"); cs.AppendPushPopFg(color, ((uint)Es.Value).ToString("x4")); cs.Append(" fs="); color = GetColorForDiffAgainstBaseline("fs"); cs.AppendPushPopFg(color, ((uint)Fs.Value).ToString("x4")); cs.Append(" gs="); color = GetColorForDiffAgainstBaseline("gs"); cs.AppendPushPopFg(color, ((uint)Gs.Value).ToString("x4")); cs.Append(" efl="); color = GetColorForDiffAgainstBaseline("efl"); cs.Append(Efl.GetColorizedValueString(color)); cs.AppendLine(); cs.Append(DbgProvider.ColorizeSymbol(StackFrame.SymbolName)); if (0 != StackFrame.Displacement) { cs.Append("+0x"); cs.Append(StackFrame.Displacement.ToString("x")); } cs.AppendLine(":"); cs.Append(Disasm(Eip.ValueAsPointer)); m_colorString = cs; } return(m_colorString); } // end ToString()