Beispiel #1
0
        private void CopyToPayableBalance(Sales s, PayableBalance payableBalance)
        {
            payableBalance.BalanceYear   = Store.ActiveYear;
            payableBalance.BalanceMonth  = Store.ActiveMonth;
            payableBalance.SalesCode     = s.Code;
            payableBalance.SalesDate     = s.Date;
            payableBalance.CustomerId    = s.CustomerId;
            payableBalance.SalesmanId    = s.SalesmanId;
            payableBalance.PaymentMethod = s.PaymentMethod;
            payableBalance.IsStatus      = s.Status;
            payableBalance.Notes         = s.Notes;
            payableBalance.GrandTotal    = s.GrandTotal;
            payableBalance.AmountInWords = s.AmountInWords;
            payableBalance.DueDate       = s.DueDate;
            payableBalance.TermOfPayment = s.TermOfPayment;

            List <PayableBalanceItem> payableBalanceItems = new List <PayableBalanceItem>();

            foreach (var salesItem in s.SalesItems)
            {
                PayableBalanceItem pbi = new PayableBalanceItem();

                pbi.PayableBalanceId = salesItem.SalesId;
                pbi.ProductId        = salesItem.ProductId;
                pbi.Qty   = salesItem.Qty;
                pbi.Price = salesItem.Price;

                payableBalanceItems.Add(pbi);
            }

            payableBalance.PayableBalanceItems = payableBalanceItems;
        }
        public void Update(PayableBalance payableBalance)
        {
            Transaction tx = null;

            try
            {
                using (var em = EntityManagerFactory.CreateInstance(ds))
                {
                    tx = em.BeginTransaction();

                    //decimal oldGrandTotal = 0;
                    //var oldPayableBalance = GetById(payableBalance.ID);

                    //if (oldPayableBalance != null)
                    //{
                    //    oldGrandTotal = oldPayableBalance.GrandTotal;
                    //}

                    string[] columns = { "BalanceYear", "BalanceMonth",  "SalesCode",  "SalesDate",     "CustomerId",
                                         "SalesmanId",  "PaymentMethod", "GrandTotal", "IsStatus",
                                         "Notes",       "AmountInWords", "DueDate",    "TermOfPayment",
                                         "ModifiedDate" };

                    object[] values = { payableBalance.BalanceYear,   payableBalance.BalanceMonth,  payableBalance.SalesCode,                   payableBalance.SalesDate.ToShortDateString(),
                                        payableBalance.CustomerId,    payableBalance.SalesmanId,
                                        payableBalance.PaymentMethod, payableBalance.GrandTotal,    payableBalance.IsStatus == true?1:0,
                                        payableBalance.Notes,         payableBalance.AmountInWords, payableBalance.DueDate.ToShortDateString(), payableBalance.TermOfPayment,
                                        DateTime.Now.ToShortDateString() };

                    var q = new Query().Select(columns).From(tableName).Update(values).Where("ID").Equal("{" + payableBalance.ID + "}");

                    em.ExecuteNonQuery(q.ToSql(), tx);

                    payableBalanceItemRepository.Delete(em, tx, payableBalance.ID);

                    foreach (var payableBalanceItem in payableBalance.PayableBalanceItems)
                    {
                        payableBalanceItem.PayableBalanceId = payableBalance.ID;
                        payableBalanceItemRepository.Save(em, tx, payableBalanceItem);
                    }

                    UpdateGrandTotal(em, tx, payableBalance.ID, payableBalance.GrandTotal);


                    //update sales

                    salesRepository.Delete(em, tx, payableBalance.SalesCode);

                    Sales sales = CopyToSales(payableBalance);
                    salesRepository.Save(em, tx, sales);

                    tx.Commit();
                }
            }
            catch (Exception ex)
            {
                tx.Rollback();
                throw ex;
            }
        }
        private Sales CopyToSales(PayableBalance payableBalance)
        {
            Sales sales = new Sales();

            sales.Code          = payableBalance.SalesCode;
            sales.Date          = payableBalance.SalesDate;
            sales.CustomerId    = payableBalance.CustomerId;
            sales.SalesmanId    = payableBalance.SalesmanId;
            sales.PaymentMethod = payableBalance.PaymentMethod;
            sales.Status        = payableBalance.IsStatus;
            sales.Notes         = payableBalance.Notes;
            sales.GrandTotal    = payableBalance.GrandTotal;
            sales.AmountInWords = payableBalance.AmountInWords;
            sales.DueDate       = payableBalance.DueDate;
            sales.PrintCounter  = 0;
            sales.TermOfPayment = payableBalance.TermOfPayment;

            List <SalesItem> salesItems = new List <SalesItem>();

            foreach (var payableBalanceItem in payableBalance.PayableBalanceItems)
            {
                SalesItem si = new SalesItem();

                si.SalesId   = payableBalanceItem.PayableBalanceId;
                si.ProductId = payableBalanceItem.ProductId;
                si.Qty       = payableBalanceItem.Qty;
                si.Price     = payableBalanceItem.Price;

                salesItems.Add(si);
            }

            sales.SalesItems = salesItems;

            return(sales);
        }
        private void PopulatePayableBalance(PayableBalance payableBalance)
        {
            var item = new ListViewItem(payableBalance.ID.ToString());

            item.SubItems.Add(payableBalance.SalesDate.ToString("dd/MM/yyyy"));
            item.SubItems.Add(payableBalance.SalesCode);
            item.SubItems.Add(payableBalance.Customer.Name);
            item.SubItems.Add(payableBalance.Salesman.Name);
            item.SubItems.Add(payableBalance.GrandTotal.ToString("N0").Replace(",", "."));

            lvwPayableBalance.Items.Add(item);
        }
        public void Save(PayableBalance payableBalance)
        {
            Transaction tx = null;

            try
            {
                using (var em = EntityManagerFactory.CreateInstance(ds))
                {
                    Guid ID = Guid.NewGuid();

                    tx = em.BeginTransaction();

                    string[] columns = { "ID",          "BalanceYear",   "BalanceMonth", "SalesCode",     "SalesDate", "CustomerId",
                                         "SalesmanId",  "PaymentMethod", "GrandTotal",   "IsStatus",
                                         "Notes",       "AmountInWords", "DueDate",      "TermOfPayment",
                                         "CreatedDate", "ModifiedDate" };


                    object[] values = { ID,                                  payableBalance.BalanceYear,   payableBalance.BalanceMonth,                payableBalance.SalesCode,     payableBalance.SalesDate.ToShortDateString(),
                                        payableBalance.CustomerId,           payableBalance.SalesmanId,
                                        payableBalance.PaymentMethod,        payableBalance.GrandTotal,
                                        payableBalance.IsStatus == true?1:0,
                                        payableBalance.Notes,                payableBalance.AmountInWords, payableBalance.DueDate.ToShortDateString(), payableBalance.TermOfPayment,
                                        DateTime.Now.ToShortDateString(),    DateTime.Now.ToShortDateString() };

                    var q = new Query().Select(columns).From(tableName).Insert(values);

                    em.ExecuteNonQuery(q.ToSql(), tx);

                    //save detail

                    foreach (var payableBalanceItem in payableBalance.PayableBalanceItems)
                    {
                        payableBalanceItem.PayableBalanceId = ID;
                        payableBalanceItemRepository.Save(em, tx, payableBalanceItem);
                    }

                    //copy to sales

                    Sales sales = CopyToSales(payableBalance);
                    salesRepository.Save(em, tx, sales);

                    tx.Commit();
                }
            }
            catch (Exception ex)
            {
                tx.Rollback();
                throw ex;
            }
        }
