using System ;
using System.Linq ;
using System.Web.Mvc ;
using DSWeb.Areas.Account.DAL.Chfee_Invoice_HangXin ;
using DSWeb.Areas.Account.DAL.Chfee_Invoiceapplication ;
using DSWeb.Areas.Account.Models.Chfee_Invoiceapplication ;
using DSWeb.Areas.Account.Models.Chfee_Invoice_HangXin ;
using DSWeb.Areas.Account.Models.Chfee_do_detail ;
using DSWeb.Areas.Account.Models.BillChfeeDetail ;
using DSWeb.MvcShipping.Helper ;
using DSWeb.MvcShipping.Comm.Cookie ;
using DSWeb.Areas.CommMng.DAL ;
using System.Collections.Generic ;
using HcUtility.Comm ;
using HcUtility.Core ;
using DSWeb.EntityDA ;
using DSWeb.Areas.Account.Models.Chfee_Exrate ;
using System.IO ;
using Microsoft.Practices.EnterpriseLibrary.Data ;
using System.Text ;
using System.Data ;
using InvokeWebService ;
using DSWeb.Areas.Account.Models.RytInvoice ;
using System.Xml.Serialization ;
using System.Xml ;
using DSWeb.MvcShipping.DAL.MsSysParamSet ;
using DSWeb.Areas.SysMng.DAL.DBTableConn ;
using DSWeb.Areas.SysMng.Models.DBTableConn ;
using Spire.Pdf ;
using Aspose.Words ;
using iTextSharp.text ;
using iTextSharp.text.pdf ;
using DSWeb.MvcShipping.DAL.MsSysInvInterFaceSet ;
using DSWeb.Common.Helper ;
using DSWeb.MvcShipping.DAL.MsBaseInfoDAL ;
namespace DSWeb.Areas.Account.Controllers
{
[JsonRequestBehavior]
public class Chfee_invoice_HangXinController : Controller
{
/ /
// GET:
public ActionResult Index ( )
{
return View ( ) ;
}
/ /
// GET: /
public ActionResult Edit ( )
{
return View ( ) ;
}
public ActionResult BLEdit ( )
{
return View ( ) ;
}
public ActionResult AppEdit ( )
{
return View ( ) ;
}
public ActionResult BookEdit ( )
{
return View ( ) ;
}
public ActionResult BookIndex ( )
{
return View ( ) ;
}
public ActionResult DetailView ( )
{
return View ( ) ;
}
public ActionResult OUTDB_P2_Index ( )
{
return View ( ) ;
}
public ActionResult OUTDB_P2_Edit ( )
{
return View ( ) ;
}
#region Get
public ContentResult GetDataList ( int start , int limit , string sort , string condition )
{
var canlogin = BasicDataRefDAL . CheckLogin ( Session ) ;
if ( ! canlogin . Success )
{
return ( ContentResult ) canlogin . Data ;
}
if ( sort ! = null )
{
sort = sort . Replace ( "OPERATORNAME" , "OPERATOR" ) ;
sort = sort . Replace ( "DELOPERATORNAME" , "DELETEOPERATOR" ) ;
sort = sort . Replace ( "SALECORP" , "SALECORPID" ) ;
sort = sort . Replace ( "INVOICECATEGORYREF" , "INVOICECATEGORY" ) ;
sort = sort . Replace ( "INVOICETYPEREF" , "INVOICETYPE" ) ;
sort = sort . Replace ( "APPLICANT" , "(select top 1 (select ShowName from [user] where GID=ap.applicant) APPLICANT from ch_fee_invoiceapplication ap where invbillno=cm.BILLNO)" ) ;
}
var dataList = ChinvoiceDAL . GetDataList ( start , limit , condition , Convert . ToString ( Session [ "USERID" ] ) , CookieConfig . GetCookie_UserCode ( Request ) , Convert . ToString ( Session [ "COMPANYID" ] ) , sort ) ;
int count = ChinvoiceDAL . getTotalCount ( condition , CookieConfig . GetCookie_UserId ( Request ) , Convert . ToString ( Session [ "SHOWNAME" ] ) , Convert . ToString ( Session [ "COMPANYID" ] ) ) ;
var json = JsonConvert . Serialize ( new { Success = true , Message = "查询成功" , totalCount = count , data = dataList . ToList ( ) } ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetDataListStr ( int start , int limit , string sort , string condition , int billtype )
{
var dataListStr = ChinvoiceDAL . GetDataListStr ( condition , Convert . ToString ( Session [ "USERID" ] ) , CookieConfig . GetCookie_UserCode ( Request ) , Convert . ToString ( Session [ "COMPANYID" ] ) , sort ) ;
var json = JsonConvert . Serialize ( new { Success = true , Message = "查询成功" , data = dataListStr } ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetData ( string handle , string condition , bool isapp )
{
ChInvoice_HangXin head = null ;
if ( handle = = "edit" | | handle = = "copyadd" )
{
head = ChinvoiceDAL . GetData ( condition ) ;
}
if ( head = = null )
{
head = new ChInvoice_HangXin ( ) ;
}
if ( handle = = "add" )
{
head . OPERATOR = Convert . ToString ( Session [ "USERID" ] ) ;
head . OPERATORNAME = Convert . ToString ( Session [ "SHOWNAME" ] ) ;
head . CREATEUSER = Convert . ToString ( Session [ "USERID" ] ) ;
head . PTORRED = "1" ; //默认为正票
head . SALECORPID = Session [ "COMPANYID" ] . ToString ( ) ;
head . PAYEE = Convert . ToString ( Session [ "SHOWNAME" ] ) ;
head . CHECKER = Convert . ToString ( Session [ "SHOWNAME" ] ) ;
head . PUSHMOBILE = "0" ;
var defaultPAYEE = MsSysParamSetDAL . GetData ( "PARAMNAME='INVSKR'" ) . PARAMVALUE ;
var defaultCHECKER = MsSysParamSetDAL . GetData ( "PARAMNAME='INVFHR'" ) . PARAMVALUE ;
if ( ! string . IsNullOrEmpty ( defaultPAYEE ) )
head . PAYEE = defaultPAYEE ;
if ( ! string . IsNullOrEmpty ( defaultCHECKER ) )
head . CHECKER = defaultCHECKER ;
if ( isapp )
{
head . INVOICETYPE = 2 ;
head . INVOICETYPEREF = "申请发票" ;
}
else
{
head . INVOICETYPE = 1 ;
head . INVOICETYPEREF = "自由发票" ;
}
}
var json = JsonConvert . Serialize (
new { Success = true , Message = "查询成功" , data = head } ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetDetailList ( string condition )
{
var dataList = ChinvoiceDAL . GetDetailList ( condition ) ;
var json = JsonConvert . Serialize ( new { Success = true , Message = "查询成功" , totalCount = dataList . Count , data = dataList . ToList ( ) } ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetBillList ( string condition , string sort )
{
var dataList = ChinvoiceDAL . GetBodyList ( condition , sort ) ;
var json = JsonConvert . Serialize ( new { Success = true , Message = "查询成功" , totalCount = dataList . Count , data = dataList . ToList ( ) } ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetTruckBillList ( string condition , string sort )
{
var dataList = ChinvoiceDAL . GetTruckBodyList ( condition , sort ) ;
var json = JsonConvert . Serialize ( new { Success = true , Message = "查询成功" , totalCount = dataList . Count , data = dataList . ToList ( ) } ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetBillSum ( string condition )
{
var dataList = ChinvoiceDAL . GetBodySumList ( condition ) ;
var json = JsonConvert . Serialize ( new { Success = true , Message = "查询成功" , totalCount = dataList . Count , data = dataList . ToList ( ) } ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetFeeDataList ( int start , int limit , string sort , string condition )
{
var dataList = ChinvoiceDAL . GetFeeDataList ( condition , Convert . ToString ( Session [ "USERID" ] ) , Convert . ToString ( Session [ "SHOWNAME" ] ) , Convert . ToString ( Session [ "COMPANYID" ] ) , sort ) ;
var list = dataList . Skip ( start ) . Take ( limit ) ;
var json = JsonConvert . Serialize (
new { Success = true , Message = "查询成功" , totalCount = dataList . Count , data = list . ToList ( ) } ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetBillDataList ( int start , int limit , string sort , string condition )
{
var dataList = ChinvoiceDAL . GetAddBillList ( start , limit , condition , Convert . ToString ( Session [ "USERID" ] ) , Convert . ToString ( Session [ "SHOWNAME" ] ) , Convert . ToString ( Session [ "COMPANYID" ] ) , sort ) ;
int count = ChinvoiceDAL . getAddBillTotalCount ( condition , Convert . ToString ( Session [ "USERID" ] ) , Convert . ToString ( Session [ "SHOWNAME" ] ) , Convert . ToString ( Session [ "COMPANYID" ] ) ) ;
var json = JsonConvert . Serialize (
new { Success = true , Message = "查询成功" , totalCount = count , data = dataList . ToList ( ) } ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetTruckBillDataList ( int start , int limit , string sort , string condition )
{
var dataList = ChinvoiceDAL . GetAddTruckBillList ( start , limit , condition , Convert . ToString ( Session [ "USERID" ] ) , Convert . ToString ( Session [ "SHOWNAME" ] ) , Convert . ToString ( Session [ "COMPANYID" ] ) , sort ) ;
int count = ChinvoiceDAL . getAddTruckBillTotalCount ( condition , Convert . ToString ( Session [ "USERID" ] ) , Convert . ToString ( Session [ "SHOWNAME" ] ) , Convert . ToString ( Session [ "COMPANYID" ] ) ) ;
var json = JsonConvert . Serialize (
new { Success = true , Message = "查询成功" , totalCount = count , data = dataList . ToList ( ) } ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetFeeDetailList ( string sort , string condition )
{
var dataList = ChinvoiceDAL . GetFeeDetailList ( condition , Convert . ToString ( Session [ "USERID" ] ) , Convert . ToString ( Session [ "SHOWNAME" ] ) , Convert . ToString ( Session [ "COMPANYID" ] ) , sort ) ;
var json = JsonConvert . Serialize (
new { Success = true , Message = "查询成功" , totalCount = dataList . Count , data = dataList . ToList ( ) } ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetAddSum ( string condition )
{
var dataList = ChinvoiceDAL . GetAddSum ( condition , Convert . ToString ( Session [ "USERID" ] ) , Convert . ToString ( Session [ "SHOWNAME" ] ) , Convert . ToString ( Session [ "COMPANYID" ] ) ) ;
var json = JsonConvert . Serialize ( new { Success = true , Message = "查询成功" , totalCount = dataList . Count , data = dataList . ToList ( ) } ) ;
return new ContentResult ( ) { Content = json } ;
}
# endregion
#region save
public ContentResult Save ( string opstatus , string data , string body )
{
var headData = JsonConvert . Deserialize < ChInvoice_HangXin > ( data ) ;
var bodyList = JsonConvert . Deserialize < List < ChInvoiceDetail > > ( body ) ;
if ( opstatus = = "add" )
{
headData . GID = Guid . NewGuid ( ) . ToString ( ) ;
headData . BILLNO = PubSysDAL . GetBillNo ( "0308" ) ;
headData . COMPANYID = Convert . ToString ( Session [ "COMPANYID" ] ) ;
headData . OPERATOR = Convert . ToString ( Session [ "USERID" ] ) ;
headData . OPERATETIME = DateTime . Now ;
headData . CREATEUSER = Convert . ToString ( Session [ "USERID" ] ) ;
headData . CREATETIME = DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) ;
headData . DbOperationType = DbOperationType . DbotIns ;
}
else if ( opstatus = = "edit" )
{
headData . DbOperationType = DbOperationType . DbotUpd ;
headData . ModelUIStatus = "E" ;
}
else
{
headData . DbOperationType = DbOperationType . DbotDel ;
}
//填写未指定但当前可以填写的其他信息
if ( headData . INVOICECUSTNAME = = "" | | headData . CUSTRATENO = = "" )
{
T_ALL_DA T_ALL_DA = new T_ALL_DA ( ) ;
DataSet dsHSCODE = T_ALL_DA . GetAllSQL ( "SELECT Gid,CODENAME as CustCode,SHORTNAME as CustName,CODENAME+'-'+SHORTNAME as CodeAndName,BillRises1,INVADDRTEL,[DESCRIPTION],RmbBillRises,(select top 1 BANKNAME+' '+ACCOUNT FROM info_client_bank WHERE CURRENCY='RMB' AND LINKID=info_client.GID) Rmbbank,Rmbaccount,usdBillRises,usdbank,usdaccount,TaxNo,Addr,Tel from info_client WHERE SHORTNAME='" + headData . CUSTOMERNAME + "'" ) ;
if ( dsHSCODE ! = null )
{
if ( dsHSCODE . Tables [ 0 ] . Rows . Count > 0 )
{
if ( dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "BillRises1" ] . ToString ( ) ! = "" )
headData . INVOICECUSTNAME = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "BillRises1" ] . ToString ( ) ;
else headData . INVOICECUSTNAME = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "DESCRIPTION" ] . ToString ( ) ;
if ( headData . CUSTRATENO = = "" ) headData . CUSTRATENO = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "TaxNo" ] . ToString ( ) ;
if ( headData . CUSTADDRTEL = = "" )
{
if ( dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "INVADDRTEL" ] . ToString ( ) ! = "" )
headData . CUSTADDRTEL = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "INVADDRTEL" ] . ToString ( ) ;
else headData . CUSTADDRTEL = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "Addr" ] . ToString ( ) + " " + dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "Tel" ] . ToString ( ) ;
}
if ( string . IsNullOrEmpty ( headData . CUSTTEL ) )
{
if ( dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "Tel" ] . ToString ( ) ! = "" )
headData . CUSTTEL = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "Tel" ] . ToString ( ) ;
}
if ( string . IsNullOrEmpty ( headData . CUSTADDR ) )
{
if ( dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "Addr" ] . ToString ( ) ! = "" )
headData . CUSTADDR = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "Addr" ] . ToString ( ) ;
}
if ( headData . CUSTBANK = = "" )
{
headData . CUSTBANK = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "Rmbbank" ] . ToString ( ) ;
}
}
}
}
var isPost = true ;
var errorstr = "" ;
if ( headData . INVOICENO ! = "" )
{
var ct = ChinvoiceDAL . GetRdCount ( "GID<>'" + headData . GID + "' AND INVOICENO='" + headData . INVOICENO + "' and COMPANYID='" + Convert . ToString ( Session [ "COMPANYID" ] ) + "'" ) ;
if ( ct ! = 0 )
{
isPost = false ;
errorstr = "发票号重复" ;
}
}
if ( string . IsNullOrEmpty ( headData . INVITERFACE ) )
{
var INVITERFACE = MsSysInvInterFaceSetDAL . GetData ( "INVOICELINE='" + headData . INVOICELINEREF + "'" , "" ) ;
if ( INVITERFACE . INVITERFACE = = "" )
headData . INVITERFACE = INVITERFACE . INVITERFACE ;
else headData . INVITERFACE = "诺诺发票接口" ;
}
if ( ! string . IsNullOrEmpty ( headData . CUSTTEL ) & & ( headData . CUSTTEL . Trim ( ) . Length > 20 ) )
{
isPost = false ;
errorstr = "客户电话长度不允许超过20" ;
}
if ( ! string . IsNullOrEmpty ( headData . CUSTADDR ) & & ( headData . CUSTADDR . Trim ( ) . Length > 80 ) )
{
isPost = false ;
errorstr = "客户电话长度不允许超过80" ;
}
if ( ! string . IsNullOrEmpty ( headData . SALECORPID ) & & ! string . IsNullOrEmpty ( headData . ACCOUNT ) )
{
var banklist = MsBaseInfoDAL . GetAllBANKList ( "LINKID='" + headData . SALECORPID + "'" ) ;
if ( banklist . Find ( x = > ( x . CURRENCY = = headData . RECVCURR | | x . CURRENCY = = "" ) & & x . BANKACCOUNT = = headData . ACCOUNT ) = = null )
{
isPost = false ;
errorstr = "银行及账号于收款单位和币别不一致,请检查" ;
}
}
if ( isPost )
{
if ( headData . INVOICEMAKETIME = = "" ) headData . INVOICEMAKETIME = null ;
if ( headData . ETD = = "" ) headData . ETD = null ;
headData . CUSTRATENO = headData . CUSTRATENO . Trim ( ) ;
headData . CUSTBANK = headData . CUSTBANK . Trim ( ) ;
headData . REMARK = headData . REMARK . Trim ( ) ;
var BILLNO = headData . BILLNO ;
var modb = new ModelObjectDB ( ) ;
DBResult result = ChinvoiceDAL . SaveInvDetail ( headData . GID , bodyList ) ;
if ( result . Success = = true )
{
result = modb . Save ( headData ) ;
//ChinvoiceDAL.UpdateInvNoUse(headData.INVOICENO, Convert.ToString(Session["USERID"]),headData.BILLNO);
//if (headData.EXCHANGERATE != 0)
//{
// ChinvoiceDAL.updateFeeTax(headData.BILLNO, headData.EXCHANGERATE);
//}
} ;
var jsonRespose = new JsonResponse
{
Success = result . Success ,
Message = result . Message ,
Data = ChinvoiceDAL . GetData ( " BILLNO='" + BILLNO + "'" , Convert . ToString ( Session [ "USERID" ] ) , CookieConfig . GetCookie_UserCode ( Request ) , Convert . ToString ( Session [ "COMPANYID" ] ) )
} ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
else
{
var jsonRespose = new JsonResponse { Success = false , Message = errorstr + "不允许保存!" } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
}
public ContentResult AddDetail ( string bill , string data , string curr , bool islist , string GID , string invoiceno )
{
//首先判断是否有 modInvoiceImport发票引入费用 权限
//var ar = BasicDataRefDAL.GetAR("modInvoiceImport", Session["USERID"].ToString());
//if
var bodyList = JsonConvert . Deserialize < List < BillChfeeDetail > > ( data ) ;
var headdata = ChinvoiceDAL . GetData ( " BILLNO='" + bill + "'" , Convert . ToString ( Session [ "USERID" ] ) , CookieConfig . GetCookie_UserCode ( Request ) , Convert . ToString ( Session [ "COMPANYID" ] ) ) ;
var modb = new ModelObjectDB ( ) ;
DBResult result = ChinvoiceDAL . AddDetail ( bill , bodyList , curr , Convert . ToString ( Session [ "COMPANYID" ] ) , islist , GID , headdata ) ;
if ( result . Success ) { ChinvoiceDAL . p_update_Amount ( bill , GID ) ; }
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
public ContentResult AddBill ( string bill , string feesql , string storeCurrExrate , bool islist , string GID , bool custgroup = false )
{
//首先判断是否有 modInvoiceImport发票引入费用 权限
var headData = JsonConvert . Deserialize < ChInvoice_HangXin > ( bill ) ;
var exrateList = JsonConvert . Deserialize < List < ChFeeExrate > > ( storeCurrExrate ) ;
if ( ( exrateList = = null ) | | ( exrateList . Count = = 0 ) )
{
exrateList = ChinvoiceDAL . GetCurrExrateData ( headData . CUSTOMERNAME , headData . CURRENCY , feesql , custgroup ) ;
if ( exrateList . Count = = 0 )
{
var modb = new ModelObjectDB ( ) ;
DBResult result = ChinvoiceDAL . AddBill ( headData , feesql , exrateList , Convert . ToString ( Session [ "COMPANYID" ] ) , islist , GID , Convert . ToString ( Session [ "USERID" ] ) , custgroup ) ;
if ( result . Success ) { ChinvoiceDAL . p_update_Amount ( headData . BILLNO , GID ) ; }
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
else
{
var jsonRespose = new JsonResponse { Success = true , Message = "查询成功" , Data = exrateList . ToList ( ) } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
}
else
{
var modb = new ModelObjectDB ( ) ;
DBResult result = ChinvoiceDAL . AddBill ( headData , feesql , exrateList , Convert . ToString ( Session [ "COMPANYID" ] ) , islist , GID , Convert . ToString ( Session [ "USERID" ] ) ) ;
if ( result . Success ) { ChinvoiceDAL . p_update_Amount ( headData . BILLNO , GID ) ; }
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
}
public ContentResult DelBill ( string data , string billno , string GID )
{
//首先判断是否有 modInvoiceImport发票引入费用 权限
var bodyList = JsonConvert . Deserialize < List < Chfee_do_detail > > ( data ) ;
DBResult result = ChinvoiceDAL . DelFeeDo ( bodyList , GID ) ;
if ( result . Success ) { ChinvoiceDAL . p_update_Amount ( billno , GID ) ; }
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
/ /
public ContentResult Delete ( string data )
{
var headData = JsonConvert . Deserialize < ChInvoice_HangXin > ( data ) ;
headData = ChinvoiceDAL . GetData ( " cm.BILLNO='" + headData . BILLNO + "'" ) ;
DBResult result ;
//首先判断是否有 modInvLock 发票开出锁定
//20191205 防止已经获得【流水号】的发票业务被删除
if ( ! string . IsNullOrWhiteSpace ( headData . INVOICESERIALNUM ) & & headData . INVAMOUNT > 0 )
{
var jsonRespose1 = new JsonResponse { Success = false , Message = "已经获得流水号且仍包含费用的发票业务不能删除" } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose1 ) } ;
}
if ( ! string . IsNullOrWhiteSpace ( headData . INVOICESERIALNUM ) & & ! string . IsNullOrWhiteSpace ( headData . INVOICENO ) )
{
var jsonRespose1 = new JsonResponse { Success = false , Message = "已经实际开出的发票业务不能删除" } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose1 ) } ;
}
if ( headData . EINVOICESTATEREF = = "开票中" )
{
var jsonRespose1 = new JsonResponse { Success = false , Message = "当前发票状态不允许删除" } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose1 ) } ;
}
result = SetInvoiceFee ( headData ) ;
if ( result . Success = = true )
{
var modb = new ModelObjectDB ( ) ;
modb . Delete ( headData ) ;
ChinvoiceDAL . UpdateInvNoCancelUse ( headData . INVOICENO ) ;
T_ALL_DA T_ALL_DA = new EntityDA . T_ALL_DA ( ) ;
var blUpSQL = " insert into sys_log(GID,NAME,LOGTYPE,LOGTIME,LOGCONTENT,CREATEUSER) values(NEWID(),'" + headData . BILLNO + "','删除发票','" + DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) + "','" + headData . INVOICENO + '(' + headData . CUSTOMERNAME + ')' + "','" + Convert . ToString ( Session [ "USERID" ] ) + "')" ;
bool bl = T_ALL_DA . GetExecuteSqlCommand ( blUpSQL ) ;
}
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
/// <summary>
/// 看看USERID是否能操作这条数据的ModName功能
/// </summary>
/// <param name="head"></param>
/// <param name="ModName"></param>
/// <param name="USERID"></param>
/// <returns></returns>
private bool CanOperate ( ChInvoice_HangXin head , string ModName )
{
var rangestr = BasicDataRefDAL . CanOperateStr_INVOICE ( ModName , Session [ "USERID" ] . ToString ( ) ) ;
var _L = ChinvoiceDAL . GetData ( "GID='" + head . GID + "' and " + rangestr ) ;
if ( _L . GID = = head . GID )
{
return true ;
}
else return false ;
}
/// <summary>
/// 发票作废
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public ContentResult DeleteUp ( string data )
{
//首先判断是否有 modInvLock 发票开出锁定
var headData = JsonConvert . Deserialize < ChInvoice_HangXin > ( data ) ;
//if (!CanOperate(headData, "modInvLock")) {
// var jsonRespose = new JsonResponse { Success =false, Message = "您还不具备针对这条业务的‘发票开出锁定’权限" };
// return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
//}
return DeleteUp ( headData ) ;
}
private ContentResult DeleteUp ( ChInvoice_HangXin headData )
{
//首先判断是否有 modInvLock 发票开出锁定
//if (!CanOperate(headData, "modInvLock"))
//{
// var jsonRespose1 = new JsonResponse { Success = false, Message = "您还不具备针对这条业务的‘发票开出锁定’权限" };
// return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose1) };
//}
DBResult result ;
result = SetInvoiceFee ( headData ) ;
if ( result . Success = = true )
{
ChinvoiceDAL . UpdateDelete ( headData . BILLNO , Convert . ToString ( Session [ "USERID" ] ) ) ;
//ChinvoiceDAL.UpdateInvNoDelete(headData.INVOICENO, Convert.ToString(Session["USERID"]));
}
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
/// <summary>
/// 发票作废取消
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public ContentResult CancelDeleteUp ( string data )
{
var headData = JsonConvert . Deserialize < ChInvoice_HangXin > ( data ) ;
//首先判断是否有 modInvLock 发票开出锁定
//if (!CanOperate(headData, "modInvLock"))
//{
// var jsonRespose1 = new JsonResponse { Success = false, Message = "您还不具备针对这条业务的‘发票开出锁定’权限" };
// return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose1) };
//}
DBResult result ;
result = ChinvoiceDAL . UpdateDelete ( headData . BILLNO , Convert . ToString ( Session [ "USERID" ] ) , false ) ;
if ( result . Success = = true )
{
ChinvoiceDAL . UpdateInvNoDelete ( headData . INVOICENO , Convert . ToString ( Session [ "USERID" ] ) , false ) ;
}
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
# endregion
public ContentResult GetInvoiceNo ( string condition )
{
var dataList = ChinvoiceDAL . GetInvoiceNo ( Convert . ToString ( Session [ "COMPANYID" ] ) , Convert . ToString ( Session [ "USERID" ] ) ) ;
var json = JsonConvert . Serialize ( new { Success = true , Message = "查询成功" , totalCount = dataList . Count , data = dataList . ToList ( ) } ) ;
return new ContentResult ( ) { Content = json } ;
}
#region 发票申请添加
public ContentResult AddAppDetail ( string bill , string data , string invoiceno , string GID )
{
var bodyList = JsonConvert . Deserialize < List < ChInvoiceapplication > > ( data ) ;
var StrGid = "" ;
if ( bodyList ! = null )
{
foreach ( var enumValue in bodyList )
{
if ( StrGid = = "" )
StrGid = "'" + enumValue . GID + "'" ;
else
StrGid = StrGid + ",'" + enumValue . GID + "'" ;
}
}
if ( StrGid ! = "" )
{
StrGid = "(" + StrGid + ")" ;
var dataList = ChinvoiceapplicationDAL . GetDataInvList ( " BILLSTATUS=0 and GID IN " + StrGid , Convert . ToString ( Session [ "USERID" ] ) , CookieConfig . GetCookie_UserCode ( Request ) , Convert . ToString ( Session [ "COMPANYID" ] ) ) ;
if ( dataList ! = null & & dataList . Count ! = 0 )
{
var modb = new ModelObjectDB ( ) ;
DBResult result = ChinvoiceDAL . AddAppDetail ( bill , dataList , invoiceno , Convert . ToString ( Session [ "COMPANYID" ] ) , GID ) ;
if ( result . Success ) { ChinvoiceDAL . p_update_Amount ( bill , GID ) ; }
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
else
{
var jsonRespose = new JsonResponse { Success = false , Message = "发票申请已生成发票,请刷新!" } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
}
else
{
var jsonRespose = new JsonResponse { Success = false , Message = "无需要添加的发票申请!" } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
}
public ContentResult DelAppBill ( string data , string billno , string GID )
{
var bodyList = JsonConvert . Deserialize < List < ChInvoiceapplication > > ( data ) ;
DBResult result = ChinvoiceDAL . DelAppList ( bodyList , billno ) ;
if ( result . Success ) { ChinvoiceDAL . p_update_Amount ( billno , GID ) ; }
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
public ContentResult DelInvDetail ( string billno , string body , string GID )
{
var bodyList = JsonConvert . Deserialize < List < ChInvoiceDetail > > ( body ) ;
DBResult result = ChinvoiceDAL . DelInvDetail ( bodyList ) ;
if ( result . Success ) { ChinvoiceDAL . p_update_Amount ( billno , GID ) ; }
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
# endregion
#region 锁定和撤销锁定
public ContentResult Lock ( string bill )
{
//首先判断是否有 modInvLock 发票开出锁定
DBResult result = ChinvoiceDAL . Lock ( bill ) ;
var json = JsonConvert . Serialize ( result ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult UnLock ( string bill )
{
//首先判断是否有 modInvLock 发票开出锁定
DBResult result = ChinvoiceDAL . UnLock ( bill , Convert . ToString ( Session [ "USERID" ] ) ) ;
var json = JsonConvert . Serialize ( result ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult LockList ( string bills )
{
//首先判断是否有 modInvLock 发票开出锁定
DBResult result = ChinvoiceDAL . LockList ( bills ) ;
var json = JsonConvert . Serialize ( result ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult UnLockList ( string bills )
{
//首先判断是否有 modInvLock 发票开出锁定
DBResult result = ChinvoiceDAL . UnLockList ( bills , Convert . ToString ( Session [ "USERID" ] ) ) ;
var json = JsonConvert . Serialize ( result ) ;
return new ContentResult ( ) { Content = json } ;
}
# endregion
#region 保存指定发票业务list的PDF文件 将其拼合成一个dpf后返回url
public ContentResult GetONEPDF ( string BILLNOS )
{
JsonResponse result = new JsonResponse ( ) ;
try
{
var BILLList = new List < ChInvoice_HangXin > ( ) ;
var billnoList = BasicDataRefDAL . getStrListfromCommaStr ( BILLNOS , ',' ) ;
var pdflist = new List < string > ( ) ;
BasicDataRefDAL . ClearPath ( BasicDataRefDAL . getPath ( "INVOICEPDF" ) ) ;
foreach ( var billno in billnoList )
{
var invoice = ChinvoiceDAL . GetData ( $" BILLNO ='{billno}' " ) ;
if ( ! string . IsNullOrWhiteSpace ( invoice . INVOICEPDFURL ) )
{
var filename = BasicDataRefDAL . HttpDownloadFile ( invoice . INVOICEPDFURL , "INVOICEPDF" , invoice . INVOICENO + ".pdf" ) ;
pdflist . Add ( filename ) ;
//if (pdflist.Count == 1) {
// pdflist.Add(filename);
//}
}
}
if ( pdflist . Count = = 0 )
{
result . Success = false ;
result . Message = "没有可以打印的发票文件" ;
return result . getContentReult ( ) ;
}
else
{
//pdflist.OrderBy(o => o);
pdflist . Sort ( delegate ( string p1 , string p2 )
{
return p1 . CompareTo ( p2 ) ;
} ) ;
}
var pdfarray = pdflist . ToArray ( ) ;
SavePDF ( pdfarray ) ;
result . Success = true ;
result . Message = "" ;
result . Data = "../../INVOICEPDF/" + Session [ "USERID" ] . ToString ( ) + ".pdf" ;
}
catch ( Exception e )
{
result . Success = false ;
result . Message = e . Message ;
}
return result . getContentReult ( ) ;
}
private void SavePDF ( string [ ] pdfarray )
{
string outputFileName = BasicDataRefDAL . getPath ( "INVOICEPDF" ) + Session [ "USERID" ] . ToString ( ) + ".pdf" ;
//PdfDocumentBase doc = PdfDocument.MergeFiles(pdfarray);
//doc.Pages.Insert(0);
//doc.Pages.RemoveAt(0);
//doc.Save(outputFileName, FileFormat.PDF);
iTextSharp . text . Document document = new iTextSharp . text . Document ( new PdfReader ( pdfarray [ 0 ] ) . GetPageSize ( 1 ) ) ;
PdfCopy copy = new PdfCopy ( document , new FileStream ( outputFileName , FileMode . Create ) ) ;
document . Open ( ) ;
for ( int i = 0 ; i < pdfarray . Length ; i + + )
{
PdfReader reader = new PdfReader ( pdfarray [ i ] ) ;
int n = reader . NumberOfPages ;
for ( int j = 1 ; j < = n ; j + + )
{
document . NewPage ( ) ;
PdfImportedPage page = copy . GetImportedPage ( reader , j ) ;
copy . AddPage ( page ) ;
}
}
document . Close ( ) ;
}
//private void SavePDF_Aspose(string[] pdfarray)
//{
// string outputFileName = BasicDataRefDAL.getPath("INVOICEPDF") + Session["USERID"].ToString() + ".pdf";
// PdfDocumentBase doc = PdfDocument.MergeFiles(pdfarray);
// doc.Pages.Insert(0);
// doc.Pages.RemoveAt(0);
// doc.Save(outputFileName, FileFormat.PDF);
//}
# endregion
public ContentResult ExpInv ( string bills )
{
var bodyList = JsonConvert . Deserialize < List < ChInvoice_HangXin > > ( bills ) ;
var path = Server . MapPath ( "../../EDIFiles/ExportInv" ) ;
if ( ! Directory . Exists ( path ) )
{
Directory . CreateDirectory ( path ) ;
}
/ /
var result = new DBResult ( ) ;
var filename = "" ;
filename = ChinvoiceDAL . CreateInvList ( bodyList , path ) ;
if ( filename ! = "" )
{
//result.Data = "../../EDIFiles/ExportInv/" + filename;
result . Data = filename ;
filename = Path . GetFileName ( filename ) ;
result . Success = true ;
result . Message = filename ;
}
else
{
result . Success = false ;
result . Message = "无当前匹配的导出文件!" ;
}
/ /
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message , Data = result . Data } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
public ContentResult ExpDZInv ( string bills )
{
var bodyList = JsonConvert . Deserialize < List < ChInvoice_HangXin > > ( bills ) ;
var path = Server . MapPath ( "../../EDIFiles/ExportInv" ) ;
if ( ! Directory . Exists ( path ) )
{
Directory . CreateDirectory ( path ) ;
}
/ /
var result = new DBResult ( ) ;
var filename = "" ;
filename = ChinvoiceDAL . CreateDZInvList ( bodyList , path , Convert . ToString ( Session [ "COMPANYID" ] ) ) ;
if ( filename ! = "" )
{
//result.Data = "../../EDIFiles/ExportInv/" + filename;
result . Data = filename ;
filename = Path . GetFileName ( filename ) ;
result . Success = true ;
result . Message = filename ;
}
else
{
result . Success = false ;
result . Message = "无当前匹配的导出文件!" ;
}
/ /
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message , Data = result . Data } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
#region 航信接口调用
public ContentResult test ( string str )
{
var result = new KPResponse ( ) ;
var _s = str . Replace ( "\\\"" , "\"" ) ;
result = DSWeb . TruckMng . Helper . JsonConvert . Deserialize < KPResponse > ( _s ) ;
var jsonRespose = new JsonResponse
{
Success = true ,
Message = "" ,
Data = result
} ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
public ActionResult test2 ( string str )
{
return View ( str ) ;
}
/// <summary>
/// 接收诺诺平台跳回的url信息,
/// 20191122后已无作用
/// </summary>
/// <param name="code"></param>
/// <param name="taxnum"></param>
/// <returns></returns>
//public ActionResult setCustCode(string code, string taxnum)
//{
// BasicDataRefDAL.SaveLog("code="+ code+ ";taxnum="+ taxnum,"诺诺平台","认证窗口回调","接收认证数据");
// var hx = HangXinRequestHelper.getHelper(taxnum);
// if (hx.code != code || hx.needStart )
// {
// hx.code = code;
// hx.setISVToken();
// }
// return View();
//}
private JsonResponse checkinfo ( string BILLNO , string redirecturl )
{
var result = new DBResult ( ) ;
var head = new ChInvoice_HangXin ( ) ;
//var detail = new List<chinvoice_de>
var jsonRespose = new JsonResponse { Success = true , Message = result . Message , Data = result . Data } ;
//首先判断数据完整性与合法性
head = ChinvoiceDAL . GetData ( "cm.BILLNO='" + BILLNO + "'" ) ;
if ( string . IsNullOrEmpty ( head . INVOICELINE ) )
{
jsonRespose . Success = false ;
jsonRespose . Message = "发票种类不能为空!" ;
}
if ( head . BILLNO ! = "" )
{
if ( string . IsNullOrEmpty ( head . INVITERFACE ) )
{
var INVITERFACE = MsSysInvInterFaceSetDAL . GetData ( "INVOICELINE='" + head . INVOICELINEREF + "'" , "" ) ;
if ( INVITERFACE . INVITERFACE ! = "" )
head . INVITERFACE = INVITERFACE . INVITERFACE ;
else head . INVITERFACE = "诺诺发票接口" ;
head . DbOperationType = DbOperationType . DbotUpd ;
head . ModelUIStatus = "E" ;
var modb = new ModelObjectDB ( ) ;
result = modb . Save ( head ) ;
}
//head = list[0];
jsonRespose . Data = head ;
}
else
{
jsonRespose . Success = false ;
jsonRespose . Message = "没有找到可以开票的发票信息,可能是权限不足或登录信息丢失。" ;
}
var checkcan = checkCanPost ( head ) ;
if ( checkcan . Success = = false )
{
jsonRespose . Success = false ;
jsonRespose . Message = checkcan . Message ;
}
else
{
if ( head . INVITERFACE = = "诺诺发票接口" | | head . INVITERFACE = = "" )
{
//如果该税号的token需要 返回认证窗口
var hx = HangXinRequestHelper . getHelper ( head . TAXCODE ) ;
if ( ! hx . CanUse )
{
jsonRespose . Success = false ;
jsonRespose . Message = hx . ERRORMSG ;
return jsonRespose ;
}
HangXinRequestHelper . redirectUri = getRedirecturl ( redirecturl ) ;
if ( hx . needStart )
{
BasicDataRefDAL . SaveLog ( "checkinfo; BILLNO=" + BILLNO , "" , "诺诺平台" , "返回认证窗口" ) ;
jsonRespose = TokenPage ( ) ;
}
}
else
{
jsonRespose . Success = true ;
jsonRespose . Message = "" ;
return jsonRespose ;
}
}
return jsonRespose ;
}
private JsonResponse TokenPage ( )
{
var jsonRespose = new JsonResponse { Success = true , Message = "" , Data = "" } ;
jsonRespose . Success = false ;
jsonRespose . Message = "需要认证诺诺用户名和密码" ;
var newwindowurl = "https://open.jss.com.cn/authorization.html?client_id=" + HangXinRequestHelper . appSecret + "&response_type=code&redirect_uri=" + HangXinRequestHelper . redirectUri + "&appKey=" + HangXinRequestHelper . appKey + "" ;
jsonRespose . Data = newwindowurl ;
return jsonRespose ;
}
/// <summary>
/// 航信接口 开票
/// </summary>
/// <param name="bill"></param>
/// <returns></returns>
public ContentResult NNMakeInv ( string bill , string redirecturl )
{
//首先判断是否有 modInvLock 发票开出锁定
var result = new DBResult ( ) ;
//var detail = new List<chinvoice_de>
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message , Data = result . Data } ;
//首先判断数据完整性与合法性
var checkresult = checkinfo ( bill , redirecturl ) ;
if ( ! checkresult . Success )
{
return new ContentResult ( ) { Content = JsonConvert . Serialize ( checkresult ) } ;
}
else
{
var head = ( ChInvoice_HangXin ) checkresult . Data ;
decimal invamount = 0 ;
var invitems = ChinvoiceapplicationDAL . GetDetailList ( "PID='" + head . GID + "'" , "" ) ;
foreach ( var invitem in invitems )
{
invamount = invamount + invitem . AMOUNT + invitem . TAX ;
}
if ( invamount ! = head . INVAMOUNT )
{
var jsonRespose2 = new JsonResponse { Success = false , Message = "开票明细与开票金额不一致,请检查!" } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose2 ) } ;
}
ChInvoice_HangXin returndate = null ;
if ( head . INVITERFACE = = "诺诺发票接口" | | head . INVITERFACE = = "" )
{
var hx = HangXinRequestHelper . getHelper ( head . TAXCODE ) ;
if ( ! hx . CanUse )
{
jsonRespose . Success = false ;
jsonRespose . Message = hx . ERRORMSG ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
//20191107 如果该发票存在流水号 则首先去诺诺平台进行一次读取
//如开票信息形如
/*"{\"code\":\"E0000\",\"describe\":\"查询发票信息成功\",\"result\":[{\"orderNo\":\"IN2019110700005\",\"taxExcludedAmount\":500.00,\"c_invoiceid\":\"19110716260203390480\",\"invoiceImageUrl\":\"\",\"buyerName\":\"青岛世悠联国际物流有限公司\",\"invoiceCode\":\"\",\"invoiceNum\":\"\",\"resultMsg\":\"[][2019-11-07 16:30:02] 单据号:19110716260203390480,开具结果:0,开具失败原因:开票异常:\",\"checkCode\":\"\",\"invoiceSerialNum\":\"19110716260203390480\",\"statusMsg\":\"开票失败\",\"buyerTaxNum\":\"91370202MA3CGDCU83\",\"invoiceFileUrl\":\"\",\"invoiceLine\":\"电子增值税普通发票\",\"taxIncludedAmount\":500.00,\"status\":3}]}"*/
//则可能代表失败的原因是 ukey验证 的部分,也许重启税控软件和诺诺客户端可以解决问题。
if ( ! string . IsNullOrEmpty ( head . INVOICESERIALNUM ) )
{ //如果该发票流水号不为空
result = hx . ReadInvoice ( head ) ;
}
else
{
HangXinRequestHelper . redirectUri = getRedirecturl ( redirecturl ) ;
var detailList = ChinvoiceDAL . GetDetailList ( "PID='" + head . GID + "'" ) ;
//var CodeGoodInvList = MsCodeGoodInvDAL.GetDataList(" gid in (SELECT GOODSNAME FROM ch_fee_invoicedetail where PID = '"+ head.GID + "')");
if ( ! string . IsNullOrWhiteSpace ( hx . accessToken ) )
{
result = hx . PostInvoice ( head , detailList ) ;
}
if ( result . Message = = "需要重新认证" | | string . IsNullOrWhiteSpace ( hx . accessToken ) )
{
BasicDataRefDAL . SaveLog ( "PostInvoice 反回‘需要重新认证’" , "" , "诺诺平台" , "返回认证窗口" ) ;
var _r = TokenPage ( ) ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( _r ) } ;
}
//returndate = ChinvoiceDAL.GetData(" BILLNO='" + head.BILLNO + "'");
}
}
else if ( head . INVITERFACE = = "瑞宏发票接口" )
{
RuihongHelper ruihongHelper = new RuihongHelper ( ) ;
string msg = null ;
if ( ! string . IsNullOrEmpty ( head . INVOICESERIALNUM ) )
{ //如果该发票流水号不为空
result . Success = ruihongHelper . QueryInvoiceRecord ( head . GID , head . INVOICESERIALNUM , out msg ) ;
result . Message = msg ;
}
else
{
if ( head . PTORRED = = "2" )
{
result . Success = ruihongHelper . RedInvoiceRecord ( head . GID , out msg ) ;
result . Message = msg ;
}
else
{
result . Success = ruihongHelper . PostInvoiceRecord ( head . GID , out msg ) ;
result . Message = msg ;
}
}
}
returndate = ChinvoiceDAL . GetData ( " BILLNO='" + head . BILLNO + "'" ) ;
if ( returndate . EINVOICESTATE = = "2" & & returndate . BILLSTATUS = = 0 )
{
//20200106 添加 如sys_param_set.PARAMNAME=INVOICEAUTOLOCK 没有值或值为false 则不执行锁定
var needautolock = MsSysParamSetDAL . GetSysParam ( "INVOICEAUTOLOCK" ) . isnullortrue ( ) ;
if ( needautolock )
{
ChinvoiceDAL . Lock ( returndate . BILLNO ) ;
}
returndate = ChinvoiceDAL . GetData ( " BILLNO='" + head . BILLNO + "'" ) ;
}
jsonRespose . Success = result . Success ;
jsonRespose . Message = result . Message ;
jsonRespose . Data = returndate ;
}
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
/// <summary>
/// 读取诺诺平台上的发票信息 通过发票流水号 ch_fee_invoice.invoiceser
/// </summary>
/// <param name="taxnum"></param>
/// <param name="BILLNO"></param>
/// <returns></returns>
public ContentResult NNReadInv ( string BILLNO , string redirecturl )
{
//如果已有pdf地址 则直接返回
var headdata = ChinvoiceDAL . GetData ( " cm.BILLNO='" + BILLNO + "'" ) ;
JsonResponse result = new JsonResponse ( ) ;
if ( ! string . IsNullOrWhiteSpace ( headdata . INVOICEPDFURL ) )
{
result . Success = true ;
result . Data = headdata ;
}
else
{
if ( headdata . INVITERFACE = = "诺诺发票接口" | | headdata . INVITERFACE = = "" )
{
result = Do_NNReadInv ( BILLNO , redirecturl ) ;
}
else if ( headdata . INVITERFACE = = "瑞宏发票接口" )
{
RuihongHelper ruihongHelper = new RuihongHelper ( ) ;
string msg = null ;
var succ = ruihongHelper . QueryInvoiceRecord ( headdata . GID , headdata . INVOICESERIALNUM , out msg ) ;
result . Success = succ ;
result . Message = msg ;
result . Data = ChinvoiceDAL . GetData ( " BILLNO='" + headdata . BILLNO + "'" ) ;
}
}
return result . getContentReult ( ) ;
}
public ContentResult NNReadInv_P2 ( string BILLNO , string redirecturl )
{
var headdata = ChinvoiceDAL . GetData ( " cm.BILLNO='" + BILLNO + "'" ) ;
JsonResponse result = new JsonResponse ( ) ;
if ( ! string . IsNullOrWhiteSpace ( headdata . INVOICEPDFURL ) )
{
result . Success = true ;
result . Data = headdata ;
}
else
{
if ( headdata . INVITERFACE = = "诺诺发票接口" | | headdata . INVITERFACE = = "" )
{
result = Do_NNReadInv ( BILLNO , redirecturl ) ;
if ( result . Success )
{
//将相应信息写回P2
//1.正票/冲红 根据BSNO将P2的发票号和发票代码写回
//2.作废 根据BSNO将P2的 B_CANCEL设为1
var invoice = ( ChInvoice_HangXin ) result . Data ;
var sqlstr = $" update M_INVOICE set INVOICE_NO='{invoice.INVOICENO}',INVOICE_CODE='{invoice.INVOICECODE}',REMARK='{invoice.REMARK}' where INVOICE_ID='{invoice.BSNO}'" ;
BasicDataRefDAL . ExecSql_DB ( sqlstr , "P2DB" ) ;
}
}
else if ( headdata . INVITERFACE = = "瑞宏发票接口" )
{
RuihongHelper ruihongHelper = new RuihongHelper ( ) ;
string msg = null ;
var succ = ruihongHelper . QueryInvoiceRecord ( headdata . GID , headdata . INVOICESERIALNUM , out msg ) ;
var invoice = ChinvoiceDAL . GetData ( " BILLNO='" + headdata . BILLNO + "'" ) ;
result . Success = succ ;
result . Message = msg ;
result . Data = invoice ;
var sqlstr = $" update M_INVOICE set INVOICE_NO='{invoice.INVOICENO}',INVOICE_CODE='{invoice.INVOICECODE}',REMARK='{invoice.REMARK}' where INVOICE_ID='{invoice.BSNO}'" ;
BasicDataRefDAL . ExecSql_DB ( sqlstr , "P2DB" ) ;
}
}
return result . getContentReult ( ) ;
}
private JsonResponse Do_NNReadInv ( string BILLNO , string redirecturl )
{
//var hx = HangXinRequestHelper.getHelper(taxnum);
//var result = new DBResult();
//var detail = new List<chinvoice_de>
var jsonRespose = new JsonResponse { Success = false , Message = "" , Data = "" } ;
//首先判断数据完整性与合法性
var checkresult = checkCanRead ( BILLNO , redirecturl ) ;
if ( ! checkresult . Success ) return checkresult ;
var head = ( ChInvoice_HangXin ) checkresult . Data ;
var hx = HangXinRequestHelper . getHelper ( head . TAXCODE ) ;
if ( ! hx . CanUse )
{
jsonRespose . Success = false ;
jsonRespose . Message = hx . ERRORMSG ;
return jsonRespose ;
}
if ( hx . accessToken = = "" )
{
BasicDataRefDAL . SaveLog ( "NNReadInv;税号" + head . TAXCODE + "的 accessToken为空" , "" , "诺诺平台" , "返回认证窗口" ) ;
var _r = TokenPage ( ) ;
return _r ;
}
var result = hx . ReadInvoice ( head ) ;
if ( result . Message = = "需要重新认证" )
{
//HangXinRequestHelper.clear(hx.accessToken);
BasicDataRefDAL . SaveLog ( "ReadInvoice 反回‘需要重新认证’" , "" , "诺诺平台" , "返回认证窗口" ) ;
var _r = TokenPage ( ) ;
return _r ;
}
var returndate = ChinvoiceDAL . GetData ( " BILLNO='" + head . BILLNO + "'" ) ;
if ( head . PTORRED = = "2" )
{
ChinvoiceDAL . SetRed ( head ) ;
//将原票内的申请和费用恢复原状
var BlueInvoice = ChinvoiceDAL . GetData ( " cm.INVOICECODE='" + head . REDCODE + "' and cm.INVOICENO='" + head . REDNUM + "'" ) ;
result = SetInvoiceFee ( BlueInvoice ) ;
}
//如果状态为开出成功 则执行锁定
if ( returndate . EINVOICESTATE = = "2" & & returndate . BILLSTATUS = = 0 )
{
//ChinvoiceDAL.Lock(returndate.BILLNO);
//20200106 添加 如sys_param_set.PARAMNAME=INVOICEAUTOLOCK 没有值或值为false 则不执行锁定
var needautolock = MsSysParamSetDAL . GetSysParam ( "INVOICEAUTOLOCK" ) . isnullortrue ( ) ;
if ( needautolock )
{
ChinvoiceDAL . Lock ( returndate . BILLNO ) ;
}
returndate = ChinvoiceDAL . GetData ( " BILLNO='" + head . BILLNO + "'" ) ;
}
result . Data = returndate ;
jsonRespose = new JsonResponse ( result ) ;
return jsonRespose ;
}
public static string getRedirecturl ( string redirecturl )
{
return redirecturl ;
}
/// <summary>
/// 将发票业务内的申请或者费用恢复原状
/// </summary>
/// <param name="BlueInvoice"></param>
/// <returns></returns>
public DBResult SetInvoiceFee ( ChInvoice_HangXin BlueInvoice )
{
var result = new DBResult ( ) ;
if ( BlueInvoice . INVOICETYPE = = 2 )
{
//申请开票
var dataList = ChinvoiceapplicationDAL . GetDataListAll ( "INVBILLNO='" + BlueInvoice . BILLNO + "'" , Convert . ToString ( Session [ "USERID" ] ) , CookieConfig . GetCookie_UserCode ( Request ) , Convert . ToString ( Session [ "COMPANYID" ] ) ) ;
result = ChinvoiceDAL . DelAppList ( dataList , BlueInvoice . BILLNO ) ;
}
else
{
var dataList = ChinvoiceDAL . GetBodyList ( "BILLNO='" + BlueInvoice . BILLNO + "'" ) ;
result = ChinvoiceDAL . DelFeeDo ( dataList , BlueInvoice . GID ) ;
}
return result ;
}
/// <summary>
/// 发票作废
/// </summary>
/// <param name="BILLNO"></param>
/// <param name="redirecturl"></param>
/// <returns></returns>
public ContentResult NNVoidInv ( string BILLNO , string redirecturl )
{
//首先判断是否有 modInvLock 发票开出锁定
var result = Do_NNVoidInv ( BILLNO , redirecturl ) ;
return result . getContentReult ( ) ;
}
public ContentResult NNVoidInv_P2 ( string BILLNO , string redirecturl )
{
//首先判断是否有 modInvLock 发票开出锁定
var result = Do_NNVoidInv ( BILLNO , redirecturl ) ;
if ( result . Success )
{
//将相应信息写回P2
//1.正票/冲红 根据BSNO将P2的发票号和发票代码写回
//2.作废 根据BSNO将P2的 B_CANCEL设为1
var invoice = ( ChInvoice_HangXin ) result . Data ;
var sqlstr = $" update M_INVOICE set B_CANCEL='1' where INVOICE_ID='{invoice.BSNO}'" ;
BasicDataRefDAL . ExecSql_DB ( sqlstr , "P2DB" ) ;
}
return result . getContentReult ( ) ;
}
public JsonResponse Do_NNVoidInv ( string BILLNO , string redirecturl )
{
var jsonRespose = new JsonResponse { Success = false , Message = "" , Data = "" } ;
//首先判断数据完整性与合法性 以及如果缺少认证信息则返回重新进行认证
var checkresult = checkinfo ( BILLNO , redirecturl ) ;
if ( ! checkresult . Success ) return checkresult ;
var head = ( ChInvoice_HangXin ) checkresult . Data ;
if ( string . IsNullOrEmpty ( head . INVOICESERIALNUM ) )
{
jsonRespose . Success = false ;
jsonRespose . Message = "没有进行平台开票的发票无法进行作废操作。" ;
return jsonRespose ;
}
if ( head . PTORRED = = "2" | | head . SETRED = = "true" )
{
jsonRespose . Success = false ;
jsonRespose . Message = "冲红或被冲红的发票不能作废" ;
return jsonRespose ;
}
if ( head . ISDELETE = = "true" )
{
jsonRespose . Success = false ;
jsonRespose . Message = "已作废的发票不能再次作废" ;
return jsonRespose ;
}
if ( head . ISEInvoice )
{
jsonRespose . Success = false ;
jsonRespose . Message = "电子发票不能作废,只能冲红" ;
return jsonRespose ;
}
var hx = HangXinRequestHelper . getHelper ( head . TAXCODE ) ;
if ( ! hx . CanUse )
{
jsonRespose . Success = false ;
jsonRespose . Message = hx . ERRORMSG ;
return jsonRespose ;
}
var result = hx . VoidInvoice ( head ) ;
var _result = new ContentResult ( ) ;
//发送作废成功,则实际进行作废操作
if ( result . Success )
{
_result = DeleteUp ( head ) ;
}
var returndate = ChinvoiceDAL . GetData ( " cm.BILLNO='" + BILLNO + "'" ) ;
result . Data = returndate ;
JsonResponse respose = new JsonResponse ( result ) ;
return respose ;
}
/// <summary>
/// 发票冲红
/// </summary>
/// <param name="BILLNO"></param>
/// <param name="redirecturl"></param>
/// <returns></returns>
public ContentResult NNSetRed ( string bill , string redirecturl )
{
//首先判断是否有 modInvLock 发票开出锁定
var result = new DBResult ( ) ;
//var detail = new List<chinvoice_de>
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message , Data = result . Data } ;
//首先判断数据完整性与合法性 及检查平台认证
var checkresult = checkinfo ( bill , redirecturl ) ;
//被冲红的蓝票信息
var BlueInvoice = ChinvoiceDAL . GetData ( " cm.billno='" + bill + "'" ) ;
if ( ! checkresult . Success )
{
return new ContentResult ( ) { Content = JsonConvert . Serialize ( checkresult ) } ;
}
else
{
var head = ( ChInvoice_HangXin ) checkresult . Data ;
if ( string . IsNullOrEmpty ( head . INVOICENO ) | | string . IsNullOrEmpty ( head . INVOICECODE ) )
{
jsonRespose . Success = false ;
jsonRespose . Message = "该发票没有发票号和发票代码,无法进行冲红。" ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
var beRedBillNo = head . BILLNO ;
var RedCode = head . INVOICECODE ;
var RedNo = head . INVOICENO ;
var detailList = ChinvoiceDAL . GetDetailList ( "PID='" + head . GID + "'" ) ;
//如果已经存在一张相应的红票, 则将现在这个head变成那个红票
var _existRed = ChinvoiceDAL . GetData ( " REDNUM='" + head . INVOICENO + "' and REDCODE='" + head . INVOICECODE + "' " ) ;
if ( _existRed . BILLNO ! = "*" )
{
head = _existRed ;
head . REMARK = REDREMARK ( head . REMARK ) ;
detailList = ChinvoiceDAL . GetDetailList ( "PID='" + head . GID + "'" ) ;
head . DbOperationType = DbOperationType . DbotUpd ;
head . ModelUIStatus = "E" ;
}
else
{
//将该head改成一个新的发票信息
//将发票明细也同样处理
head . GID = System . Guid . NewGuid ( ) . ToString ( ) ;
head . BILLNO = PubSysDAL . GetBillNo ( "0308" ) ;
head . PTORRED = "2" ; // 开票类型 红票
head . INVOICECODE = "" ;
head . INVOICENO = "" ;
head . EINVOICESTATE = "0" ;
head . INVOICESERIALNUM = "" ;
//head.BILLSTATUS = 0;
head . REDCODE = RedCode ;
head . REDNUM = RedNo ;
head . INVAMOUNT = head . INVAMOUNT * - 1 ;
head . INVOICEPDFURL = "" ;
head . INVOICEINFOURL = "" ;
head . DbOperationType = DbOperationType . DbotIns ;
head . ModelUIStatus = "I" ;
head . BILLSTATUS = 1 ;
foreach ( var detail in detailList )
{
//数量 税额 含税金额 不含税金额 取负数
detail . SetRed ( ) ;
detail . PID = "*" ;
}
#region SR2020060200007 红票清空推送模式和推送邮箱
head . PUSHMODE = "-1" ;
head . PUSHEMAIL = "" ;
head . PUSHMOBILE = "0" ;
# endregion
head . REMARK = REDREMARK ( head . REMARK ) ;
}
var modb = new ModelObjectDB ( ) ;
result = ChinvoiceDAL . SaveInvDetail ( head . GID , detailList ) ;
if ( result . Success = = true )
{
result = modb . Save ( head ) ;
//ChinvoiceDAL.UpdateInvNoUse(headData.INVOICENO, Convert.ToString(Session["USERID"]),headData.BILLNO);
//if (headData.EXCHANGERATE != 0)
//{
// ChinvoiceDAL.updateFeeTax(headData.BILLNO, headData.EXCHANGERATE);
//}
} ;
var returndate = ChinvoiceDAL . GetData ( " BILLNO='" + head . BILLNO + "'" ) ;
if ( head . INVITERFACE = = "诺诺发票接口" | | head . INVITERFACE = = "" )
{
var hx = HangXinRequestHelper . getHelper ( head . TAXCODE ) ;
if ( ! hx . CanUse )
{
jsonRespose . Success = false ;
jsonRespose . Message = hx . ERRORMSG ;
return jsonRespose . getContentReult ( ) ;
}
HangXinRequestHelper . redirectUri = getRedirecturl ( redirecturl ) ;
result = hx . PostInvoice ( head , detailList ) ;
returndate = ChinvoiceDAL . GetData ( " BILLNO='" + head . BILLNO + "'" ) ;
//如果状态为开出成功 则执行锁定
//并将被冲红的原发票的setred属性设置成true
if ( returndate . EINVOICESTATE = = "2" & & returndate . BILLSTATUS = = 0 )
{
//ChinvoiceDAL.Lock(returndate.BILLNO);
//20200106 添加 如sys_param_set.PARAMNAME=INVOICEAUTOLOCK 没有值或值为false 则不执行锁定
var needautolock = MsSysParamSetDAL . GetSysParam ( "INVOICEAUTOLOCK" ) . isnullortrue ( ) ;
if ( needautolock )
{
ChinvoiceDAL . Lock ( returndate . BILLNO ) ;
}
ChinvoiceDAL . SetRed ( returndate ) ;
//将原票内的申请和费用恢复原状
/ /
result = SetInvoiceFee ( BlueInvoice ) ;
}
}
else if ( head . INVITERFACE = = "瑞宏发票接口" )
{
RuihongHelper ruihongHelper = new RuihongHelper ( ) ;
string msg = null ;
result . Success = ruihongHelper . RedInvoiceRecord ( returndate . GID , out msg ) ;
result . Message = msg ;
if ( result . Success )
{
var needautolock = MsSysParamSetDAL . GetSysParam ( "INVOICEAUTOLOCK" ) . isnullortrue ( ) ;
if ( needautolock )
{
ChinvoiceDAL . Lock ( returndate . BILLNO ) ;
}
ChinvoiceDAL . SetRed ( returndate ) ;
//将原票内的申请和费用恢复原状
/ /
result = SetInvoiceFee ( BlueInvoice ) ;
}
}
jsonRespose . Success = result . Success ;
jsonRespose . Message = result . Message ;
jsonRespose . Data = returndate ;
}
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
/// <summary>
/// 红票票面备注 固定追加
/// 对应正数发票代码:037021900111号码:84769822
/// 共42字节, 而总长度不能超过130字节
/// 因此红票的备注需要截断超过88字节长度的部分
/// </summary>
/// <param name="REMARK"></param>
/// <returns></returns>
private string REDREMARK ( string REMARK )
{
if ( REMARK . Length < = 88 ) return REMARK ;
else
{
while ( ( REMARK . Length > 88 ) & & ( REMARK . IndexOf ( " " ) > = 0 ) )
{
REMARK = REMARK . Replace ( " " , " " ) ;
}
if ( REMARK . Length > 88 )
{
REMARK = REMARK . Replace ( "\n" , "" ) ;
}
if ( REMARK . Length > 88 )
{
REMARK = REMARK . Substring ( 0 , 88 ) ;
}
return REMARK ;
}
}
/// <summary>
/// 检查能否发出开票信息
/// </summary>
/// <param name="head"></param>
/// <returns></returns>
private DBResult checkCanPost ( ChInvoice_HangXin head )
{
var result = new DBResult ( true , "" , "" ) ;
if ( string . IsNullOrEmpty ( head . INVOICECUSTNAME ) ) setErrorMessage ( ref result , "购方名称 不能为空" ) ;
if ( string . IsNullOrEmpty ( head . PUSHMOBILE ) ) setErrorMessage ( ref result , "推送的手机号码 不能为空" ) ;
var ErrorInfo = "销售方公司(我方公司)没有维护:" ;
var LocalErrorInfo = "销售方公司(我方公司)没有维护:" ;
if ( string . IsNullOrWhiteSpace ( head . TAXCODE ) )
{
result . Success = false ;
LocalErrorInfo + = " 税务登记号 " ;
}
if ( string . IsNullOrWhiteSpace ( head . ADDRESS ) )
{
result . Success = false ;
if ( LocalErrorInfo ! = ErrorInfo )
LocalErrorInfo + = "、" ;
LocalErrorInfo + = " 公司地址 " ;
}
if ( string . IsNullOrWhiteSpace ( head . BILLRISES ) )
{
result . Success = false ;
if ( LocalErrorInfo ! = ErrorInfo )
LocalErrorInfo + = "、" ;
LocalErrorInfo + = " 公司发票抬头 " ;
}
if ( string . IsNullOrWhiteSpace ( head . OFFICEPHONE ) )
{
result . Success = false ;
if ( LocalErrorInfo ! = ErrorInfo )
LocalErrorInfo + = "、" ;
LocalErrorInfo + = " 办公电话 " ;
}
if ( LocalErrorInfo ! = ErrorInfo )
{
LocalErrorInfo + = " ,请在企业信息内录入。" ;
setErrorMessage ( ref result , LocalErrorInfo ) ;
}
if ( head . PTORRED = = "2" )
{
if ( string . IsNullOrEmpty ( head . REDCODE ) ) setErrorMessage ( ref result , "冲红时 蓝票代码 不能为空" ) ;
if ( string . IsNullOrEmpty ( head . REDCODE ) ) setErrorMessage ( ref result , "冲红时 蓝票号码 不能为空" ) ;
}
return result ;
}
/// <summary>
/// 检查能否发出读取发票信息
/// </summary>
/// <param name="BILLNO"></param>
/// <param name="redirecturl"></param>
/// <returns></returns>
private JsonResponse checkCanRead ( string BILLNO , string redirecturl )
{
var result = new DBResult ( ) ;
var head = new ChInvoice_HangXin ( ) ;
//var detail = new List<chinvoice_de>
var jsonRespose = new JsonResponse { Success = true , Message = result . Message , Data = result . Data } ;
//首先判断数据完整性与合法性
head = ChinvoiceDAL . GetData ( "cm.BILLNO='" + BILLNO + "'" ) ;
if ( head . BILLNO ! = "" )
{
//head = list[0];
jsonRespose . Data = head ;
}
else
{
jsonRespose . Success = false ;
jsonRespose . Message = "没有找到可以开票的发票信息,可能是权限不足或登录信息丢失。" ;
}
//如果该税号的token需要 返回认证窗口
var hx = HangXinRequestHelper . getHelper ( head . TAXCODE ) ;
if ( ! hx . CanUse )
{
jsonRespose . Success = false ;
jsonRespose . Message = hx . ERRORMSG ;
return jsonRespose ;
}
HangXinRequestHelper . redirectUri = getRedirecturl ( redirecturl ) ;
if ( hx . needStart )
{
BasicDataRefDAL . SaveLog ( "checkinfo; BILLNO=" + BILLNO , "" , "诺诺平台" , "返回认证窗口" ) ;
jsonRespose = TokenPage ( ) ;
}
return jsonRespose ;
}
private void setErrorMessage ( ref DBResult r , string message )
{
r . setMessage ( false , message ) ;
}
# endregion
public ContentResult UpdatePrint ( string billno )
{
DBResult result = ChinvoiceDAL . UpdatePrint ( billno ) ;
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
#region 发票模板
public ContentResult GetRemarksTemplate ( string TemplateName )
{
DBResult result = ChinvoiceDAL . GetRemarksTemplate ( Convert . ToString ( Session [ "COMPANYID" ] ) , TemplateName ) ;
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message , Data = result . Data } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
public ContentResult SaveRemarksTemplate ( string Template , string TemplateName )
{
DBResult result = ChinvoiceDAL . SaveRemarksTemplate ( Template , Convert . ToString ( Session [ "COMPANYID" ] ) , TemplateName ) ;
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
public ContentResult GetRemarksData ( string billno , string TemplateName )
{
var dataList = ChinvoiceDAL . GetBsList ( "c.BILLNO='" + billno + "'" ) ;
DBResult result = ChinvoiceDAL . GetRemarksData ( dataList , Convert . ToString ( Session [ "COMPANYID" ] ) , billno , TemplateName ) ;
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message , Data = result . Data } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
# endregion
#region 发票票册
public ContentResult GetBookDataList ( int start , int limit , string sort , string condition )
{
var dataList = ChinvoiceDAL . GetBookDataList ( condition , Convert . ToString ( Session [ "COMPANYID" ] ) , sort ) ;
var list = dataList . Skip ( start ) . Take ( limit ) ;
var json = JsonConvert . Serialize ( new { Success = true , Message = "查询成功" , totalCount = dataList . Count , data = list . ToList ( ) } ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetBookData ( string handle , string condition )
{
ChInvoiceBook_HangXin head = null ;
if ( handle = = "edit" )
{
var list = ChinvoiceDAL . GetBookDataList ( condition , Convert . ToString ( Session [ "COMPANYID" ] ) ) ;
if ( list . Count > 0 )
head = list [ 0 ] ;
}
if ( head = = null )
{
head = new ChInvoiceBook_HangXin ( ) ;
}
if ( handle = = "add" )
{
head . CREATEUSER = Convert . ToString ( Session [ "USERID" ] ) ;
head . CREATEUSERREF = Convert . ToString ( Session [ "SHOWNAME" ] ) ;
head . COMPANYID = Convert . ToString ( Session [ "COMPANYID" ] ) ;
}
var json = JsonConvert . Serialize (
new { Success = true , Message = "查询成功" , data = head } ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult SaveBook ( string opstatus , string data )
{
var headData = JsonConvert . Deserialize < ChInvoiceBook_HangXin > ( data ) ;
if ( opstatus = = "add" )
{
headData . GID = Guid . NewGuid ( ) . ToString ( ) ;
headData . COMPANYID = Convert . ToString ( Session [ "COMPANYID" ] ) ;
headData . CREATEUSER = Convert . ToString ( Session [ "USERID" ] ) ;
headData . CREATETIME = DateTime . Now . ToString ( ) ;
headData . DbOperationType = DbOperationType . DbotIns ;
}
else if ( opstatus = = "edit" )
{
headData . DbOperationType = DbOperationType . DbotUpd ;
headData . ModelUIStatus = "E" ;
}
else
{
headData . DbOperationType = DbOperationType . DbotDel ;
}
if ( headData . TYPE = = "" ) headData . TYPE = "0" ;
var BILLNO = headData . GID ;
var modb = new ModelObjectDB ( ) ;
DBResult result = modb . Save ( headData ) ;
var jsonRespose = new JsonResponse
{
Success = result . Success ,
Message = result . Message ,
Data = ChinvoiceDAL . GetBookData ( " GID='" + BILLNO + "'" , Convert . ToString ( Session [ "COMPANYID" ] ) )
} ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
public ContentResult DeleteBook ( string data )
{
var headData = JsonConvert . Deserialize < ChInvoiceBook_HangXin > ( data ) ;
var isfee = ChinvoiceDAL . GetMakeOutCount ( headData . GID ) ;
if ( isfee )
{
var jsonRespose = new JsonResponse { Success = false , Message = "此票册已有开出发票,不允许删除!" } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
else
{
DBResult result ;
var modb = new ModelObjectDB ( ) ;
result = modb . Delete ( headData ) ;
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
}
public ContentResult CreateBookitems ( string data )
{
var headData = JsonConvert . Deserialize < ChInvoiceBook_HangXin > ( data ) ;
DBResult result = ChinvoiceDAL . CreateBookitems ( headData , Convert . ToString ( Session [ "USERID" ] ) ) ;
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
public ContentResult LockBookitems ( string data )
{
var headData = JsonConvert . Deserialize < List < ChInvoiceBookdetail_HangXin > > ( data ) ;
DBResult result = ChinvoiceDAL . LockBookitems ( headData ) ;
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
public ContentResult CancelLockBookitems ( string data )
{
var headData = JsonConvert . Deserialize < List < ChInvoiceBookdetail_HangXin > > ( data ) ;
DBResult result = ChinvoiceDAL . CancelLockBookitems ( headData ) ;
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
public ContentResult GetBookitemsDataList ( string condition , string sort )
{
var dataList = ChinvoiceDAL . GetBookitemsDataList ( condition , sort ) ;
var json = JsonConvert . Serialize ( new { Success = true , Message = "查询成功" , totalCount = dataList . Count , data = dataList . ToList ( ) } ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult DeleteUpBook ( string data )
{
var headData = JsonConvert . Deserialize < ChInvoiceBook_HangXin > ( data ) ;
DBResult result ;
result = ChinvoiceDAL . DeleteUpBook ( headData . GID , Convert . ToString ( Session [ "USERID" ] ) ) ;
var jsonRespose = new JsonResponse { Success = result . Success , Message = result . Message } ;
return new ContentResult ( ) { Content = JsonConvert . Serialize ( jsonRespose ) } ;
}
# endregion
#region 参照部分
# endregion
#region 联力 连接P2系统的sql数据库表 查询没有发票号的M_invoice表内容
public ContentResult GetP2Invoice ( string condition )
{
var canlogin = BasicDataRefDAL . CheckLogin ( Session ) ;
if ( ! canlogin . Success )
{
return ( ContentResult ) canlogin . Data ;
}
var _count = 0 ;
//(string TABLENAME,string _PKEY,string _sql,string DBNAME)
BaseTableMC fromdbbase = new BaseTableMC ( "M_INVOICE" , "INVOICE_ID" , "" , "P2DB" ) ;
var dataList = DBTableConnDAL . getToList ( fromdbbase , "联力P2发票" , condition ) ;
var list_2 = ModelObjectBill . getDicList ( ModelObjectConvert < BaseTableMC > . ToModelObjectList ( dataList ) ) ;
var json = JsonConvert . Serialize ( new
{
Success = true ,
Message = "查询成功" ,
totalCount = _count ,
data = list_2 . ToList ( )
} ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetP2Invoice_Fee ( string INVOICE_ID )
{
var canlogin = BasicDataRefDAL . CheckLogin ( Session ) ;
if ( ! canlogin . Success )
{
return ( ContentResult ) canlogin . Data ;
}
var _count = 0 ;
//(string TABLENAME,string _PKEY,string _sql,string DBNAME)
BaseTableMC fromdbbase = new BaseTableMC ( "M_INVOICE" , "INVOICE_ID" , "" , "P2DB" ) ;
if ( string . IsNullOrWhiteSpace ( INVOICE_ID ) ) INVOICE_ID = "0" ;
var dataList = DBTableConnDAL . getToList ( fromdbbase , "联力P2发票_明细" , $"INVOICE_ID='{INVOICE_ID}'" ) ;
var resultlist = new List < BaseTableMC > ( ) ;
var splitword = "\r\n" ;
if ( dataList . Count > 0 )
{
foreach ( var data in dataList )
{
var feenamearray = data . GetSplitField ( "FEENAME" , splitword ) ;
var amoutarray = data . GetSplitField ( "AMOUNT" , splitword ) ;
var PRICEarray = data . GetSplitField ( "PRICE" , splitword ) ;
var ratearray = data . GetSplitField ( "RATE" , splitword ) ;
var NUMarray = data . GetSplitField ( "NUM" , splitword ) ;
if ( feenamearray . Length > 1 )
{
for ( var _i = 0 ; _i < feenamearray . Length ; _i + + )
{
var resultdata = new BaseTableMC ( ) ;
resultdata . SetValue ( "CURRENCY" , data . GetValue ( "CURRENCY" ) ) ;
resultdata . SetValue ( "FEENAME" , feenamearray [ _i ] ) ;
resultdata . SetValue ( "AMOUNT" , amoutarray [ _i ] ) ;
resultdata . SetValue ( "PRICE" , PRICEarray [ _i ] ) ;
resultdata . SetValue ( "RATE" , ratearray [ _i ] ) ;
resultdata . SetValue ( "NUM" , NUMarray [ _i ] ) ;
resultlist . Add ( resultdata ) ;
}
}
else
{
resultlist . Add ( data ) ;
}
}
}
var list_2 = ModelObjectBill . getDicList ( ModelObjectConvert < BaseTableMC > . ToModelObjectList ( resultlist ) ) ;
var json = JsonConvert . Serialize ( new
{
Success = true ,
Message = "查询成功" ,
totalCount = _count ,
data = list_2 . ToList ( )
} ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetP2_CUST ( string condition = " isnull(invoice_no,'')='' " )
{
var canlogin = BasicDataRefDAL . CheckLogin ( Session ) ;
if ( ! canlogin . Success )
{
return ( ContentResult ) canlogin . Data ;
}
var _count = 0 ;
//(string TABLENAME,string _PKEY,string _sql,string DBNAME)
BaseTableMC fromdbbase = new BaseTableMC ( "M_INVOICE" , "INVOICE_ID" , "" , "P2DB" ) ;
var dataList = DBTableConnDAL . getToList ( fromdbbase , "联力P2发票_开票单位" , condition , " select distinct COMPANY_CODE from M_INVOICE " ) ;
var list_2 = ModelObjectBill . getDicList ( ModelObjectConvert < BaseTableMC > . ToModelObjectList ( dataList ) ) ;
var json = JsonConvert . Serialize ( new
{
Success = true ,
Message = "查询成功" ,
totalCount = _count ,
data = list_2 . ToList ( )
} ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetP2_CURRENCY ( string condition = " isnull(invoice_no,'')='' " )
{
var canlogin = BasicDataRefDAL . CheckLogin ( Session ) ;
if ( ! canlogin . Success )
{
return ( ContentResult ) canlogin . Data ;
}
var _count = 0 ;
//(string TABLENAME,string _PKEY,string _sql,string DBNAME)
BaseTableMC fromdbbase = new BaseTableMC ( "M_INVOICE" , "INVOICE_ID" , "" , "P2DB" ) ;
var dataList = DBTableConnDAL . getToList ( fromdbbase , "联力P2发票_币别" , condition , " select distinct CURR_TYPE from M_INVOICE " ) ;
var list_2 = ModelObjectBill . getDicList ( ModelObjectConvert < BaseTableMC > . ToModelObjectList ( dataList ) ) ;
var json = JsonConvert . Serialize ( new
{
Success = true ,
Message = "查询成功" ,
totalCount = _count ,
data = list_2 . ToList ( )
} ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult GetP2_CREATOR ( string condition = " isnull(invoice_no,'')='' " )
{
var canlogin = BasicDataRefDAL . CheckLogin ( Session ) ;
if ( ! canlogin . Success )
{
return ( ContentResult ) canlogin . Data ;
}
var _count = 0 ;
//(string TABLENAME,string _PKEY,string _sql,string DBNAME)
BaseTableMC fromdbbase = new BaseTableMC ( "M_INVOICE" , "INVOICE_ID" , "" , "P2DB" ) ;
var dataList = DBTableConnDAL . getToList ( fromdbbase , "联力P2发票_申请人" , condition , " select distinct CREATE_BY from M_INVOICE " ) ;
var list_2 = ModelObjectBill . getDicList ( ModelObjectConvert < BaseTableMC > . ToModelObjectList ( dataList ) ) ;
var json = JsonConvert . Serialize ( new
{
Success = true ,
Message = "查询成功" ,
totalCount = _count ,
data = list_2 . ToList ( )
} ) ;
return new ContentResult ( ) { Content = json } ;
}
public ContentResult SaveNewP2 ( string opstatus , string data , string GID , string localdata )
{
var headData = JsonConvert . Deserialize < ChInvoice_HangXin > ( data ) ;
var localData = JsonConvert . Deserialize < ChInvoice_HangXin > ( localdata ) ;
BaseTableMC fromdbbase = new BaseTableMC ( "M_INVOICE" , "INVOICE_ID" , "" , "P2DB" ) ;
var P2DataList = DBTableConnDAL . getToList ( fromdbbase , "联力P2发票" , " INVOICE_ID='" + headData . BSNO + "'" ) ;
var bodyList = new List < ChInvoiceDetail > ( ) ;
var SaveBodyList = new List < ChInvoiceDetail > ( ) ;
var P2Data = new BaseTableMC ( ) ;
if ( P2DataList . Count ( ) > 0 )
{
P2Data = P2DataList [ 0 ] ;
}
if ( opstatus = = "add" )
{
//查看是否已被使用 如是则返回错误并结束
var isexists = CheckExists ( " BSNO='" + headData . BSNO + "' " ) ;
if ( ! isexists . Success )
{
return isexists . getContentReult ( ) ;
}
localData . GID = Guid . NewGuid ( ) . ToString ( ) ;
localData . BILLNO = PubSysDAL . GetBillNo ( "0308" ) ;
localData . COMPANYID = Convert . ToString ( Session [ "COMPANYID" ] ) ;
localData . OPERATOR = Convert . ToString ( Session [ "USERID" ] ) ;
localData . OPERATETIME = DateTime . Now ;
localData . DbOperationType = DbOperationType . DbotIns ;
}
else if ( opstatus = = "edit" )
{
//localData = ChinvoiceDAL.GetData(" GID='"+ GID + "' ");
var isexists = CheckExists ( " BSNO='" + headData . BSNO + "' and GID<>'" + GID + "' " ) ;
if ( ! isexists . Success )
{
return isexists . getContentReult ( ) ;
}
localData . DbOperationType = DbOperationType . DbotUpd ;
bodyList = ChinvoiceDAL . GetDetailList ( " PID='" + localData . GID + "' " ) ;
}
localData . SetP2Value ( P2Data ) ;
if ( bodyList . Count > 0 )
{
ChinvoiceDAL . DelInvDetail ( bodyList ) ;
}
SaveBodyList = ChInvoiceDetail . GetP2DetailList ( P2Data , ( localData . PTORRED = = "2" ) ) ;
var BILLNO = localData . BILLNO ;
var modb = new ModelObjectDB ( ) ;
DBResult result = ChinvoiceDAL . SaveInvDetail ( localData . GID , SaveBodyList ) ;
if ( result . Success = = true )
{
result = modb . Save ( localData ) ;
//ChinvoiceDAL.UpdateInvNoUse(headData.INVOICENO, Convert.ToString(Session["USERID"]),headData.BILLNO);
//if (headData.EXCHANGERATE != 0)
//{
// ChinvoiceDAL.updateFeeTax(headData.BILLNO, headData.EXCHANGERATE);
//}
} ;
var jsonRespose = new JsonResponse
{
Success = result . Success ,
Message = result . Message ,
Data = ChinvoiceDAL . GetData ( " BILLNO='" + BILLNO + "'" , Convert . ToString ( Session [ "USERID" ] ) , CookieConfig . GetCookie_UserCode ( Request ) , Convert . ToString ( Session [ "COMPANYID" ] ) )
} ;
return jsonRespose . getContentReult ( ) ;
}
private JsonResponse CheckExists ( string condition )
{
var existsdata = ChinvoiceDAL . GetData ( condition ) ;
JsonResponse result = new JsonResponse ( ) ;
if ( ! string . IsNullOrWhiteSpace ( existsdata . GID ) )
{
result . Success = false ;
result . Message = "该发票已经被使用!" ;
}
else
{
result . Success = true ;
}
return result ;
}
# endregion
}
}