public DraftLineBean() { this.ItemCode = ""; this.DiscountPercent = 0; this.UoMEntry = -1; BatchNumbers.Add(new BatchNumberBean()); }
public static double TotalBatchQuantity(this BatchNumbers batches) { double batchQty = 0; for (int x = 0; x < batches.Count; x++) { batches.SetCurrentLine(x); batchQty += batches.Quantity; } return(batchQty); }
public async Task <IActionResult> ProcessPayments(PaymentProcessingViewModel viewModel) { string ReferenceNumber = viewModel.ReferenceNumber; bool allaccounts = viewModel.AllAccounts; if (string.IsNullOrEmpty(ReferenceNumber)) { return(RedirectToAction("ProcessPayments", new { productId = viewModel.ProductID, errReference = "Process cannot continue. Please enter value." })); } ; if (!allaccounts && (viewModel.PaymentTypeID != 1 && viewModel.PaymentTypeID != 3)) { return(RedirectToAction("ProcessPayments", new { productId = viewModel.ProductID, errBankAccounts = "Process cannot continue. Please ensure that all payees have account numbers." })); } ; if (ReferenceNumber != null) { const int BufferSize = 4096; int paymentType = viewModel.PaymentTypeID; var todaydate = DateTime.Now.ToString("yyyyMMddHHmmss"); string dy = todaydate.Substring(6, 2); string mn = todaydate.Substring(4, 2); string yr = todaydate.Substring(0, 4); string hr = todaydate.Substring(8, 2); string mi = todaydate.Substring(10, 2); string sc = todaydate.Substring(12, 2); string prefix = ""; switch (paymentType) { case 1: // Cash prefix = "CSH"; break; case 2: // EFT prefix = "EFT"; break; case 3: // Cheque prefix = "CHQ"; break; case 4: // Direct Debit prefix = "DDR"; break; case 5: // Bank Transfer prefix = "BTR"; break; default: break; } var filename = prefix + "-File-" + yr + mn + dy + hr + mi + sc + ".txt"; var filePath = hostingEnv.WebRootPath + $@"\BankFiles\{filename}"; var cheques = await _context.ChequeSummaryTemps.ToListAsync(); var chequetransactions = await _context.ChequeTemps.ToListAsync(); BatchNumbers BatchNumberGen = new BatchNumbers(_context); var BatchNumber = BatchNumberGen.GetBatchNumber(); int chequenumber = 0; if (paymentType == 3) { chequenumber = int.Parse(viewModel.ReferenceNumber); ReferenceNumber = chequenumber.ToString(); } else { ReferenceNumber = viewModel.ReferenceNumber; }; Guid productId = viewModel.ProductID; int paymentTypeId = viewModel.PaymentTypeID; Guid currentUserId = Guid.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)); Guid payableId = Guid.Empty; var myParams = new object[] { productId, ReferenceNumber, BatchNumber }; using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.Read, BufferSize, true)) { Int32 offset = 0; string refnumberVar = string.Empty; string text = "Payment Transactions\r\n"; text += "=====================\r\n"; byte[] buffer = Encoding.Unicode.GetBytes(text); await fs.WriteAsync(buffer, offset, buffer.Length); decimal BulkAmount = cheques.Sum(a => a.Amount); foreach (ChequeSummaryTemp c in cheques) { Guid payeeId = c.PayeeID; // This string attempts to create the presumed record format as will be determined by the paying // institution. This string assumes that the output will be a comma-separated ascii file in the // given column order. if (paymentType == 1 || paymentType == 3) { text = ReferenceNumber + "," + c.Amount.ToString() + "," + DateTime.Now.ToString("dd/MM/yyyy") + "," + c.Payee + "," + c.PostalAddress + "," + c.City; } else if (paymentType == 2 || paymentType == 4 || paymentType == 2) { // Get Payee Bank Account Details var bankaccountdetail = GetBankDetails(c.PayeeID); text = ReferenceNumber + "," + bankaccountdetail + "," + c.Amount.ToString() + "," + DateTime.Now.ToString("dd/MM/yyyy") + "," + c.Payee + "," + c.PostalAddress + "," + c.City; } ; buffer = Encoding.Unicode.GetBytes(text + "\r\n"); await fs.WriteAsync(buffer, offset, buffer.Length); if (!ReferenceNumber.Equals(refnumberVar)) { refnumberVar = ReferenceNumber; decimal FinalAmount = (paymentType == 3) ? c.Amount : BulkAmount; var payableParams = new object[] { Guid.NewGuid(), productId, ReferenceNumber, DateTime.Now, paymentTypeId, FinalAmount, BatchNumber, false, null, null, null, DateTime.Now, currentUserId, null, null }; await _context.Database.ExecuteSqlCommandAsync( "INSERT INTO Payable (ID, ProductID, Reference, PayableDate, PaymentTypeID, Amount, " + "BatchNumber, Void, VoidReason, Remarks, PayableExportID, DateAdded, AddedBy, " + "DateModified, ModifiedBy) " + "VALUES ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14})", parameters : payableParams); // Get Payable ID payableId = GetPayableId(ReferenceNumber); } ; foreach (ChequeTemp t in chequetransactions) { if (t.PayeeID == payeeId) { var transParams = new object[] { t.ID, payableId }; await _context.Database.ExecuteSqlCommandAsync( "UPDATE ClaimTransaction SET PayableID = {1} " + "WHERE ID = {0}", parameters : transParams); } } chequenumber++; if (paymentType == 3) { refnumberVar = chequenumber.ToString(); ReferenceNumber = refnumberVar; } else { refnumberVar = ReferenceNumber; }; } ; fs.Flush(); } var batchParams = new object[] { BatchNumber }; await _context.Database.ExecuteSqlCommandAsync( "INSERT INTO BatchNumberGenerator(BatchNumber) " + "Values ({0})", parameters : batchParams); // Generete Payment File [Done] // Then insert into Payable and update ClaimTransaction tables // Delete ChequeTemp and ChequeSummaryTemp records var myParam = productId; await _context.Database.ExecuteSqlCommandAsync( "DELETE FROM ChequeTemp WHERE ProductID = {0}", parameters : myParam); await _context.Database.ExecuteSqlCommandAsync( "DELETE FROM ChequeSummaryTemp WHERE ProductID = {0}", parameters : myParam); } return(RedirectToAction("ProcessPayments", new { productId = viewModel.ProductID })); }
public static string ReciboCalibrado(string WhsCode, string DocEntry, string DocEntryOF, string Tarja, string Peso, string Conteo, string reparo, string Variedad, string CodPro, string NomPro, string sessionId) { var OF = DeserializeJsonToDynamic(GET(ServiceLayer.ProductionOrders, DocEntryOF, null, sessionId, out _)); if (OF.AbsoluteEntry != null) { //var batch = DeserializeJsonObject<BatchNumberDetails>(GET(ServiceLayer.BatchNumberDetails, null, $"?$filter=Batch eq '{Lote}'", sessionId)); //var bin = DeserializeJsonObject<DFO_LOTESCALIBRADO>(GET(ServiceLayer.DFO_LOTESCALIBRADO, null, $"?$filter=LOTE eq '{Lote}'", sessionId)); //Consultar cajas asociadas a OF sin lote asignado DateTime date = DateTime.Now; string fecha = date.ToString("yyyyMMddHHmmssfff"); string Notes = ""; string Status = "0"; if (reparo == "Y") { Notes = "Aprobado con reparos"; Status = "2"; } var ListDocBatch = new List <BatchNumbers>(); BatchNumbers DocBatch = new BatchNumbers { BatchNumber = Tarja, Quantity = double.Parse(Peso), //Status = Status, U_FRU_CantBins = 1, U_FRU_CantBinsDis = 1, U_FRU_Conteo = Conteo, U_FRU_EstadoCalid = Notes }; ListDocBatch.Add(DocBatch); var ListDocLines = new List <IDocument_Lines>(); IDocument_Lines DocLines = new IDocument_Lines { BaseEntry = OF.AbsoluteEntry, //BaseLine = 0, BaseType = "202", Quantity = double.Parse(Peso), BatchNumbers = ListDocBatch, WarehouseCode = WhsCode//, }; ListDocLines.Add(DocLines); IDocuments Documents = new IDocuments { DocDate = DateTime.Now.ToString("yyyyMMdd"), DocumentLines = ListDocLines, }; var response = DeserializeJsonToDynamic(POST(ServiceLayer.InventoryGenEntries, Documents, sessionId, out HttpStatusCode statusCode)); if (response.DocEntry != null) { var batch = DeserializeJsonObject <BatchNumberDetails>(GET(ServiceLayer.BatchNumberDetails, null, $"?$filter=Batch eq '{Tarja}'", sessionId, out _)); batch.U_FRU_CantBinsDis = 1; batch.U_FRU_CantBins = 1; batch.U_FRU_Conteo = Conteo; batch.U_FRU_EstadoCalid = Notes; PATCH(ServiceLayer.BatchNumberDetails, batch, batch.DocEntry.ToString(), sessionId, out _); // Tarja var OCAOF = DeserializeList <Calibrado>(GET(ServiceLayer.Calibrado, null, $"?$filter=DocEntry eq {DocEntry} and Remark eq null", sessionId, out _)); foreach (var item in OCAOF) { item.Remark = response.DocEntry; item.U_Estado = "A"; PATCH(ServiceLayer.Calibrado, item, item.DocEntry, sessionId, out _); } } else { var objresponse = DeserializeJsonToDynamic(response); return(objresponse.error.message.value.ToString()); } return(response.ToString()); } else { return("OF no encontrada"); } }
public static string ConsumoLoteCalibrado(string Lote, string DocEntryOF, string LineNum, string sessionId) { var OF = GET(ServiceLayer.ProductionOrders, DocEntryOF, null, sessionId, out _).DeserializeJsonToDynamic(); if (OF.AbsoluteEntry != null) { var batch = DeserializeJsonObject <BatchNumberDetails>(GET(ServiceLayer.BatchNumberDetails, null, $"?$filter=Batch eq '{Lote}'", sessionId, out _)); var bin = DeserializeJsonObject <ListadoBinsMP>(GET(ServiceLayer.ListadoBinsMP, null, $"?$filter=LOTE eq '{Lote}' ", sessionId, out _)); //and ALMACEN eq 'FRUTEXSA' if (bin.CANTIDADBINS > 0) { var ListDocBatch = new List <BatchNumbers>(); BatchNumbers DocBatch = new BatchNumbers { BatchNumber = Lote, SystemNumber = batch.SystemNumber, Quantity = double.Parse(bin.CANTIDADBINS.ToString()), }; ListDocBatch.Add(DocBatch); var ListDocLines = new List <IDocument_Lines>(); IDocument_Lines DocLines = new IDocument_Lines { DocEntry = null, BaseEntry = OF.AbsoluteEntry, BaseLine = int.Parse(LineNum), BaseType = "202", Quantity = double.Parse(bin.CANTIDADBINS.ToString()), //bin.CANTIDADBINS, BatchNumbers = ListDocBatch, WarehouseCode = bin.ALMACEN }; ListDocLines.Add(DocLines); IDocuments Documents = new IDocuments { DocEntry = null, DocDate = DateTime.Now.ToString("yyyyMMdd"), DocumentLines = ListDocLines, }; var response = POST(ServiceLayer.InventoryGenExits, Documents, sessionId, out HttpStatusCode statusCode).DeserializeJsonToDynamic(); if (statusCode == HttpStatusCode.Created) { batch.U_FRU_CantBinsDis -= 1; if (!batch.U_FRU_CantBinsVol.HasValue) { batch.U_FRU_CantBinsVol = 0; } batch.U_FRU_CantBinsVol += 1; PATCH(ServiceLayer.BatchNumberDetails, batch, batch.DocEntry.ToString(), sessionId, out _); } else { var objresponse = DeserializeJsonToDynamic(response); return(objresponse.error.message.value.ToString()); } return(response.ToString()); } else { return("El lote no tiene cantidad disponible"); } } else { return("OF no encontrada"); } }