コード例 #1
0
 private void RollbackRequsitionBatch(RequisitionBatch batch)
 {
     using (var context = SqlDataHandler.GetDataContext())
     {
         context.RequisitionBatchRollback(batch.id);
     }
 }
コード例 #2
0
 private void CommitRequisitionBatch(RequisitionBatch batch)
 {
     using (var context = SqlDataHandler.GetDataContext())
     {
         context.CommitRequisitionBatch(batch.id);
         SendPaymentNotifications(context, batch.id, Controller.user.email);
     }
 }
コード例 #3
0
        private byte[] CreateCSVForBuildingBatch(tblBuilding building, RequisitionBatch batch, out string fileName)
        {
            fileName = string.Empty;
            if (!building.IsUsingNedbank)
            {
                return(null);
            }

            return(CreateNedbankCSV(building, batch, out fileName));
        }
コード例 #4
0
        private static byte[] CreateNedbankCSV(tblBuilding building, RequisitionBatch batch, out string fileName)
        {
            fileName = null;


            string fromAccountNumber           = building.bankAccNumber;
            string fromAccountDescription      = building.accName;
            string fromAccountSubAccountNumber = string.Empty;

            using (var context = SqlDataHandler.GetDataContext())
            {
                var q = from r in context.tblRequisitions
                        where r.RequisitionBatchId == batch.id &&
                        r.UseNedbankCSV == true
                        select new NedbankCSVRecord
                {
                    FromAccountNumber               = fromAccountNumber,
                    FromAccountDescription          = fromAccountDescription,
                    MyStatementDescription          = r.payreference,
                    BeneficiaryReferenceNumber      = r.NedbankCSVBenificiaryReferenceNumber,
                    BeneficiaryStatementDescription = r.payreference,
                    Amount = r.amount
                };
                var transactions = q.ToList();

                //var csvFile = new NedbankCSVFile(transactions);

                using (MemoryStream fs = new MemoryStream())
                {
                    using (StreamWriter tw = new StreamWriter(fs))
                    {
                        foreach (var t in transactions)
                        {
                            tw.WriteLine(t.ToString());
                        }
                    }

                    byte[] result = new byte[fs.Length];
                    fs.Flush();
                    fs.Read(result, 0, result.Length);
                    fileName = "Nedbank - " + building.Code + "-" + batch.BatchNumber.ToString().PadLeft(6, '0') + ".csv";
                    return(result);
                }
            }
        }
コード例 #5
0
        private RequisitionBatch CreateRequisitionBatch(int buildingId, bool buildingHasCSVExport, bool warnIfNoRequisitions = true)
        {
            ShowDebug("Start batch for building");
            using (var context = SqlDataHandler.GetDataContext())
            {
                ShowDebug("Context created");
                int batchNumber  = 0;
                var requisitions = context.tblRequisitions
                                   .Where(a => a.building == buildingId &&
                                          a.processed == false &&
                                          a.RequisitionBatchId == null).ToList();
                ShowDebug("Query executed");

                if (requisitions.Count <= 0)
                {
                    context.ClearStuckRequisitons(buildingId);
                    requisitions = context.tblRequisitions.Where(a => a.building == buildingId &&
                                                                 a.processed == false &&
                                                                 a.RequisitionBatchId == null).ToList();
                }

                if (requisitions.Count <= 0)
                {
                    if (warnIfNoRequisitions)
                    {
                        Controller.ShowMessage("There are no outstanding requisitions to process.");
                    }
                    ShowDebug("Return NULL in batch");

                    return(null);
                }
                ShowDebug("Found Requisitions");

                var previousBatch = context.RequisitionBatchSet.Where(a => a.BuildingId == buildingId).OrderByDescending(a => a.BatchNumber).FirstOrDefault();
                if (previousBatch == null)
                {
                    batchNumber = 1;
                }
                else
                {
                    batchNumber = previousBatch.BatchNumber + 1;
                }
                ShowDebug("Batch Number: " + batchNumber.ToString());

                //find all requisitions

                var batch = new RequisitionBatch()
                {
                    BuildingId  = buildingId,
                    BatchNumber = batchNumber,
                    UserId      = Controller.user.id,
                    Created     = DateTime.Now,
                    Entries     = requisitions.Count()
                };


                foreach (var requisition in requisitions)
                {
                    if (buildingHasCSVExport && requisition.SupplierId != null)
                    {
                        var supplierBank = context.SupplierBuildingSet.Where(a => a.SupplierId == requisition.SupplierId && a.BuildingId == buildingId).FirstOrDefault();
                        if (supplierBank != null && !String.IsNullOrWhiteSpace(supplierBank.BeneficiaryReferenceNumber))
                        {
                            requisition.NedbankCSVBenificiaryReferenceNumber = supplierBank.BeneficiaryReferenceNumber;
                            requisition.UseNedbankCSV = true;
                        }
                    }
                    requisition.RequisitionBatch = batch;
                }
                ShowDebug("Save batch for building");
                context.RequisitionBatchSet.Add(batch);

                context.SaveChanges();

                Application.DoEvents();
                ShowDebug("Return batch for building");
                return(batch);
            }
        }