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 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(); }