Ejemplo n.º 1
0
        /// <summary>
        /// 日结操作
        /// </summary>
        /// <param name="dailyBalance">日结号</param>
        /// <param name="unCheckDeviceNo">未结账的设备号</param>
        /// <returns></returns>
        public Int32 CreateDailyBalance(DailyBalance dailyBalance, out string unCheckDeviceNo)
        {
            string json = JsonConvert.SerializeObject(dailyBalance);

            byte[] jsonByte = Encoding.UTF8.GetBytes(json);

            int cByte = ParamFieldLength.PACKAGE_HEAD + jsonByte.Length;

            byte[] sendByte   = new byte[cByte];
            int    byteOffset = 0;

            Array.Copy(BitConverter.GetBytes((int)Command.ID_CREATE_DAILYBALANCE), sendByte, BasicTypeLength.INT32);
            byteOffset = BasicTypeLength.INT32;
            Array.Copy(BitConverter.GetBytes(cByte), 0, sendByte, byteOffset, BasicTypeLength.INT32);
            byteOffset += BasicTypeLength.INT32;
            Array.Copy(jsonByte, 0, sendByte, byteOffset, jsonByte.Length);
            byteOffset += jsonByte.Length;

            int result = 0;

            unCheckDeviceNo = string.Empty;
            using (SocketClient socket = new SocketClient(ConstantValuePool.BizSettingConfig.IPAddress, ConstantValuePool.BizSettingConfig.Port))
            {
                Byte[] receiveData = null;
                Int32  operCode    = socket.SendReceive(sendByte, out receiveData);
                if (operCode == (int)RET_VALUE.SUCCEEDED)
                {
                    result          = BitConverter.ToInt32(receiveData, ParamFieldLength.PACKAGE_HEAD);
                    unCheckDeviceNo = Encoding.UTF8.GetString(receiveData, ParamFieldLength.PACKAGE_HEAD + BasicTypeLength.INT32, receiveData.Length - ParamFieldLength.PACKAGE_HEAD - BasicTypeLength.INT32).Trim('\0');
                }
                socket.Close();
            }
            return(result);
        }
Ejemplo n.º 2
0
        public void DailyBalance_ReturnsExpectedToString(double startingValue)
        {
            // Arrange
            IDailyBalance dailyBalance = new DailyBalance(DateTime.Parse("01/20/2020 00:00:00"), startingValue);

            // Act
            string result = dailyBalance.ToString();

            // Assert
            result.ShouldEqual($"2020-01-20 {startingValue:0.00}");
        }
Ejemplo n.º 3
0
        public void AddToDailyTotalTransactionSum_WithCombinationsOfStartAndTransactValues_ReturnsExpectedTotalTransactionSum(double startingValue, double transactionValue, double expectedValue)
        {
            // Arrange
            IDailyBalance dailyBalance = new DailyBalance(DateTime.Parse("01/01/2020 00:00:00"), startingValue);

            // Act
            dailyBalance.AddToDailyTotalTransactionSum(transactionValue);

            // Assert
            dailyBalance.TotalTransactionSum.ShouldEqual(expectedValue);
        }
Ejemplo n.º 4
0
        public void AdjustStartingBalance_WithCombinationOfValues_ReturnsExpectedTransactionSum(double originalStartingValue, double transactionValue, double newStartingValue, double expectedValue)
        {
            // Arrange
            IDailyBalance dailyBalance = new DailyBalance(DateTime.Parse("01/01/2020 00:00:00"), originalStartingValue);

            dailyBalance.AddToDailyTotalTransactionSum(transactionValue);

            // Act
            dailyBalance.AdjustStartingBalance(newStartingValue);

            // Assert
            dailyBalance.TotalTransactionSum.ShouldEqual(expectedValue);
        }
Ejemplo n.º 5
0
        public void Add(DailyBalanceDTO dto)
        {
            var dailyBalance = new DailyBalance()
            {
                BalanceDate = dto.BalanceDate.Date,
                ProductId   = dto.Product.Id.Value,
                Quantity    = dto.Quantity,
                WorkPlaceId = dto.WorkPlaceId,
            };

            db.DailyBalances.InsertOnSubmit(dailyBalance);
            db.SubmitChanges();
        }
Ejemplo n.º 6
0
        public void Add(List <DailyBalanceDTO> dtos)
        {
            var result = new List <DailyBalance>();

            foreach (var dto in dtos)
            {
                var dailyBalance = new DailyBalance()
                {
                    BalanceDate = dto.BalanceDate.Date,
                    ProductId   = dto.ProductId,
                    Quantity    = dto.Quantity,
                    WorkPlaceId = dto.WorkPlaceId,
                };
                result.Add(dailyBalance);
            }
            db.DailyBalances.InsertAllOnSubmit(result);
            db.SubmitChanges();
        }
