コード例 #1
0
 public async Task <JsonResult> UserInvoice(InvoiceTbl invoice)
 {
     ViewBag.ChooseEmp = new SelectList(await FinanceAccesser.SelectEmployee(), "EmpId", "Email");
     ViewBag.Project   = new SelectList(await FinanceAccesser.SelectProject(), "ProjectId", "ProjectName");
     FinanceAccesser.AddInvoice(invoice);
     return(Json("Invoice Added Successfully", JsonRequestBehavior.AllowGet));
 }
コード例 #2
0
ファイル: engine.cs プロジェクト: dudb/etaxbill-engine
        private void DoSignature(object p_args)
        {
            var _args = (SignatureArgs)p_args;

            _args.noInvoicee = _args.noIssuing;
            _args.noIssuing  = 0;

            try
            {
                int _toprow = 800;

                var _sqlstr
                    = "SELECT a.issueId, a.typeCode, a.invoicerId, a.invoicerEMail, a.invoiceeId, a.invoiceeEMail1 as invoiceeEMail, "
                      + "               a.brokerId, a.brokerEMail, b.providerId, c.aspEMail as providerEMail "
                      + "  FROM TB_eTAX_INVOICE a "
                      + "       LEFT JOIN TB_eTAX_CUSTOMER b ON a.invoiceeId=b.customerId "
                      + "       LEFT JOIN (SELECT * FROM TB_eTAX_PROVIDER WHERE NULLIF(providerId, '') IS NOT NULL) c ON b.providerId=c.providerId "
                      + " WHERE a.isIssued=@isIssuedX "         // to avoid infinite loop, do check isIssued here.
                      + "   AND ( "
                      + "         (RIGHT(a.typeCode, 2) IN ('01', '02', '04') AND a.invoicerId=@invoicerId) "
                      + "         OR "
                      + "         (RIGHT(a.typeCode, 2) IN ('03', '05') AND a.brokerId=@invoicerId) "
                      + "       ) "
                      + _args.where
                      + " ORDER BY a.issueId"
                      + " LIMIT " + _toprow;
                {
                    _args.dbps.Add("@isIssuedX", NpgsqlDbType.Varchar, "X");
                    _args.dbps.Add("@invoicerId", NpgsqlDbType.Varchar, _args.invoicerId);
                }

                //if (LogCommands == true)
                //    ELogger.SNG.WriteLog(String.Format("begin: invoicerId->'{0}', noInvoicee->{1}", _args.invoicerId, _args.noInvoicee));

                // 만약 InsertDeltaSet을 처리하는 중에 오류가 발생하면 무한 loop를 발생 하게 되므로,
                // 'X'로 marking한 레코드의 총 갯수를 감소하여 '0'보다 큰 경우에만 반복한다.
                while (_args.noInvoicee > 0)
                {
                    InvoiceTbl.Clear();
                    IssuingTbl.Clear();

                    var _workingSet = LSQLHelper.SelectDataSet(UAppHelper.ConnectionString, _sqlstr, _args.dbps);
                    if (LSQLHelper.IsNullOrEmpty(_workingSet) == true)
                    {
                        break;
                    }

                    var _rows = _workingSet.Tables[0].Rows;

                    var _doneEvents = new ThreadPoolWait[_rows.Count];
                    for (int i = 0; i < _rows.Count; i++)
                    {
                        _doneEvents[i] = new ThreadPoolWait();

                        Updater _worker = new Updater(_args.invoicerCert, IssuingTbl, InvoiceTbl);
                        _doneEvents[i].QueueUserWorkItem(_worker.SignatureCallBack, _rows[i]);

                        if (Environment.UserInteractive == true)
                        {
                            _doneEvents[i].WaitOne();
                        }
                    }

                    ThreadPoolWait.WaitForAll(_doneEvents);

                    // 처리된 레코드가 한개 이하 인 경우는 종료한다. (문제가 있는 경우로 보여 짐)
                    if (_rows.Count < 1)
                    {
                        break;
                    }

                    //if (LogCommands == true)
                    //    ELogger.SNG.WriteLog(String.Format("loop: invoicerId->'{0}', noInvoicee->{1}, noIssuing->{2}", _args.invoicerId, _args.noInvoicee, _rows.Count));

                    _args.noInvoicee -= _rows.Count;
                    _args.noIssuing  += IssuingTbl.Rows.Count;

                    LDltaHelper.InsertDeltaSet(UAppHelper.ConnectionString, IssuingSet);
                }
            }
            catch (SignerException ex)
            {
                ELogger.SNG.WriteLog(ex);
            }
            catch (Exception ex)
            {
                ELogger.SNG.WriteLog(ex);
            }
            finally
            {
                if (LogCommands == true)
                {
                    ELogger.SNG.WriteLog(String.Format("end: invoicerId->'{0}', noInvoicee->{1}, noIssuing->{2}", _args.invoicerId, _args.noInvoicee, _args.noIssuing));
                }

                int _noClearing = ClearXFlag(_args.invoicerId);
                if (_noClearing > 0)
                {
                    if (LogCommands == true)
                    {
                        ELogger.SNG.WriteLog(String.Format("clearX: invoicerId->'{0}', noClear->{1}", _args.invoicerId, _noClearing));
                    }
                }
            }
        }
コード例 #3
0
 public int Create([FromBody] InvoiceTbl i, string Invoiceno)
 {
     return(cust.AddInvoice(i, Invoiceno));
 }
コード例 #4
0
 public int Edit([FromBody] InvoiceTbl i)
 {
     return(cust.UpdateInvoice(i));
 }
コード例 #5
0
 public int Create([FromBody] InvoiceTbl i)
 {
     return(cust.AddInvoice(i));
 }