public ActionResult Finish(string id) { #region User identification IIdentity context = HttpContext.User.Identity; int user = 0; bool admin = false; bool customerCreator = false; bool purchaseOrderCreator = false; int companyId = 0; string userName = ""; int slpCode = 0; AppConnData appConnData = new AppConnData(); if (context.IsAuthenticated) { System.Web.Security.FormsIdentity ci = (System.Web.Security.FormsIdentity)HttpContext.User.Identity; string[] userRole = ci.Ticket.UserData.Split('|'); user = int.Parse(userRole[0]); admin = int.Parse(userRole[1]) == 1 ? true : false; customerCreator = int.Parse(userRole[2]) == 1 ? true : false; purchaseOrderCreator = int.Parse(userRole[3]) == 1 ? true : false; companyId = int.Parse(userRole[4]); slpCode = int.Parse(userRole[5]); userName = ci.Name; appConnData = GetAppConnData(companyId); } #endregion string realId = HexSerialization.HexToString(id); List<CompanyParameter> companyParameters = BizCompanyParameter.GetList(companyId).ToList(); string batchMarketingTransactions = companyParameters.Where(x => x.idParameter.Equals(5)).Select(x => x.value).FirstOrDefault(); if (batchMarketingTransactions == "No") { #region Live transaction try { ORDR ordr = BizSalesOrderDraft.GetSingle(int.Parse(realId)); if (ordr.docEntry != null) throw new Exception("Este pedido ya fué registrado en SAP"); List<RDR1> lines = BizSalesOrderDraft.GetLinesList(int.Parse(realId)).ToList(); MarketingDocument document = new MarketingDocument() { cardCode = ordr.cardCode, serie = ordr.series, docDate = ordr.docDate, docDueDate = ordr.docDueDate, taxDate = ordr.taxDate, shipToCode = ordr.shipToCode, payToCode = ordr.payToCode, groupNum = ordr.groupNum, lines = new List<MarketingDocumentLine>(), userDefinedFields = new List<UserDefinedField>() }; if (slpCode > 0) document.slpCode = slpCode; document.userDefinedFields.Add(new UserDefinedField() { name = "U_CSS_COMENTARIOS", type = UdfType.Text, value = ordr.uCssComentarios }); document.userDefinedFields.Add(new UserDefinedField() { name = "U_orkWebDocument", type = UdfType.Text, value = ordr.id.ToString() }); foreach (RDR1 item in lines) { MarketingDocumentLine line = new MarketingDocumentLine() { itemCode = item.itemCode, quantity = (double)item.quantity, whsCode = item.whsCode, taxCode = item.taxCode, ocrCode = item.ocrCode, price = (double)item.price, batchNumbers = new List<BatchNumber>(), serialNumbers = new List<SerialNumber>(), userDefinedFields = new List<UserDefinedField>() }; line.userDefinedFields.Add(new UserDefinedField() { name = "U_CSS_ENVASEDEVOL", type = UdfType.Alphanumeric, value = item.uCssEnvaseDevol }); document.lines.Add(line); } if (userName.ToLower() != "root") { WebUserCompany wuc = BizWebUserCompany.GetSingle(user, companyId); if (wuc.slpCode != 0) document.slpCode = wuc.slpCode; } document = backEnd.AddSalesOrder(document, appConnData); document.docNum = backEnd.GetOrderNum(document.docEntry, appConnData); ViewBag.colorMensaje = "success"; ViewBag.mensaje = "Orden de venta creada con éxito"; ViewBag.docEntry = string.Format("Se creó la orden no {0}. Numero interno de documento {1}", document.docNum, document.docEntry); ordr.docEntry = document.docEntry; BizSalesOrderDraft.Update(ordr); } catch (FaultException<DataAccessFault> ex) { ViewBag.colorMensaje = "danger"; ViewBag.mensaje = "No se pudo crear la Orden de venta"; ViewBag.docEntry = string.Format("Codigo {0} error:{1} {2}", ex.Code, ex.Detail.Description, ex.Message); } catch (Exception ex) { ViewBag.colorMensaje = "danger"; ViewBag.mensaje = "Atención:"; ViewBag.docEntry = string.Format(" - {0}", ex.Message); } #endregion } else if (batchMarketingTransactions == "Si") { #region Queue Transaction BizProcessQueue.Add(new ProcessQueue() { actionType = "A", idTarget = int.Parse(realId), addedToQueue = DateTime.Now, idCompany = companyId }); ViewBag.colorMensaje = "success"; ViewBag.mensaje = "Registro guardado"; ViewBag.docEntry = "Su pedido ha sido guardado y en breve será procesado."; #endregion } return View(); }
public ActionResult Finish(string id) { try { #region User identification IIdentity context = HttpContext.User.Identity; int user = 0; bool admin = false; bool customerCreator = false; bool purchaseOrderCreator = false; int companyId = 0; string userName = ""; int slpCode = 0; AppConnData appConnData = new AppConnData(); if (context.IsAuthenticated) { System.Web.Security.FormsIdentity ci = (System.Web.Security.FormsIdentity)HttpContext.User.Identity; string[] userRole = ci.Ticket.UserData.Split('|'); user = int.Parse(userRole[0]); admin = int.Parse(userRole[1]) == 1 ? true : false; customerCreator = int.Parse(userRole[2]) == 1 ? true : false; purchaseOrderCreator = int.Parse(userRole[3]) == 1 ? true : false; companyId = int.Parse(userRole[4]); slpCode = int.Parse(userRole[5]); userName = ci.Name; appConnData = GetAppConnData(companyId); } #endregion string realId = HexSerialization.HexToString(id); OQUT OQUT = BizQuotation.GetSingle(int.Parse(realId)); List<QUT1> lines = BizQuotation.GetLinesList(int.Parse(realId)).ToList(); MarketingDocument document = new MarketingDocument() { cardCode = OQUT.cardCode, serie = OQUT.series, docDate = OQUT.docDate, docDueDate = OQUT.docDueDate, taxDate = OQUT.taxDate, shipToCode = OQUT.shipToCode, payToCode = OQUT.payToCode, lines = new List<MarketingDocumentLine>(), userDefinedFields = new List<UserDefinedField>() }; if (slpCode > 0) document.slpCode = slpCode; document.userDefinedFields.Add(new UserDefinedField() { name = "U_CSS_COMENTARIOS", type = UdfType.Text, value = OQUT.uCssComentarios }); foreach (QUT1 item in lines) { MarketingDocumentLine line = new MarketingDocumentLine() { itemCode = item.itemCode, quantity = (double)item.quantity, whsCode = item.whsCode, taxCode = item.taxCode, ocrCode = item.ocrCode, price = (double)item.price, batchNumbers = new List<BatchNumber>(), serialNumbers = new List<SerialNumber>(), userDefinedFields = new List<UserDefinedField>() }; line.userDefinedFields.Add(new UserDefinedField() { name = "U_CSS_ENVASEDEVOL", type = UdfType.Alphanumeric, value = item.uCssEnvaseDevol }); document.lines.Add(line); } if (userName.ToLower() != "root") { WebUserCompany wuc = BizWebUserCompany.GetSingle(user, companyId); if (wuc.slpCode != 0) document.slpCode = wuc.slpCode; } document = backEnd.AddQuotation(document, appConnData); ViewBag.colorMensaje = "success"; ViewBag.mensaje = "Cotización creada con éxito"; ViewBag.docEntry = string.Format("Se creó la cotización no {0}", document.docEntry); OQUT.docEntry = document.docEntry; BizQuotation.Update(OQUT); } catch (FaultException<DataAccessFault> ex) { ViewBag.colorMensaje = "danger"; ViewBag.mensaje = "No se pudo crear la Cotización"; ViewBag.docEntry = string.Format("Codigo {0} error:{1} {2}", ex.Code, ex.Detail.Description, ex.Message); } return View(); }
public JsonResult batchCreate() { string res = "Error"; List<MarketingDocument> documents = new List<MarketingDocument>(); try { //Find document pending to process List<ProcessQueue> queue = BizProcessQueue.GetList(false).ToList(); List<int> companies = queue.Select(x => x.idCompany).Distinct().ToList(); List<MarketingDocument> resultTransaction = new List<MarketingDocument>(); if (companies.Count() > 0) { foreach (int company in companies) { AppConnData appConnData = new AppConnData(); List<ProcessQueue> items = queue.Where(x => x.idCompany.Equals(company)).ToList(); List<int> orderIds = items.Select(x => x.idTarget).ToList(); IList<ORDR> orders = BizSalesOrderDraft.GetList(orderIds); IList<RDR1> orderLines = BizSalesOrderDraft.GetLinesList(orderIds); if (items.Count() > 0) { appConnData = GetAppConnData(company); #region Queue Process foreach (ProcessQueue item in items) { if (item.actionType == "A") { #region Add Sales Order ORDR ordr = orders.Where(x => x.id.Equals(item.idTarget)).FirstOrDefault(); if (ordr != null) { IList<RDR1> lines = orderLines.Where(x => x.orderId.Equals(ordr.id)).ToList(); MarketingDocument document = new MarketingDocument() { cardCode = ordr.cardCode, serie = ordr.series, docDate = ordr.docDate, docDueDate = ordr.docDueDate, taxDate = ordr.taxDate, shipToCode = ordr.shipToCode, payToCode = ordr.payToCode, groupNum = ordr.groupNum, slpCode = ordr.slpCode, lines = new List<MarketingDocumentLine>(), userDefinedFields = new List<UserDefinedField>(), actionType = ActionType.Add, idQueue = item.id }; document.userDefinedFields.Add(new UserDefinedField() { name = "U_CSS_COMENTARIOS", type = UdfType.Text, value = ordr.uCssComentarios }); document.userDefinedFields.Add(new UserDefinedField() { name = "U_orkWebDocument", type = UdfType.Text, value = ordr.id.ToString() }); foreach (RDR1 line in lines) { MarketingDocumentLine docLine = new MarketingDocumentLine() { itemCode = line.itemCode, quantity = (double)line.quantity, whsCode = line.whsCode, taxCode = line.taxCode, ocrCode = line.ocrCode, price = (double)line.price, batchNumbers = new List<BatchNumber>(), serialNumbers = new List<SerialNumber>(), userDefinedFields = new List<UserDefinedField>() }; docLine.userDefinedFields.Add(new UserDefinedField() { name = "U_CSS_ENVASEDEVOL", type = UdfType.Alphanumeric, value = line.uCssEnvaseDevol }); document.lines.Add(docLine); } //backEnd.ProcessBatchTransaction() documents.Add(document); } else { BizProcessQueue.Remove(item); } #endregion } if (item.actionType == "C") { #region Add Sales order Cancellation MarketingDocument document = new MarketingDocument() { docEntry = item.idTarget, actionType = ActionType.Cancel, idQueue = item.id }; documents.Add(document); #endregion } } #endregion resultTransaction = backEnd.ProcessBatchTransaction(documents, appConnData); #region QueueUpdate foreach (ProcessQueue item in items) { MarketingDocument trans = resultTransaction.Where(x => x.idQueue.Equals(item.id)).FirstOrDefault(); if (trans != null) { item.processed = DateTime.Now; item.logMessage = trans.transactionInformation; if (trans.transactionInformation.Substring(0, 5).ToLower() == "error") { item.sucess = false; item.logMessage = trans.transactionInformation; } else { if (item.actionType == "A") { ORDR order = orders.Where(x => x.id.Equals(item.idTarget)).FirstOrDefault(); string docNum = backEnd.GetOrderNum(trans.docEntry, appConnData).ToString(); order.docEntry = trans.docEntry; BizSalesOrderDraft.Update(order); trans.transactionInformation = string.Format("{0}. Doc num = {1}", trans.transactionInformation, docNum); } item.sucess = true; item.logMessage = trans.transactionInformation; } BizProcessQueue.Update(item); } } #endregion res = string.Format("Se procesaron {0} transacciones", items.Count().ToString()); } } } else res = "No hay informacion para procesar"; } catch (FaultException<DataAccessFault> ex) { res = string.Format("Error - Codigo {0} mensaje:{1} {2}", ex.Code, ex.Detail.Description, ex.Message); } catch (Exception ex) { res = string.Format("Error - mensaje: {0}", ex.Message); } return Json(res, JsonRequestBehavior.AllowGet); }
public MarketingDocument Add(SapDocumentType mktgDocType, MarketingDocument document) { StringBuilder cmd = new StringBuilder(); string doc = string.Empty; #region Document definition switch (mktgDocType) { case SapDocumentType.SalesInvoice: doc = "InvoicesService"; break; case SapDocumentType.SalesCreditNote: doc = "CreditNotesService"; break; case SapDocumentType.SalesDelivery: doc = "DeliveryNotesService"; break; case SapDocumentType.SalesReturn: doc = "ReturnsService"; break; case SapDocumentType.SalesOrder: doc = "OrdersService"; break; case SapDocumentType.PurchaseInvoice: doc = "PurchaseInvoicesService"; break; case SapDocumentType.PurchaseCreditNote: doc = "PurchaseCreditNotesService"; break; case SapDocumentType.PurchaseDelivery: doc = "PurchaseDeliveryNotesService"; break; case SapDocumentType.PurchaseReturn: doc = "PurchaseReturnsService"; break; case SapDocumentType.PurchaseOrder: doc = "PurchaseOrdersService"; break; case SapDocumentType.Quotation: doc = "QuotationsService"; break; case SapDocumentType.Draft: doc = "DraftsService"; break; default: break; } #endregion try { CreateSession(); cmd.Append(@"<?xml version=""1.0"" encoding=""UTF-16""?>"); cmd.Append(@"<env:Envelope xmlns:env=""http://schemas.xmlsoap.org/soap/envelope/"">"); cmd.Append(string.Format("<env:Header><SessionID>{0}</SessionID></env:Header>", _sessionId)); cmd.Append("<env:Body>"); cmd.Append(@"<dis:Add xmlns:dis=""http://www.sap.com/SBO/DIS"">"); cmd.Append(string.Format("<Service>{0}</Service>", doc)); cmd.Append("<Document>"); #region Document header cmd.Append(string.Format("<Series>{0}</Series>", document.serie)); cmd.Append(string.Format("<CardCode>{0}</CardCode>", document.cardCode)); cmd.Append(string.Format("<DocDate>{0}</DocDate>", document.docDate.ToString("yyyy-MM-dd"))); cmd.Append(string.Format("<DocDueDate>{0}</DocDueDate>", document.docDueDate.ToString("yyyy-MM-dd"))); cmd.Append(string.Format("<TaxDate>{0}</TaxDate>", document.taxDate.ToString("yyyy-MM-dd"))); if (!string.IsNullOrEmpty(document.numAtCard)) { cmd.Append(string.Format("<NumAtCard>{0}</NumAtCard>", document.numAtCard)); } if (!string.IsNullOrEmpty(document.shipToCode)) { cmd.Append(string.Format("<ShipToCode>{0}</ShipToCode>", document.shipToCode)); } if (!string.IsNullOrEmpty(document.payToCode)) { cmd.Append(string.Format("<PayToCode>{0}</PayToCode>", document.payToCode)); } if (document.groupNum != null) { cmd.Append(string.Format("<GroupNumber>{0}</GroupNumber>", document.groupNum.ToString())); } if (!string.IsNullOrEmpty(document.comments)) { cmd.Append(string.Format("<Comments>{0}</Comments>", document.comments)); } if (document.slpCode != null) { cmd.Append(string.Format("<SalesPersonCode>{0}</SalesPersonCode>", document.slpCode)); } #endregion #region Document lines cmd.Append("<DocumentLines>"); foreach (MarketingDocumentLine line in document.lines) { cmd.Append("<DocumentLine>"); if (line.baseType != 202) { cmd.Append(string.Format("<ItemCode>{0}</ItemCode>", line.itemCode)); } cmd.Append(string.Format("<Quantity>{0}</Quantity>", line.quantity.ToString())); cmd.Append(string.Format("<WarehouseCode>{0}</WarehouseCode>", line.whsCode)); if (line.price != 0) { cmd.Append(string.Format("<UnitPrice>{0}</UnitPrice>", line.price.ToString())); } if (!string.IsNullOrEmpty(line.unitMsr)) { cmd.Append(string.Format("<MeasureUnit>{0}</MeasureUnit>", line.unitMsr)); } if (!string.IsNullOrEmpty(line.taxCode)) { cmd.Append(string.Format("<TaxCode>{0}</TaxCode>", line.taxCode)); } if (!string.IsNullOrEmpty(line.ocrCode)) { cmd.Append(string.Format("<CostingCode>{0}</CostingCode>", line.ocrCode)); } if (line.numPerMsr != 0) { cmd.Append(string.Format("<UnitsOfMeasurment>{0}</UnitsOfMeasurment>", line.numPerMsr)); } if (line.baseEntry != 0) { cmd.Append(string.Format("<BaseEntry>{0}</BaseEntry>", line.baseEntry)); cmd.Append(string.Format("<BaseLine>{0}</BaseLine>", line.baseLine)); cmd.Append(string.Format("<BaseType>{0}</BaseType>", line.baseType)); } cmd.Append("</DocumentLine>"); } cmd.Append("<DocumentLines>"); #endregion cmd.Append("</Document>"); cmd.Append("</dis:Add></env:Body></env:Envelope>"); string AddDocument = node.BatchInteract(cmd.ToString()); XmlDocument response = new XmlDocument(); response.Load(AddDocument); int docEntry = -1; if (int.TryParse(response.DocumentElement.InnerText, out docEntry)) { document.docEntry = docEntry; } ReleaseSession(); } catch (Exception ex) { ReleaseSession(); throw ex; } return(document); }