Ejemplo n.º 7
0
        public static byte[] CreateDailyBalance(byte[] itemBuffer)
        {
            byte[]       objRet       = null;
            string       strReceive   = Encoding.UTF8.GetString(itemBuffer, ParamFieldLength.PACKAGE_HEAD, itemBuffer.Length - ParamFieldLength.PACKAGE_HEAD).Trim('\0');
            DailyBalance dailyBalance = JsonConvert.DeserializeObject <DailyBalance>(strReceive);

            string unCheckDeviceNo = string.Empty;  //未结账的设备号
            int    result          = DailyBalanceService.GetInstance().CreateDailyBalance(dailyBalance, out unCheckDeviceNo);

            byte[] strBuffer = Encoding.UTF8.GetBytes(unCheckDeviceNo);

            int transCount = BasicTypeLength.INT32 + BasicTypeLength.INT32 + BasicTypeLength.INT32 + ParamFieldLength.UNCHECK_DEVICE_NO;

            objRet = new byte[transCount];
            Array.Copy(BitConverter.GetBytes((int)RET_VALUE.SUCCEEDED), 0, objRet, 0, BasicTypeLength.INT32);
            Array.Copy(BitConverter.GetBytes(transCount), 0, objRet, BasicTypeLength.INT32, BasicTypeLength.INT32);
            Array.Copy(BitConverter.GetBytes(result), 0, objRet, 2 * BasicTypeLength.INT32, BasicTypeLength.INT32);
            Array.Copy(strBuffer, 0, objRet, 3 * BasicTypeLength.INT32, strBuffer.Length);
            return(objRet);
        }
Ejemplo n.º 8
0
        public void RemunerateAccounts()
        {
            var dailyBalancesToday   = _dailyBalanceRepository.GetDailyBalances(DateTime.Now);
            var bankAccounts         = _bankAccountRepository.GetBankAccountsAvailableForRemunerate();
            var bankAccountForUpdate = new List <BankAccount>();
            var dailyBalances        = new List <DailyBalance>();
            var transactions         = new List <Transaction>();
            var bankAccountId        = dailyBalancesToday.Select(x => x.BankAccountId).ToList();

            foreach (var item in bankAccounts.Where(x => !bankAccountId.Contains(x.Id)).ToList())
            {
                var dailyBalance = new DailyBalance
                {
                    BankAccountId     = item.Id,
                    Balance           = item.Balance,
                    Date              = DateTime.Now,
                    RemuneratedAmount = GetRemunerateAmount(item.Balance)
                };

                var transaction = new Transaction
                {
                    BankAccountId = item.Id,
                    Amount        = dailyBalance.RemuneratedAmount,
                    Type          = TransactionType.Interest
                };

                if (dailyBalance.RemuneratedAmount > 0)
                {
                    dailyBalances.Add(dailyBalance);
                    transactions.Add(transaction);

                    item.Balance += dailyBalance.RemuneratedAmount;

                    bankAccountForUpdate.Add(item);
                }
            }

            _dailyBalanceRepository.AddRange(dailyBalances);
            _bankAccountRepository.UpdateRange(bankAccountForUpdate);
        }
Ejemplo n.º 9
0
        public Int32 CreateDailyBalance(DailyBalance dailyBalance, out string unCheckDeviceNo)
        {
            unCheckDeviceNo = string.Empty;
            int returnValue;    //日结失败

            _daoManager.BeginTransaction();
            try
            {
                //日结号
                string dailyStatementNo = _dailyStatementDao.GetCurrentDailyStatementNo();
                //更新日结信息
                DailyStatement dailyStatement = dailyBalance.dailyStatement;
                dailyStatement.DailyStatementNo = dailyStatementNo;
                returnValue = _dailyStatementDao.UpdateDailyStatement(dailyStatement, out unCheckDeviceNo);
                if (returnValue == 1)
                {
                    //插入日结金额
                    DailyTurnover dailyTurnover = dailyBalance.dailyTurnover;
                    dailyTurnover.DailyStatementNo = dailyStatementNo;
                    _dailyTurnoverDao.CreateDailyTurnover(dailyTurnover);
                    //创建新的日结
                    DailyStatement item = new DailyStatement();
                    item.DailyStatementID = Guid.NewGuid();
                    item.DailyStatementNo = DateTime.Now.ToString("yyMMddHHmmssff");
                    _dailyStatementDao.CreateDailyStatement(item);
                }
                _daoManager.CommitTransaction();
            }
            catch (Exception exception)
            {
                _daoManager.RollBackTransaction();
                returnValue = 0;
                LogHelper.GetInstance().Error(string.Format("[CreateDailyBalance]参数:dailyBalance_{0}", JsonConvert.SerializeObject(dailyBalance)), exception);
            }
            return(returnValue);
        }