Beispiel #6
0
        private void tsbEdit_Click(object sender, EventArgs e)
        {
            var userAccess = userAccessRepository.GetAll();

            bool isAllowed = userAccess.Exists(u => u.FullName == Store.ActiveUser &&
                                               u.ObjectName == "Saldo Awal Piutang" && u.IsEdit);

            if (isAllowed == false && Store.IsAdministrator == false)
            {
                MessageBox.Show("Anda tidak dapat merubah", "Perhatian", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                Sales sales = salesRepository.GetByCode(txtSalesCode.Text);
                //bool isUsed=payableBalanceRepository.IsPayableBalanceUsedByBillReceipt(sales.ID);

                if (Store.IsPeriodClosed)
                {
                    MessageBox.Show("Tidak dapat menambah/ubah/hapus \n\n Periode : " + Store.GetMonthName(Store.ActiveMonth) + " " + Store.ActiveYear + "\n\n" + "Sudah Tutup Buku", "Perhatian",
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                //else if (isUsed)
                //{
                //    MessageBox.Show("Tidak bisa ubah " + "\n\n" + "Dokumen : " + txtSalesCode.Text + "\n\n" + "dipakai di TTNT ", "Perhatian",
                //        MessageBoxButtons.OK, MessageBoxIcon.Information);
                //}
                else
                {
                    PayableBalance payableBalance = payableBalanceRepository.GetById(new Guid(txtID.Text));
                    if (Store.ActiveMonth != Store.StartDate.Month || Store.ActiveYear != Store.StartDate.Year)
                    {
                        MessageBox.Show("Tanggal harus sesuai periode awal pemakaian" + "\n" + Store.GetMonthName(Store.StartDate.Month) + " " + Store.StartDate.Year, "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else if (payableBalance.IsStatus == true)
                    {
                        MessageBox.Show("Tidak bisa diubah " + "\n\n" + "Dokumen : " + txtSalesCode.Text + "\n\n" + "dipakai di Pelunasan Piutang ", "Perhatian",
                                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        formMode  = FormMode.Edit;
                        this.Text = "Saldo Awal Piutang - Edit";

                        EnableFormForEdit();
                    }
                }
            }
        }
Beispiel #7
0
        private void tsbDelete_Click(object sender, EventArgs e)
        {
            var userAccess = userAccessRepository.GetAll();

            bool isAllowed = userAccess.Exists(u => u.FullName == Store.ActiveUser &&
                                               u.ObjectName == "Saldo Awal Piutang" && u.IsDelete);

            if (isAllowed == false && Store.IsAdministrator == false)
            {
                MessageBox.Show("Anda tidak dapat menghapus", "Perhatian", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                Sales sales = salesRepository.GetByCode(txtSalesCode.Text);

                if (Store.IsPeriodClosed)
                {
                    MessageBox.Show("Tidak dapat menambah/ubah/hapus \n\n Periode : " + Store.GetMonthName(Store.ActiveMonth) + " " + Store.ActiveYear + "\n\n" + "Sudah Tutup Buku", "Perhatian",
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else if (payableBalanceRepository.IsPayableBalanceUsedByBillReceipt(sales.ID))
                {
                    MessageBox.Show("Tidak bisa dihapus " + "\n\n" + "Dokumen : " + txtSalesCode.Text + "\n\n" + "dipakai di TTNT ", "Perhatian",
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    PayableBalance payableBalance = payableBalanceRepository.GetById(new Guid(txtID.Text));
                    if (payableBalance.IsStatus == true)
                    {
                        MessageBox.Show("Tidak bisa menghapus " + "\n\n" + "Dokumen : " + txtSalesCode.Text + "\n\n" + "dipakai di Pelunasan Piutang ", "Perhatian",
                                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        if (MessageBox.Show("Anda yakin ingin menghapus '" + txtSalesCode.Text + "'", "Perhatian",
                                            MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            payableBalanceRepository.Delete(new Guid(txtID.Text), txtSalesCode.Text);
                            GetLastPayableBalance();
                        }
                    }
                }
            }
        }
        public PayableBalance GetLast()
        {
            PayableBalance payableBalance = null;

            using (var em = EntityManagerFactory.CreateInstance(ds))
            {
                var sql = "SELECT TOP 1 pb.ID, pb.BalanceYear, pb.BalanceMonth, pb.SalesCode, pb.SalesDate, pb.CustomerId, c.CustomerName, "
                          + "pb.SalesmanId, s.SalesmanName, pb.PaymentMethod, pb.GrandTotal, pb.IsStatus, Pb.Notes, pb.CreatedDate, pb.ModifiedDate, "
                          + "pb.AmountInWords, pb.DueDate, pb.TermOfPayment "
                          + "FROM (PayableBalance pb INNER JOIN Customer c ON pb.CustomerId = c.ID) "
                          + "INNER JOIN Salesman s ON pb.SalesmanId = s.ID "
                          + "ORDER BY pb.SalesCode DESC";

                payableBalance = em.ExecuteObject <PayableBalance>(sql, new PayableBalanceMapper());
            }

            return(payableBalance);
        }
Beispiel #9
0
        private void ViewPayableBalanceDetail(PayableBalance payableBalance)
        {
            txtID.Text        = payableBalance.ID.ToString();
            txtSalesCode.Text = payableBalance.SalesCode;
            dtpDate.Text      = payableBalance.SalesDate.ToShortDateString();
            dtpDueDate.Text   = payableBalance.DueDate.ToShortDateString();

            txtTermOfPayment.Text = payableBalance.TermOfPayment.ToString();

            txtCustomerId.Text   = payableBalance.CustomerId.ToString();
            txtCustomerName.Text = payableBalance.Customer.Name;

            txtSalesmanId.Text   = payableBalance.SalesmanId.ToString();
            txtSalesmanName.Text = payableBalance.Salesman.Name;

            if (payableBalance.PaymentMethod == 1)
            {
                optCash.Checked = true;
            }
            else if (payableBalance.PaymentMethod == 2)
            {
                optCredit.Checked = true;
            }

            if (payableBalance.IsStatus == true)
            {
                lblPaidStatus.Visible = true;
            }
            else
            {
                lblPaidStatus.Visible = false;
            }


            lblTotal.Text = payableBalance.GrandTotal.ToString();
            txtNotes.Text = payableBalance.Notes;
        }
Beispiel #10
0
        private void SalesToPayableBalance()
        {
            var sales = salesRepository.GetByStatusFalse();

            foreach (var s in sales)
            {
                var oldPayableBalance = payableBalanceRepository.GetByMonthYear(Store.ActiveMonth, Store.ActiveYear, s.Code);

                PayableBalance payableBalance = new PayableBalance();

                if (oldPayableBalance == null)
                {
                    CopyToPayableBalance(s, payableBalance);
                    payableBalanceRepository.SaveFromClosingPeriod(payableBalance);
                }
                else
                {
                    payableBalance.ID = oldPayableBalance.ID;
                    CopyToPayableBalance(s, payableBalance);

                    //payableBalance.BalanceYear = Store.ActiveYear;
                    //payableBalance.BalanceMonth = Store.ActiveMonth;
                    //payableBalance.SalesCode = s.Code;
                    //payableBalance.SalesDate = s.Date;
                    //payableBalance.CustomerId = s.CustomerId;
                    //payableBalance.SalesmanId = s.SalesmanId;
                    //payableBalance.PaymentMethod = s.PaymentMethod;
                    //payableBalance.IsStatus = s.Status;
                    //payableBalance.Notes = s.Notes;
                    //payableBalance.GrandTotal = s.GrandTotal;
                    //payableBalance.AmountInWords = s.AmountInWords;
                    //payableBalance.DueDate = s.DueDate;

                    payableBalanceRepository.UpdateFromClosingPeriod(payableBalance);
                }
            }
        }
Beispiel #11
0
        private void GetLastPayableBalance()
        {
            int month = 0;
            int year  = 0;

            if (Store.ActiveMonth == 1)
            {
                month = 12;
                year  = Store.ActiveYear - 1;
            }
            else
            {
                month = Store.ActiveMonth - 1;
                year  = Store.ActiveYear;
            }

            PayableBalance payableBalance = payableBalanceRepository.GetLast(month, year);

            if (payableBalance != null)
            {
                ViewPayableBalanceDetail(payableBalance);
                LoadPayableItems(new Guid(txtID.Text));
            }
        }
Beispiel #12
0
        private void GetPayableBalanceById(Guid id)
        {
            PayableBalance payableBalance = payableBalanceRepository.GetById(id);

            ViewPayableBalanceDetail(payableBalance);
        }
Beispiel #13
0
        private void SavePayableBalance()
        {
            if (dtpDate.Value.Month >= Store.StartDate.Month && dtpDate.Value.Year >= Store.StartDate.Year)
            {
                MessageBox.Show("Tanggal harus sebelum periode awal pemakaian" + "\n" + Store.GetMonthName(Store.StartDate.Month) + " " + Store.StartDate.Year, "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else if (formMode == FormMode.Add && payableBalanceRepository.IsSalesCodeExisted(txtSalesCode.Text))
            {
                MessageBox.Show("Dokumen : \n\n" + txtSalesCode.Text + "\n\n" + "sudah ada ", "Perhatian",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else if (txtSalesCode.Text == "")
            {
                MessageBox.Show("Dokumen harus diisi", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtSalesCode.Focus();
            }
            else if (txtCustomerName.Text == "")
            {
                MessageBox.Show("Customer harus diisi", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
                btnBrowseCustomer.Focus();
            }
            else if (txtSalesmanName.Text == "")
            {
                MessageBox.Show("Salesman harus diisi", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
                btnBrowseSalesman.Focus();
            }
            else if (dtpDate.Value > dtpDueDate.Value)
            {
                MessageBox.Show("Tanggal jatuh tempo harus lebih besar dari tanggal transaksi", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else if (lvwPayableBalance.Items.Count == 0)
            {
                MessageBox.Show("Detail tidak boleh kosong", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                PayableBalance payableBalance = new PayableBalance();

                payableBalance.BalanceYear   = Store.StartDate.Year;
                payableBalance.BalanceMonth  = Store.StartDate.Month - 1;
                payableBalance.SalesCode     = txtSalesCode.Text;
                payableBalance.SalesDate     = dtpDate.Value;
                payableBalance.CustomerId    = new Guid(txtCustomerId.Text);
                payableBalance.SalesmanId    = new Guid(txtSalesmanId.Text);
                payableBalance.DueDate       = dtpDueDate.Value;
                payableBalance.TermOfPayment = int.Parse(txtTermOfPayment.Text);

                payableBalance.PaymentMethod = 2;
                payableBalance.GrandTotal    = decimal.Parse(lblTotal.Text.Replace(".", ""));
                payableBalance.Notes         = txtNotes.Text;

                string amountInWords = Store.GetAmounInWords(Convert.ToInt32(payableBalance.GrandTotal));

                string firstLetter = amountInWords.Substring(0, 2).Trim().ToUpper();
                string theRest     = amountInWords.Substring(2, amountInWords.Length - 2);

                payableBalance.AmountInWords = firstLetter + theRest + " rupiah";

                var payableBalanceItems = new List <PayableBalanceItem>();

                foreach (ListViewItem item in lvwPayableBalance.Items)
                {
                    string productId = item.SubItems[0].Text;
                    string price     = item.SubItems[3].Text;
                    string qty       = item.SubItems[4].Text;

                    PayableBalanceItem pbi = new PayableBalanceItem();

                    pbi.ProductId = new Guid(productId);
                    pbi.Qty       = int.Parse(qty.Replace(".", ""));
                    pbi.Price     = decimal.Parse(price.Replace(".", ""));

                    payableBalanceItems.Add(pbi);
                }

                payableBalance.PayableBalanceItems = payableBalanceItems;


                if (formMode == FormMode.Add)
                {
                    payableBalanceRepository.Save(payableBalance);
                    GetLastPayableBalance();
                }
                else if (formMode == FormMode.Edit)
                {
                    payableBalance.ID         = new Guid(txtID.Text);
                    payableBalance.GrandTotal = decimal.Parse(lblTotal.Text.Replace(".", ""));

                    payableBalanceRepository.Update(payableBalance);
                }


                DisableForm();
                formMode = FormMode.View;
                FillCode();
                this.Text = "Saldo Awal Piutang";
            }
        }