public int Pay(BillingChld chld, CustAcnt acnt)
 {
     if (null == chld)
     {
         return(0);
     }
     return(service.UpdateAmount(chld, acnt));
 }
예제 #2
0
        public int UpdateAmount(BillingChld chld, CustAcnt acnt)
        {
            DateTime now = DateTime.Now;
            int      cnt = 0;
            Dictionary <string, object> values = null;
            long?acntId;

            if (null != acnt && null == acnt.ID__PK)
            {
                string acntSql = "SELECT MAX(ID) FROM CUST_ACNT WHERE AcntType=@type AND AcntNO=@acntNO AND CustID=@custId ";
                values = new Dictionary <string, object>();
                values.Add("type", acnt.AcntType);
                values.Add("acntNO", acnt.AcntNO);
                values.Add("custId", acnt.CustID);
                if (PAY_MODE.THIRD_PLATFORM == chld.PayMode)
                {
                    acnt.AcntType = ACNT_TYPE.THIRD_PLATFORM;
                    acntSql      += "AND Platform=@patf ";
                    values.Add("patf", acnt.Platform);
                }
                else if (PAY_MODE.BANK_TRANSFER == chld.PayMode)
                {
                    acnt.AcntType = ACNT_TYPE.BANCK_NO;
                    acnt.Platform = null;
                }
                Connector.Save <CustAcnt>(acnt);
                acntId = Connector.ScalarLong(acntSql, values);
            }
            else if (null != acnt && null != acnt.ID__PK)
            {
                acntId = (long)acnt.ID__PK;
            }
            else
            {
                acntId = null;
            }
            chld.OprtTmst = now;
            chld.AcntId   = acntId;
            cnt           = Connector.Save <BillingChld>(chld);
            string sql = "UPDATE BILLING SET FactAmount=(SELECT SUM(Amount) FROM BILLING_CHLD WHERE BillNO=@billNO) "
                         + "WHERE BillNO=@billNO";

            values = new Dictionary <string, object>();
            values.Add("billNO", chld.BillNO);
            cnt += Connector.DbHelper.ExecuteSql(sql, values);
            return(cnt);
        }
예제 #3
0
        private void btnCnfrm_Click(object sender, System.EventArgs e)
        {
            decimal?amount = null;

            try
            {
                amount = decimal.Parse(txtPymnt.Text.Trim());
            }
            catch
            {
                txtPymnt.Text = string.Empty;
                return;
            }
            if (billGoods.Amount - billGoods.FactAmount < amount)
            {
                MainForm.Warn("入账金额超出!");
                return;
            }
            int         cnt  = 0;
            BillingChld chld = new BillingChld();

            chld.BillNO    = billGoods.BillNO__PK;
            chld.PayMode   = StringUtil.Obj2Str(cboxPayMode.SelectedValue);
            chld.Amount    = amount;
            chld.OprtUsrId = MainForm.usr.UId__PK;

            CustAcnt custAcnt = new CustAcnt();

            if (PAY_MODE.CASH == chld.PayMode)
            {
                custAcnt = null;
            }
            else
            {
                if (null != autxtAcntNO.SelectedObj)
                {
                    custAcnt = autxtAcntNO.SelectedObj as CustAcnt;
                }
                else
                {
                    if (!StringUtil.isEmpty(autxtAcntNO.Term))
                    {
                        custAcnt.AcntNO = autxtAcntNO.Term.Trim();
                        custAcnt.CustID = custId;
                        custAcnt.St     = ST.VALID;
                        if (PAY_MODE.BANK_TRANSFER == chld.PayMode)
                        {
                            custAcnt.AcntType = ACNT_TYPE.BANCK_NO;
                            custAcnt.Platform = null;
                        }
                        else if (PAY_MODE.THIRD_PLATFORM == chld.PayMode)
                        {
                            custAcnt.AcntType = ACNT_TYPE.THIRD_PLATFORM;
                            custAcnt.Platform = StringUtil.Obj2Str(cboxPlatform.SelectedValue);
                        }
                    }
                    else
                    {
                        custAcnt = null;
                    }
                }
            }
            if (grade == GRADE.SUPPLIER)
            {
                cnt = supplierManager.Pay(chld, custAcnt);
            }
            else if (grade == GRADE.RESELLER)
            {
                cnt = resellerManager.Rcv(chld, custAcnt);
            }

            if (cnt < 1)
            {
                MainForm.Warn("操作失败!");
            }
            else
            {
                tabPymnt.SelectedTab = tabPChld;
                InitChldTable(billGoods.BillNO__PK);
                txtPymnt.Text              = string.Empty;
                cboxPayMode.SelectedIndex  = 0;
                cboxPlatform.SelectedIndex = 0;
                autxtAcntNO.clear();
            }
        }