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)); }
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)); } } } }
public int Create([FromBody] InvoiceTbl i, string Invoiceno) { return(cust.AddInvoice(i, Invoiceno)); }
public int Edit([FromBody] InvoiceTbl i) { return(cust.UpdateInvoice(i)); }
public int Create([FromBody] InvoiceTbl i) { return(cust.AddInvoice(i)); }