Exemplo n.º 1
0
        public async Task <ActionResult> Create([Bind(Include = "Id,Branches_Id,No,Timestamp,PettyCashRecordsCategories_Id,Amount,Notes,ExpenseCategories_Id")] PettyCashRecordsModels pettyCashRecordsModels)
        {
            if (ModelState.IsValid)
            {
                string lastHex_string = db.PettyCashRecords.AsNoTracking().Max(x => x.No);
                int    lastHex_int    = int.Parse(
                    string.IsNullOrEmpty(lastHex_string) ? 0.ToString("X5") : lastHex_string,
                    System.Globalization.NumberStyles.HexNumber);

                pettyCashRecordsModels.Id              = Guid.NewGuid();
                pettyCashRecordsModels.No              = (lastHex_int + 1).ToString("X5");
                pettyCashRecordsModels.Timestamp       = DateTime.UtcNow;
                pettyCashRecordsModels.IsChecked       = false;
                pettyCashRecordsModels.UserAccounts_Id = db.User.Where(x => x.UserName == User.Identity.Name).FirstOrDefault().Id;
                db.PettyCashRecords.Add(pettyCashRecordsModels);

                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            ViewBag.listBranch = new SelectList(db.Branches.Where(x => x.Active == true).OrderBy(x => x.Name).ToList(), "Id", "Name");
            ViewBag.categories = db.PettyCashRecordsCategories.Where(x => x.Active == true).OrderBy(x => x.Name).ToList();
            var selected = db.PettyCashRecordsCategories.Where(x => x.Active == true && x.Default_row == true).FirstOrDefault();

            ViewBag.categorySelectedId = (selected != null) ? selected.Id.ToString() : "";
            ViewBag.listCategory       = new SelectList(db.ExpenseCategories.Where(x => x.Active == true).OrderBy(x => x.Name).ToList(), "Id", "Name");
            return(View(pettyCashRecordsModels));
        }
Exemplo n.º 2
0
        public async Task <JsonResult> CancelApproved(Guid pettycash_id)
        {
            string status = "OK";
            PettyCashRecordsModels pettyCashRecordsModels = await db.PettyCashRecords.Where(x => x.Id == pettycash_id).FirstOrDefaultAsync();

            pettyCashRecordsModels.IsChecked       = false;
            db.Entry(pettyCashRecordsModels).State = EntityState.Modified;
            await db.SaveChangesAsync();

            return(Json(new { status }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 3
0
        public async Task <JsonResult> SaveExpense(Guid id, string expense_id)
        {
            string status = "OK";
            PettyCashRecordsModels pettyCashRecordsModels = await db.PettyCashRecords.Where(x => x.Id == id).FirstOrDefaultAsync();

            if (string.IsNullOrEmpty(expense_id))
            {
                pettyCashRecordsModels.ExpenseCategories_Id = null;
            }
            else
            {
                pettyCashRecordsModels.ExpenseCategories_Id = new Guid(expense_id);
            }
            db.Entry(pettyCashRecordsModels).State = EntityState.Modified;
            await db.SaveChangesAsync();

            return(Json(new { status }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 4
0
        public JsonResult SavePayments(Guid branch_id, int cash_amount, int consignment_amount, Guid?consignment_id, int bank_amount, string bank_name, string owner_name, string bank_number, string reff_no, string notes, string bank_type, string invoices_id)
        {
            string lastHex_string = db.Payments.AsNoTracking().Max(x => x.No);
            int    lastHex_int    = int.Parse(
                string.IsNullOrEmpty(lastHex_string) ? 0.ToString("X5") : lastHex_string,
                System.Globalization.NumberStyles.HexNumber);

            PaymentsModels paymentsModels = new PaymentsModels
            {
                Id         = Guid.NewGuid(),
                No         = (lastHex_int + 1).ToString("X5"),
                Timestamp  = DateTime.UtcNow,
                CashAmount = cash_amount,

                DebitAmount       = bank_amount,
                DebitBank         = (bank_amount == 0) ? "" : bank_name,
                DebitOwnerName    = (bank_amount == 0) ? "" : owner_name,
                DebitNumber       = (bank_amount == 0) ? "" : bank_number,
                DebitRefNo        = (bank_amount == 0) ? "" : reff_no,
                Consignments_Id   = (consignment_amount == 0) ? null : consignment_id,
                ConsignmentAmount = consignment_amount,
                Notes             = notes,
                Cancelled         = false,
                Confirmed         = false,
                IsTransfer        = (bank_type == "Transfer") ? true : false
            };

            string   status; Guid payment_id;
            DateTime dateStart    = DateTime.UtcNow.AddSeconds(-10); //range time = 10 seconds
            DateTime dateEnd      = DateTime.UtcNow;
            var      paymentCheck = db.Payments.Where(x =>
                                                      x.Timestamp >= dateStart && x.Timestamp <= dateEnd &&
                                                      x.CashAmount == paymentsModels.CashAmount &&
                                                      x.DebitAmount == paymentsModels.DebitAmount &&
                                                      x.DebitBank == paymentsModels.DebitBank &&
                                                      x.DebitOwnerName == paymentsModels.DebitOwnerName &&
                                                      x.DebitNumber == paymentsModels.DebitNumber &&
                                                      x.DebitRefNo == paymentsModels.DebitRefNo &&
                                                      x.Consignments_Id == paymentsModels.Consignments_Id &&
                                                      x.ConsignmentAmount == paymentsModels.ConsignmentAmount &&
                                                      x.Notes == paymentsModels.Notes &&
                                                      x.Cancelled == paymentsModels.Cancelled &&
                                                      x.Confirmed == paymentsModels.Confirmed &&
                                                      x.IsTransfer == paymentsModels.IsTransfer
                                                      ).FirstOrDefault();

            if (paymentCheck != null)
            {
                status = "300"; payment_id = paymentCheck.Id;
            }                                                                           //duplicate
            else
            {
                status = "200"; payment_id = paymentsModels.Id;
                db.Payments.Add(paymentsModels);

                int      total_paid = cash_amount + bank_amount + consignment_amount;
                string[] ids        = invoices_id.Split(',');
                for (int i = ids.Length - 1; i >= 0; i--)  //foreach (string id in ids)
                {
                    if (total_paid > 0)
                    {
                        string             id_saleinvoice     = ids[i];
                        SaleInvoicesModels saleInvoicesModels = db.SaleInvoices.Where(x => x.Id.ToString() == id_saleinvoice).FirstOrDefault();
                        int due_inv = saleInvoicesModels.Due;
                        if (total_paid >= due_inv)
                        {
                            saleInvoicesModels.Due = 0;
                            total_paid            -= due_inv;
                        }
                        else
                        {
                            saleInvoicesModels.Due -= total_paid;
                            total_paid              = 0;
                        }
                        db.Entry(saleInvoicesModels).State = EntityState.Modified;

                        PaymentItemsModels paymentItemsModels = new PaymentItemsModels
                        {
                            Id          = Guid.NewGuid(),
                            Payments_Id = paymentsModels.Id,
                            ReferenceId = saleInvoicesModels.Id,
                            Amount      = (due_inv > saleInvoicesModels.Due) ? due_inv - saleInvoicesModels.Due : saleInvoicesModels.Due - due_inv,
                            DueBefore   = due_inv,
                            DueAfter    = saleInvoicesModels.Due
                        };
                        db.PaymentItems.Add(paymentItemsModels);
                    }
                }

                if (cash_amount > 0)
                {
                    string lastHex_string_pcr = db.PettyCashRecords.AsNoTracking().Max(x => x.No);
                    int    lastHex_int_pcr    = int.Parse(
                        string.IsNullOrEmpty(lastHex_string_pcr) ? 0.ToString("X5") : lastHex_string_pcr,
                        System.Globalization.NumberStyles.HexNumber);

                    PettyCashRecordsModels pettyCashRecordsModels = new PettyCashRecordsModels
                    {
                        Id          = Guid.NewGuid(),
                        Branches_Id = branch_id,
                        RefId       = paymentsModels.Id,
                        No          = (lastHex_int_pcr + 1).ToString("X5"),
                        Timestamp   = DateTime.UtcNow,
                        PettyCashRecordsCategories_Id = db.Settings.Where(x => x.Id == SettingsValue.GUID_AutoEntryForCashPayments).FirstOrDefault().Value_Guid.Value, //db.PettyCashRecordsCategories.Where(x => x.Name == "Penjualan Tunai").FirstOrDefault().Id,
                        Notes           = "Cash Payment [" + paymentsModels.No + "]",
                        Amount          = cash_amount,
                        IsChecked       = false,
                        UserAccounts_Id = db.User.Where(x => x.UserName == User.Identity.Name).FirstOrDefault().Id
                    };
                    db.PettyCashRecords.Add(pettyCashRecordsModels);
                }

                db.SaveChanges();
            }

            return(Json(new { status, payment_id }, JsonRequestBehavior.AllowGet));
        }