Ejemplo n.º 10
0
        private void btnSalesReport_Click(object sender, EventArgs e)
        {
            if (bizReport != null && bizReport.BillTotalQty > 0)
            {
                if (m_ModelType == 1)
                {
                    //判断是否存在退款失败的账单
                    CardRefundPayService refundPayService  = new CardRefundPayService();
                    List <CardRefundPay> cardRefundPayList = refundPayService.GetCardRefundPayList();
                    if (cardRefundPayList != null && cardRefundPayList.Count > 0)
                    {
                        FormVIPCardRefundPay refundPayForm = new FormVIPCardRefundPay(cardRefundPayList);
                        refundPayForm.ShowDialog();
                    }
                    Guid           handoverRecordId = Guid.NewGuid();
                    HandoverRecord handoverRecord   = new HandoverRecord();
                    handoverRecord.HandoverRecordID = handoverRecordId;
                    handoverRecord.DeviceNo         = ConstantValuePool.BizSettingConfig.DeviceNo;
                    handoverRecord.EmployeeID       = ConstantValuePool.CurrentEmployee.EmployeeID;
                    IList <HandoverTurnover> handoverTurnoverList = new List <HandoverTurnover>();
                    foreach (OrderPayoffSum item in bizReport.orderPayoffSumList)
                    {
                        HandoverTurnover handoverTurnover = new HandoverTurnover();
                        handoverTurnover.HandoverRecordID = handoverRecordId;
                        handoverTurnover.PayoffID         = item.PayoffID;
                        handoverTurnover.SalesTurnover    = item.PayoffMoney;
                        handoverTurnoverList.Add(handoverTurnover);
                    }

                    HandoverInfo handover = new HandoverInfo();
                    handover.handoverRecord       = handoverRecord;
                    handover.handoverTurnoverList = handoverTurnoverList;
                    bool result = HandoverService.GetInstance().CreateHandover(handover);
                    if (result)
                    {
                        MessageBox.Show("交班成功!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        m_HandleSuccess = true;
                        this.Close();
                    }
                    else
                    {
                        MessageBox.Show("出现异常错误,请重新交班!");
                    }
                }
                else if (m_ModelType == 2)
                {
                    //判断是否存在退款失败的账单
                    CardRefundPayService refundPayService  = new CardRefundPayService();
                    List <CardRefundPay> cardRefundPayList = refundPayService.GetCardRefundPayList();
                    if (cardRefundPayList != null && cardRefundPayList.Count > 0)
                    {
                        FormVIPCardRefundPay refundPayForm = new FormVIPCardRefundPay(cardRefundPayList);
                        refundPayForm.ShowDialog();
                    }
                    FormChooseDate form = new FormChooseDate(bizReport.LastDailyStatementTime);
                    form.ShowDialog();
                    if (form.DailyStatementDate != null)
                    {
                        string weather = this.cmbWeather.Text;
                        if (string.IsNullOrEmpty(weather))
                        {
                            MessageBox.Show("请先选择当天天气情况!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                        }
                        DateTime       belongToDate   = (DateTime)form.DailyStatementDate;
                        DailyStatement dailyStatement = new DailyStatement();
                        dailyStatement.DeviceNo     = ConstantValuePool.BizSettingConfig.DeviceNo;
                        dailyStatement.BelongToDate = belongToDate;
                        dailyStatement.Weather      = weather;
                        dailyStatement.EmployeeID   = ConstantValuePool.CurrentEmployee.EmployeeID;
                        DailyTurnover dailyTurnover = new DailyTurnover();
                        dailyTurnover.TotalRevenue       = bizReport.TotalRevenue;
                        dailyTurnover.CutOffTotalPrice   = bizReport.CutOffTotalPrice;
                        dailyTurnover.DiscountTotalPrice = bizReport.DiscountTotalPrice;
                        dailyTurnover.ActualTotalIncome  = bizReport.ActualTotalIncome;
                        dailyTurnover.TotalServiceFee    = bizReport.TotalServiceFee;
                        dailyTurnover.StoredTotalPrice   = 0;

                        DailyBalance dailyBalance = new DailyBalance();
                        dailyBalance.dailyStatement = dailyStatement;
                        dailyBalance.dailyTurnover  = dailyTurnover;
                        string unCheckDeviceNo;  //未结账的设备号
                        int    result = DailyBalanceService.GetInstance().CreateDailyBalance(dailyBalance, out unCheckDeviceNo);
                        if (result == 1)
                        {
                            MessageBox.Show("日结成功!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            m_HandleSuccess = true;
                            this.Close();
                        }
                        else if (result == 2)
                        {
                            MessageBox.Show("存在未结账单据,请先结完账!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        else if (result == 3)
                        {
                            if (string.IsNullOrEmpty(unCheckDeviceNo))
                            {
                                MessageBox.Show("存在未交班的POS,请先交班!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                            else
                            {
                                if (unCheckDeviceNo.IndexOf(',') == -1 && unCheckDeviceNo.IndexOf(ConstantValuePool.BizSettingConfig.DeviceNo) >= 0)
                                {
                                    MessageBox.Show("当前设备未交班,请交班后进行日结!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                }
                                else
                                {
                                    MessageBox.Show(string.Format("设备【{0}】未交班,请先交班!", unCheckDeviceNo), "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                }
                            }
                        }
                        else
                        {
                            MessageBox.Show("出现异常错误,请重新日结!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
            }
        }
 public void Update(DailyBalance entity)
 {
     throw new NotImplementedException();
 }
 public void Add(DailyBalance entity)
 {
     _context.DailyBalances.Add(entity);
     _context.SaveChanges();
 }