示例#1
0
        public void insert(BOL_RESERVE_INFO B_RESERVCE, out string strMessage)
        {
            strMessage = "";
            ConnectionMaster oMaster = new ConnectionMaster(strConnectionString, strInsert);

            oMaster.crudCommand.Parameters.Add(new SqlParameter("@SEQ_NO", B_RESERVCE.SEQ_NO));
            oMaster.crudCommand.Parameters.Add(new SqlParameter("@BILLING_CODE", B_RESERVCE.BILLING_CODE));
            oMaster.crudCommand.Parameters.Add(new SqlParameter("@PAYMENT_DAY", B_RESERVCE.PAYMENT_DAY));
            oMaster.crudCommand.Parameters.Add(new SqlParameter("@TYPE_OF_ALLOCATION", B_RESERVCE.TYPE_OF_ALLOCATION));
            oMaster.crudCommand.Parameters.Add(new SqlParameter("@RESERVE_AMOUNT", B_RESERVCE.RESERVE_AMOUNT));
            oMaster.crudCommand.Parameters.Add(new SqlParameter("@DIFF_ALLOCATION_AMOUNT", B_RESERVCE.DIFF_ALLOCATION_AMOUNT));

            oMaster.ExcuteQuery(6, out strMessage);
        }
        private void PrepareDataForUpdate(DataRow dtReceiptDetail_Customer, DataTable dtBatch_Invoice, DateTime run_date)
        {
            decimal ALLOCATED_MONEY = 0;

            decimal.TryParse((dtReceiptDetail_Customer["ALLOCATED_MONEY"] == null ? "" : dtReceiptDetail_Customer["ALLOCATED_MONEY"].ToString()), out ALLOCATED_MONEY);
            decimal DEPOSIT_AMOUNT = 0;

            decimal.TryParse((dtReceiptDetail_Customer["DEPOSIT_AMOUNT"] == null ? "" : dtReceiptDetail_Customer["DEPOSIT_AMOUNT"].ToString()), out DEPOSIT_AMOUNT);

            decimal decAvailableAmount = DEPOSIT_AMOUNT - ALLOCATED_MONEY;
            int     SEQ_NO             = 0;

            int.TryParse((dtReceiptDetail_Customer["SEQ_NO"] == null ? "" : dtReceiptDetail_Customer["SEQ_NO"].ToString()), out SEQ_NO);
            DateTime DEPOSIT_DATE;

            DateTime.TryParse((dtReceiptDetail_Customer["DEPOSIT_AMOUNT"] == null ? "" : dtReceiptDetail_Customer["DEPOSIT_DATE"].ToString()), out DEPOSIT_DATE);

            int ALLOCATED_QUANTITY = 0;

            int.TryParse((dtReceiptDetail_Customer["ALLOCATED_QUANTITY"] == null ? "" : dtReceiptDetail_Customer["ALLOCATED_QUANTITY"].ToString()), out ALLOCATED_QUANTITY);

            decimal CalculateForType = 0;

            if (decAvailableAmount != 0)
            {
                BOL_RECEIPT_DETAILS oRECEIPT_DETAILS = new BOL_RECEIPT_DETAILS();
                oRECEIPT_DETAILS.ALLOCATED_QUANTITY = ALLOCATED_QUANTITY;
                oRECEIPT_DETAILS.ALLOCATED_MONEY    = ALLOCATED_MONEY; //20201117_追加_ALLOCATED_MONEYを初期値でセット

                #region Prepare Invoice, Reserve Info and Receipt Detail
                for (int i = 0; i < dtBatch_Invoice.Rows.Count; i++)
                {
                    //BILL PRICE
                    decimal BILL_PRICE = 0;
                    decimal.TryParse((dtBatch_Invoice.Rows[i]["BILL_PRICE"] == null ? "" : dtBatch_Invoice.Rows[i]["BILL_PRICE"].ToString()), out BILL_PRICE);

                    //ALLOCATATION TOTAL AMOUNT calculate
                    decimal ALLOCATION_TOTAL_AMOUNT = 0;
                    decimal.TryParse((dtBatch_Invoice.Rows[i]["ALLOCATION_TOTAL_AMOUNT"] == null ? "" : dtBatch_Invoice.Rows[i]["ALLOCATION_TOTAL_AMOUNT"].ToString()), out ALLOCATION_TOTAL_AMOUNT);

                    //BILL TRANSFER FEE
                    decimal BILL_TRANSFER_FEE = 0;
                    decimal.TryParse((dtBatch_Invoice.Rows[i]["BILL_TRANSFER_FEE"] == null ? "" : dtBatch_Invoice.Rows[i]["BILL_TRANSFER_FEE"].ToString()), out BILL_TRANSFER_FEE);

                    string strYear_Month   = (dtBatch_Invoice.Rows[i]["YEAR_MONTH"] == null ? "" : dtBatch_Invoice.Rows[i]["YEAR_MONTH"].ToString());
                    string strCompanyNoBox = (dtBatch_Invoice.Rows[i]["COMPANY_NO_BOX"] == null ? "" : dtBatch_Invoice.Rows[i]["COMPANY_NO_BOX"].ToString());

                    CalculateForType = BILL_PRICE - ALLOCATION_TOTAL_AMOUNT + BILL_TRANSFER_FEE;
                    CalculateForType = (CalculateForType < 0 ? CalculateForType * -1 : CalculateForType);

                    BOL_RESERVE_INFO oRESERVE_INFO = new BOL_RESERVE_INFO();
                    BOL_INVOICE_INFO oInvoiceInfo  = new BOL_INVOICE_INFO();

                    if (decAvailableAmount >= CalculateForType) //Type A
                    {
                        //Prepare Update For Invoice
                        oInvoiceInfo.ALLOCATION_TOTAL_AMOUNT   = ALLOCATION_TOTAL_AMOUNT + CalculateForType;
                        oInvoiceInfo.ALLOCATED_COMPLETION_DATE = run_date;
                        oInvoiceInfo.YEAR_MONTH                 = strYear_Month;
                        oInvoiceInfo.COMPANY_NO_BOX             = strCompanyNoBox;
                        oInvoiceInfo.TYPE_OF_ALLOCATION         = 1;
                        oInvoiceInfo.STATUS_ACTUAL_DEPOSIT_YYMM = DEPOSIT_DATE.ToString("yyMM");
                        oInvoiceInfo.STATUS_ACTUAL_DEPOSIT_DATE = DEPOSIT_DATE.ToString("yyyy-MM-dd");
                        lstInvoiceInfo.Add(oInvoiceInfo);

                        //Prepare Insert For Reserve Info
                        oRESERVE_INFO.SEQ_NO                 = SEQ_NO;
                        oRESERVE_INFO.BILLING_CODE           = strCompanyNoBox + strYear_Month;
                        oRESERVE_INFO.PAYMENT_DAY            = run_date;
                        oRESERVE_INFO.TYPE_OF_ALLOCATION     = 1;
                        oRESERVE_INFO.RESERVE_AMOUNT         = CalculateForType;
                        oRESERVE_INFO.DIFF_ALLOCATION_AMOUNT = decAvailableAmount - CalculateForType;
                        lstReserveInfo.Add(oRESERVE_INFO);

                        //Prepare Update for receipt detail
                        oRECEIPT_DETAILS.ALLOCATED_MONEY += CalculateForType;
                        if (DEPOSIT_AMOUNT == oRECEIPT_DETAILS.ALLOCATED_MONEY)
                        {
                            oRECEIPT_DETAILS.ALLOCATED_COMPLETION_DATE = run_date;
                        }
                        oRECEIPT_DETAILS.SEQ_NO              = SEQ_NO;
                        oRECEIPT_DETAILS.PAYMENT_DAY         = run_date;
                        oRECEIPT_DETAILS.TYPE_OF_ALLOCATION  = 1;
                        oRECEIPT_DETAILS.ALLOCATED_QUANTITY += 1;
                        lstReceiptDetail.Add(oRECEIPT_DETAILS);
                        decAvailableAmount = decAvailableAmount - CalculateForType;
                    }
                    else if (decAvailableAmount < CalculateForType) //Type B
                    {
                        //Prepare Update For Invoice Info
                        oInvoiceInfo.ALLOCATION_TOTAL_AMOUNT = ALLOCATION_TOTAL_AMOUNT + decAvailableAmount;
                        if (CalculateForType == 0)
                        {
                            oInvoiceInfo.ALLOCATED_COMPLETION_DATE = run_date;
                        }
                        oInvoiceInfo.YEAR_MONTH                 = strYear_Month;
                        oInvoiceInfo.COMPANY_NO_BOX             = strCompanyNoBox;
                        oInvoiceInfo.TYPE_OF_ALLOCATION         = 1;
                        oInvoiceInfo.STATUS_ACTUAL_DEPOSIT_YYMM = DEPOSIT_DATE.ToString("yyMM");
                        oInvoiceInfo.STATUS_ACTUAL_DEPOSIT_DATE = DEPOSIT_DATE.ToString("yyyy-MM-dd");
                        lstInvoiceInfo.Add(oInvoiceInfo);

                        //Prepare Insert For Reserve Info
                        oRESERVE_INFO.SEQ_NO                 = SEQ_NO;
                        oRESERVE_INFO.BILLING_CODE           = strCompanyNoBox + strYear_Month;
                        oRESERVE_INFO.PAYMENT_DAY            = run_date;
                        oRESERVE_INFO.TYPE_OF_ALLOCATION     = 1;
                        oRESERVE_INFO.RESERVE_AMOUNT         = decAvailableAmount;
                        oRESERVE_INFO.DIFF_ALLOCATION_AMOUNT = decAvailableAmount - CalculateForType;

                        lstReserveInfo.Add(oRESERVE_INFO);

                        //Prepare Update for Receipt Detail
                        oRECEIPT_DETAILS.ALLOCATED_COMPLETION_DATE = run_date;
                        oRECEIPT_DETAILS.ALLOCATED_MONEY           = DEPOSIT_AMOUNT;
                        oRECEIPT_DETAILS.SEQ_NO              = SEQ_NO;
                        oRECEIPT_DETAILS.PAYMENT_DAY         = run_date;
                        oRECEIPT_DETAILS.TYPE_OF_ALLOCATION  = 1;
                        oRECEIPT_DETAILS.ALLOCATED_QUANTITY += 1;
                        lstReceiptDetail.Add(oRECEIPT_DETAILS);
                        decAvailableAmount = decAvailableAmount - CalculateForType;
                    }
                    ALLOCATED_MONEY += oRECEIPT_DETAILS.ALLOCATED_MONEY;

                    if (oRECEIPT_DETAILS.ALLOCATED_COMPLETION_DATE != null)
                    {
                        break;
                    }
                }
                #endregion


                RECEIPT_DETAILS oRCP       = new RECEIPT_DETAILS(Properties.Settings.Default.MyConnection);
                INVOICE_INFO    oInv       = new INVOICE_INFO(Properties.Settings.Default.MyConnection);
                RESERVE_INFO    oReseve    = new RESERVE_INFO(Properties.Settings.Default.MyConnection);
                string          strMessage = "";
                for (int i = 0; i < lstReceiptDetail.Count; i++)
                {
                    oRCP.UpdateReceipt_Detail(lstReceiptDetail[i], out strMessage);
                }

                for (int i = 0; i < lstInvoiceInfo.Count; i++)
                {
                    oInv.UpdateInvoice_Info(lstInvoiceInfo[i], out strMessage);
                }

                for (int i = 0; i < lstReserveInfo.Count; i++)
                {
                    oReseve.insert(lstReserveInfo[i], out strMessage);
                }
            }
        }