using System ;
using System.Data ;
using System.Collections.Generic ;
using System.Text ;
using DSWeb.Areas.Account.Models.Chfee_Invoiceapplication ;
using DSWeb.Areas.Account.Models.Chfee_do_detail ;
using DSWeb.Areas.Account.Models.MsOpBill ;
using DSWeb.Areas.Account.Models.BillChfeeDetail ;
using Microsoft.Practices.EnterpriseLibrary.Data ;
using DSWeb.Areas.Account.Models.Chfee_Exrate ;
using DSWeb.Areas.Account.Models.Chfee_do_Sum ;
using DSWeb.Areas.CommMng.Models ;
using DSWeb.EntityDA ;
using HcUtility.Comm ;
using DSWeb.Areas.CommMng.DAL ;
using DSWeb.Areas.Account.Models.ChfeeDetail ;
using DSWeb.MvcShipping.DAL.MsCodeGoodInv ;
using DSWeb.Areas.MvcShipping.DAL ;
using DSWeb.MvcShipping.DAL.MsSysParamSet ;
using DSWeb.MvcShipping.DAL.MsBaseInfoDAL ;
using DSWeb.Areas.Account.Models.TruckChfee_do_detail ;
using System.Data.SqlClient ;
using System.Text.RegularExpressions ;
using DSWeb.Areas.Account.Models.Chfee_Invoice_HangXin ;
using DSWeb.MvcShipping.DAL.MsSysInvInterFaceSet ;
using HcUtility.Core ;
using DSWeb.Areas.Account.DAL.Chfee_Invoice ;
using DSWeb.MvcShipping.DAL.MsInfoClient ;
using DSWeb.MvcShipping.Models.CodeGoodInv ;
namespace DSWeb.Areas.Account.DAL.Chfee_Invoiceapplication
{
public partial class ChinvoiceapplicationDAL
{
#region 发票申请列表
static public List < ChInvoiceapplication > GetDataList ( int start , int limit , string strCondition , out int totel , string userid = "" , string usercode = "" , string orgcode = "" , string sort = null )
{
var rangstr = GetRangDAListStr ( "" , userid , usercode , orgcode ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstr ;
}
else
{
strCondition = rangstr ;
}
}
var strSql = new StringBuilder ( ) ;
strSql . Append ( @"SELECT *,dbo.GetFeeNoStlByInvNo(BILLNO) as NOSTL from (SELECT row_number() over (" ) ;
var sortstring = DatasetSort . Getsortstring ( sort ) ;
if ( ! string . IsNullOrEmpty ( sortstring ) )
{
sortstring = sortstring . Replace ( "APPLICANTNAME" , "(select ShowName from [user] where GID=cm.APPLICANT)" ) ;
sortstring = sortstring . Replace ( "INVOICECATEGORYREF" , "(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97008 and EnumValueID=cm.INVOICECATEGORY)" ) ;
sortstring = sortstring . Replace ( "BILLSTATUSREF" , "(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97010 and EnumValueID=cm.BILLSTATUS)" ) ;
sortstring = sortstring . Replace ( "INVOICENOREF" , "(select top 1 INVOICENO from ch_fee_invoice where BILLNO=cm.INVBILLNO)" ) ;
sortstring = sortstring . Replace ( "INVDATE" , "(select top 1 INVOICEMAKETIME from ch_fee_invoice where BILLNO=cm.INVBILLNO)" ) ;
strSql . Append ( " order by " + sortstring ) ;
}
else
{
strSql . Append ( " order by APPLYTIME DESC" ) ;
}
strSql . Append ( @") as num , " ) ;
strSql . Append ( " GID,BILLNO,BILLSTATUS,CUSTOMERNAME,ACTUALCUSTOMERNAME,CURRENCY,INVOICECUSTNAME,INVOICECATEGORY " ) ;
strSql . Append ( " ,BSNO,MBLNO,VESSELVOYAGE,POL,POD,ETD,APPLYAMOUNT,INVAMOUNT,AMOUNTCAPITAL,OTCURRAMOUNT,AMOUNT" ) ;
strSql . Append ( " ,APPLICANT,APPLYTIME,ENTERTIME,OPERATOR,OPERATETIME,INVBILLNO " ) ;
strSql . Append ( " ,REMARK,SHENREMARK,COMPANYID,ISAPPLY,CUSTRATENO,CUSTADDRTEL,CUSTBANK,RATE,INVOICENO,RECVCURR,FEEAMOUNT " ) ;
strSql . Append ( ",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97010 and EnumValueID=cm.BILLSTATUS) as BILLSTATUSREF" ) ;
strSql . Append ( ",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97008 and EnumValueID=cm.INVOICECATEGORY) as INVOICECATEGORYREF" ) ;
strSql . Append ( ",(select ShowName from [user] where GID=cm.APPLICANT) as APPLICANTNAME" ) ;
strSql . Append ( ",(select DEPTNAME from [VW_user] where userid=cm.APPLICANT) as APPLICANTDEPT" ) ;
strSql . Append ( ",(select top 1 INVOICENO from ch_fee_invoice where BILLNO=cm.INVBILLNO) as INVOICENOREF " ) ;
strSql . Append ( ",(select top 1 INVOICEMAKETIME from ch_fee_invoice where BILLNO=cm.INVBILLNO) as INVDATE " ) ;
strSql . Append ( ",PAYCOMPANYID,(select name from company where gid=cm.PAYCOMPANYID) PAYCOMPANYREF,0 IsAudit,REASON,cm.ISPRINT,cm.PRINTCOUNT " ) ;
strSql . Append ( ",PUSHMODE,PUSHMOBILE,PUSHEMAIL,dbo.F_getEnumValue(0,80002,cm.PUSHMODE) as PUSHMODEREF,INVTYPE" ) ;
strSql . Append ( " FROM ch_fee_invoiceapplication cm where 1=1 " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " and " + strCondition ) ;
}
strSql . Append ( @")as t " ) ;
strSql . Append ( string . Format ( "where t.num>{0} and t.num<={1} order by t.num " , start , start + limit ) ) ; / /
totel = getTotalCount ( strCondition ) ;
return SetData ( strSql ) ;
}
static public List < ChInvoiceapplication > GetDataListAll ( string strCondition , string userid = "" , string usercode = "" , string orgcode = "" , string sort = null )
{
var rangstr = "" ;
if ( ! string . IsNullOrEmpty ( userid ) )
rangstr = GetRangDAListStr ( "" , userid , usercode , orgcode ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstr ;
}
else
{
strCondition = rangstr ;
}
}
var strSql = new StringBuilder ( ) ;
strSql . Append ( "SELECT GID,BILLNO,BILLSTATUS,CUSTOMERNAME,ACTUALCUSTOMERNAME,CURRENCY,INVOICECUSTNAME,INVOICECATEGORY " ) ;
strSql . Append ( " ,BSNO,MBLNO,VESSELVOYAGE,POL,POD,ETD,APPLYAMOUNT,INVAMOUNT,AMOUNTCAPITAL,OTCURRAMOUNT,AMOUNT" ) ;
strSql . Append ( " ,APPLICANT,APPLYTIME,ENTERTIME,OPERATOR,OPERATETIME,INVBILLNO " ) ;
strSql . Append ( " ,REMARK,SHENREMARK,COMPANYID,ISAPPLY,CUSTRATENO,CUSTADDRTEL,CUSTBANK,RATE,INVOICENO,RECVCURR,FEEAMOUNT " ) ;
strSql . Append ( ",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97010 and EnumValueID=cm.BILLSTATUS) as BILLSTATUSREF" ) ;
strSql . Append ( ",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97008 and EnumValueID=cm.INVOICECATEGORY) as INVOICECATEGORYREF" ) ;
strSql . Append ( ",(select ShowName from [user] where GID=cm.APPLICANT) as APPLICANTNAME" ) ;
strSql . Append ( ",(select DEPTNAME from [VW_user] where userid=cm.APPLICANT) as APPLICANTDEPT" ) ;
strSql . Append ( ",(select top 1 INVOICENO from ch_fee_invoice where BILLNO=cm.INVBILLNO) as INVOICENOREF " ) ;
strSql . Append ( ",(select top 1 INVOICEMAKETIME from ch_fee_invoice where BILLNO=cm.INVBILLNO) as INVDATE " ) ;
strSql . Append ( ",PAYCOMPANYID,(select name from company where gid=cm.PAYCOMPANYID) PAYCOMPANYREF,0 IsAudit,REASON,cm.ISPRINT,cm.PRINTCOUNT " ) ;
strSql . Append ( ",PUSHMODE,PUSHMOBILE,PUSHEMAIL,dbo.F_getEnumValue(0,80002,cm.PUSHMODE) as PUSHMODEREF,'' as NOSTL,INVTYPE" ) ;
strSql . Append ( " FROM ch_fee_invoiceapplication cm where 1=1 " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " and " + strCondition ) ;
}
var sortstring = DatasetSort . Getsortstring ( sort ) ;
if ( ! string . IsNullOrEmpty ( sortstring ) )
{
strSql . Append ( " order by " + sortstring ) ;
}
else
{
strSql . Append ( " order by APPLYTIME DESC" ) ;
}
return SetData ( strSql ) ;
}
public static int getTotalCount ( string strCondition )
{
StringBuilder strSql = new StringBuilder ( ) ;
strSql . Append ( "select count(*) " ) ;
strSql . Append ( " FROM ch_fee_invoiceapplication cm where 1=1 " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " and " + strCondition ) ;
}
int cnt = 0 ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
cnt = Convert . ToInt32 ( reader [ 0 ] ) ;
}
}
return cnt ;
}
/*可开发票列表 */
static public List < ChInvoiceapplication > GetDataInvList ( string strCondition , string userid = "" , string usercode = "" , string orgcode = "" , string sort = null )
{
var rangstr = GetRangDAListStr ( "" , userid , usercode , orgcode ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstr ;
}
else
{
strCondition = rangstr ;
}
}
var strSql = new StringBuilder ( ) ;
strSql . Append ( " SELECT GID,cm.BILLNO,BILLSTATUS,CUSTOMERNAME,ACTUALCUSTOMERNAME,CURRENCY,INVOICECUSTNAME,INVOICECATEGORY " ) ;
strSql . Append ( " ,BSNO,MBLNO,VESSELVOYAGE,POL,POD,ETD,APPLYAMOUNT,INVAMOUNT,AMOUNTCAPITAL,OTCURRAMOUNT,AMOUNT" ) ;
strSql . Append ( " ,APPLICANT,APPLYTIME,ENTERTIME,OPERATOR,OPERATETIME,INVBILLNO " ) ;
strSql . Append ( " ,REMARK,SHENREMARK,COMPANYID,ISAPPLY,CUSTRATENO,CUSTADDRTEL,CUSTBANK,RATE,INVOICENO,RECVCURR,FEEAMOUNT " ) ;
strSql . Append ( ",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97010 and EnumValueID=cm.BILLSTATUS) as BILLSTATUSREF" ) ;
strSql . Append ( ",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97008 and EnumValueID=cm.INVOICECATEGORY) as INVOICECATEGORYREF" ) ;
strSql . Append ( ",(select ShowName from [user] where GID=cm.APPLICANT) as APPLICANTNAME" ) ;
strSql . Append ( ",(select DEPTNAME from [VW_user] where userid=cm.APPLICANT) as APPLICANTDEPT" ) ;
strSql . Append ( ",(select top 1 INVOICENO from ch_fee_invoice where BILLNO=cm.INVBILLNO) as INVOICENOREF,null INVDATE " ) ;
strSql . Append ( ",PAYCOMPANYID,(select name from company where gid=cm.PAYCOMPANYID) PAYCOMPANYREF,0 IsAudit,REASON,cm.ISPRINT,cm.PRINTCOUNT " ) ;
strSql . Append ( ",PUSHMODE,PUSHMOBILE,PUSHEMAIL,dbo.F_getEnumValue(0,80002,cm.PUSHMODE) as PUSHMODEREF,'' as NOSTL,INVTYPE" ) ;
strSql . Append ( " FROM ch_fee_invoiceapplication cm " ) ;
strSql . Append ( " left join v_fee_do_payinvoiceNoInv NV ON (NV.BILLNO=cm.BILLNO) where ISNULL(NV.BILLNO,'')<>'' " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " and " + strCondition ) ;
}
var sortstring = DatasetSort . Getsortstring ( sort ) ;
if ( ! string . IsNullOrEmpty ( sortstring ) )
{
strSql . Append ( " order by " + sortstring ) ;
}
else
{
strSql . Append ( " order by APPLYTIME DESC" ) ;
}
return SetData ( strSql ) ;
}
static public ChInvoiceapplication GetData ( string condition , string userid = "" , string usercode = "" , string orgcode = "" )
{
var list = GetDataListAll ( condition , userid , usercode , orgcode ) ;
if ( list . Count > 0 )
return list [ 0 ] ;
return new ChInvoiceapplication ( ) ;
}
private static List < ChInvoiceapplication > SetData ( StringBuilder strSql )
{
var headList = new List < ChInvoiceapplication > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
ChInvoiceapplication data = new ChInvoiceapplication ( ) ;
#region Set DB data to Object
data . GID = Convert . ToString ( reader [ "GID" ] ) ;
data . BILLNO = Convert . ToString ( reader [ "BILLNO" ] ) ;
if ( reader [ "BILLSTATUS" ] ! = DBNull . Value )
data . BILLSTATUS = Convert . ToInt32 ( reader [ "BILLSTATUS" ] ) ;
data . BILLSTATUSREF = Convert . ToString ( reader [ "BILLSTATUSREF" ] ) ;
data . CUSTOMERNAME = Convert . ToString ( reader [ "CUSTOMERNAME" ] ) ;
data . ACTUALCUSTOMERNAME = Convert . ToString ( reader [ "ACTUALCUSTOMERNAME" ] ) ;
if ( reader [ "CURRENCY" ] ! = DBNull . Value )
data . CURRENCY = Convert . ToString ( reader [ "CURRENCY" ] ) ;
data . INVOICENO = Convert . ToString ( reader [ "INVOICENO" ] ) ;
data . INVOICENOREF = Convert . ToString ( reader [ "INVOICENOREF" ] ) ;
data . INVOICECUSTNAME = Convert . ToString ( reader [ "INVOICECUSTNAME" ] ) ;
data . INVOICECATEGORY = Convert . ToString ( reader [ "INVOICECATEGORY" ] ) ;
data . INVOICECATEGORYREF = Convert . ToString ( reader [ "INVOICECATEGORYREF" ] ) ;
data . BSNO = Convert . ToString ( reader [ "BSNO" ] ) ;
data . MBLNO = Convert . ToString ( reader [ "MBLNO" ] ) ;
data . VESSELVOYAGE = Convert . ToString ( reader [ "VESSELVOYAGE" ] ) ;
data . ETD = Convert . ToString ( reader [ "ETD" ] ) ;
data . POL = Convert . ToString ( reader [ "POL" ] ) ;
data . POD = Convert . ToString ( reader [ "POD" ] ) ;
if ( reader [ "APPLYAMOUNT" ] ! = DBNull . Value )
data . APPLYAMOUNT = Convert . ToDecimal ( reader [ "APPLYAMOUNT" ] ) ;
if ( reader [ "INVAMOUNT" ] ! = DBNull . Value )
data . INVAMOUNT = Convert . ToDecimal ( reader [ "INVAMOUNT" ] ) ;
if ( reader [ "AMOUNT" ] ! = DBNull . Value )
data . AMOUNT = Convert . ToDecimal ( reader [ "AMOUNT" ] ) ;
data . AMOUNTCAPITAL = Convert . ToString ( reader [ "AMOUNTCAPITAL" ] ) ;
if ( reader [ "OTCURRAMOUNT" ] ! = DBNull . Value )
data . OTCURRAMOUNT = Convert . ToDecimal ( reader [ "OTCURRAMOUNT" ] ) ;
if ( reader [ "RATE" ] ! = DBNull . Value )
data . RATE = Convert . ToDecimal ( reader [ "RATE" ] ) ;
else
data . RATE = 0 ;
data . APPLICANT = Convert . ToString ( reader [ "APPLICANT" ] ) ;
data . APPLICANTNAME = Convert . ToString ( reader [ "APPLICANTNAME" ] ) ;
data . APPLICANTDEPT = Convert . ToString ( reader [ "APPLICANTDEPT" ] ) ;
if ( reader [ "APPLYTIME" ] ! = DBNull . Value )
data . APPLYTIME = Convert . ToDateTime ( reader [ "APPLYTIME" ] ) . ToString ( "yyyy-MM-dd" ) ;
if ( reader [ "ENTERTIME" ] ! = DBNull . Value )
data . ENTERTIME = Convert . ToDateTime ( reader [ "ENTERTIME" ] ) ;
data . OPERATOR = Convert . ToString ( reader [ "OPERATOR" ] ) ;
if ( reader [ "OPERATETIME" ] ! = DBNull . Value )
data . OPERATETIME = Convert . ToDateTime ( reader [ "OPERATETIME" ] ) ;
data . SHENREMARK = Convert . ToString ( reader [ "SHENREMARK" ] ) ;
data . REMARK = Convert . ToString ( reader [ "REMARK" ] ) ;
data . COMPANYID = Convert . ToString ( reader [ "COMPANYID" ] ) ;
if ( reader [ "ISAPPLY" ] ! = DBNull . Value )
data . ISAPPLY = Convert . ToBoolean ( reader [ "ISAPPLY" ] ) ;
data . CUSTRATENO = Convert . ToString ( reader [ "CUSTRATENO" ] ) ;
data . CUSTADDRTEL = Convert . ToString ( reader [ "CUSTADDRTEL" ] ) ;
data . CUSTBANK = Convert . ToString ( reader [ "CUSTBANK" ] ) ;
data . PAYCOMPANYID = Convert . ToString ( reader [ "PAYCOMPANYID" ] ) ;
data . PAYCOMPANYREF = Convert . ToString ( reader [ "PAYCOMPANYREF" ] ) ;
data . RECVCURR = Convert . ToString ( reader [ "RECVCURR" ] ) ;
data . FEEAMOUNT = Convert . ToString ( reader [ "FEEAMOUNT" ] ) ;
data . IsAudit = Convert . ToString ( reader [ "IsAudit" ] ) ;
data . REASON = Convert . ToString ( reader [ "REASON" ] ) ;
data . PUSHMODE = Convert . ToString ( reader [ "PUSHMODE" ] ) ;
data . PUSHMOBILE = Convert . ToString ( reader [ "PUSHMOBILE" ] ) ;
data . PUSHEMAIL = Convert . ToString ( reader [ "PUSHEMAIL" ] ) ;
data . PUSHMODEREF = Convert . ToString ( reader [ "PUSHMODEREF" ] ) ;
data . NOSTL = Convert . ToString ( reader [ "NOSTL" ] ) ;
if ( reader [ "INVDATE" ] ! = DBNull . Value )
data . INVDATE = Convert . ToDateTime ( reader [ "INVDATE" ] ) . ToString ( "yyyy-MM-dd" ) ;
data . ISPRINT = Convert . ToString ( reader [ "ISPRINT" ] ) ;
if ( reader [ "PRINTCOUNT" ] ! = DBNull . Value )
data . PRINTCOUNT = Convert . ToInt32 ( reader [ "PRINTCOUNT" ] ) ;
data . INVTYPE = Convert . ToString ( reader [ "INVTYPE" ] ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
# endregion
#region 发票申请明细
static public List < ChInvoiceDetail > GetDetailList ( string strCondition , string sort = null )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " SELECT GID,PID,SerialNo,GOODSNAME,SPEC,UNIT " ) ;
strSql . Append ( ",PKGS,TAXPRICE,PRICE,AMOUNT,TAXRATE,TAX,Remark,GOODCODE" ) ;
strSql . Append ( ",(Select GOODNAME from code_goods_inv where GID=ch_fee_invoicedetail.GOODSNAME) AS GOODSNAMEREF" ) ;
strSql . Append ( " FROM ch_fee_invoicedetail " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " where " + strCondition ) ;
}
var sortstring = DatasetSort . Getsortstring ( sort ) ;
if ( ! string . IsNullOrEmpty ( sortstring ) )
{
strSql . Append ( " order by " + sortstring ) ;
}
else
{
strSql . Append ( " order by SerialNo" ) ;
}
return DetailSetData ( strSql ) ;
}
private static List < ChInvoiceDetail > DetailSetData ( StringBuilder strSql )
{
var headList = new List < ChInvoiceDetail > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
ChInvoiceDetail data = new ChInvoiceDetail ( ) ;
#region Set DB data to Object
data . GID = Convert . ToString ( reader [ "GID" ] ) ;
data . PID = Convert . ToString ( reader [ "PID" ] ) ;
data . SERIALNO = Convert . ToInt16 ( reader [ "SerialNo" ] ) ;
data . GOODSNAME = Convert . ToString ( reader [ "GOODSNAME" ] ) ;
data . GOODSNAMEREF = Convert . ToString ( reader [ "GOODSNAMEREF" ] ) ;
if ( data . GOODSNAMEREF = = "" | | data . GOODSNAMEREF = = null ) data . GOODSNAMEREF = data . GOODSNAME ;
data . SPEC = Convert . ToString ( reader [ "SPEC" ] ) ;
data . UNIT = Convert . ToString ( reader [ "UNIT" ] ) ;
data . PKGS = Convert . ToDecimal ( reader [ "PKGS" ] ) ;
data . TAXPRICE = Convert . ToDecimal ( reader [ "TAXPRICE" ] ) ;
data . PRICE = Convert . ToDecimal ( reader [ "PRICE" ] ) ;
data . AMOUNT = Convert . ToDecimal ( reader [ "AMOUNT" ] ) ;
data . TAXRATE = Convert . ToDecimal ( reader [ "TAXRATE" ] ) ;
data . TAX = Convert . ToDecimal ( reader [ "TAX" ] ) ;
data . REMARK = Convert . ToString ( reader [ "Remark" ] ) ;
data . GOODCODE = Convert . ToString ( reader [ "GOODCODE" ] ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
# endregion
static public List < ChInvoiceapplicationDetail > GetApplicationDetailList ( string strCondition , string sort = null )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " SELECT GID,LINKGID,BILLSTATUS,CUSTOMERNAME,INVOICECUSTNAME,AMOUNT,CURRENCY,REMARK,CUSTRATENO,CUSTADDRTEL,CUSTBANK,CUSTTEL,CUSTADDR " ) ;
strSql . Append ( ",EMAIL,GOODSNAME,(Select GOODNAME from code_goods_inv where GID=ch_fee_invoiceapplication_detail.GOODSNAME) AS GOODSNAMEREF" ) ;
strSql . Append ( ",(SELECT TOP 1 INVOICENO FROM ch_fee_invoice WHERE BILLNO = ch_fee_invoiceapplication_detail.INVBILLNO) INVOICENO " ) ;
strSql . Append ( " FROM ch_fee_invoiceapplication_detail " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " where 1=1 and " + strCondition ) ;
}
var sortstring = DatasetSort . Getsortstring ( sort ) ;
if ( ! string . IsNullOrEmpty ( sortstring ) )
{
strSql . Append ( " order by " + sortstring ) ;
}
else
{
strSql . Append ( " order by CUSTOMERNAME" ) ;
}
return AppDetailSetData ( strSql ) ;
}
private static List < ChInvoiceapplicationDetail > AppDetailSetData ( StringBuilder strSql )
{
var headList = new List < ChInvoiceapplicationDetail > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
SqlCommand cmd = new SqlCommand ( ) ;
cmd . CommandText = strSql . ToString ( ) ;
cmd . CommandTimeout = 1200000 ; //要加这一句
using ( IDataReader reader = db . ExecuteReader ( cmd ) )
{
while ( reader . Read ( ) )
{
ChInvoiceapplicationDetail data = new ChInvoiceapplicationDetail ( ) ;
#region Set DB data to Object
data . GID = Convert . ToString ( reader [ "GID" ] ) ;
data . LINKGID = Convert . ToString ( reader [ "LINKGID" ] ) ;
data . BILLSTATUS = Convert . ToString ( reader [ "BILLSTATUS" ] ) ;
data . CUSTOMERNAME = Convert . ToString ( reader [ "CUSTOMERNAME" ] ) ;
data . INVOICECUSTNAME = Convert . ToString ( reader [ "INVOICECUSTNAME" ] ) ;
data . REMARK = Convert . ToString ( reader [ "REMARK" ] ) ;
data . CURRENCY = Convert . ToString ( reader [ "CURRENCY" ] ) ;
if ( reader [ "AMOUNT" ] ! = DBNull . Value )
data . AMOUNT = Convert . ToDecimal ( reader [ "AMOUNT" ] ) ;
data . CUSTRATENO = Convert . ToString ( reader [ "CUSTRATENO" ] ) ;
data . CUSTADDRTEL = Convert . ToString ( reader [ "CUSTADDRTEL" ] ) ;
data . CUSTBANK = Convert . ToString ( reader [ "CUSTBANK" ] ) ;
data . CUSTTEL = Convert . ToString ( reader [ "CUSTTEL" ] ) ;
data . CUSTADDR = Convert . ToString ( reader [ "CUSTADDR" ] ) ;
data . EMAIL = Convert . ToString ( reader [ "EMAIL" ] ) ;
data . GOODSNAME = Convert . ToString ( reader [ "GOODSNAME" ] ) ;
data . GOODSNAMEREF = Convert . ToString ( reader [ "GOODSNAMEREF" ] ) ;
data . INVOICENO = Convert . ToString ( reader [ "INVOICENO" ] ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
public static DBResult SaveAppDetail ( ChInvoiceapplication headData , List < ChInvoiceapplicationDetail > bodyList )
{
var result = new DBResult ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
var cmdInsert =
db . GetSqlStringCommand (
@ "insert into ch_fee_invoiceapplication_detail (GID,BILLSTATUS,LINKGID,CUSTOMERNAME,INVOICECUSTNAME,AMOUNT,CURRENCY,REMARK,CUSTRATENO,CUSTADDRTEL,CUSTBANK,CUSTTEL,CUSTADDR,EMAIL,GOODSNAME)
values ( @GID , @BILLSTATUS , @LINKGID , @CUSTOMERNAME , @INVOICECUSTNAME , @AMOUNT , @CURRENCY , @REMARK , @CUSTRATENO , @CUSTADDRTEL , @CUSTBANK , @CUSTTEL , @CUSTADDR , @EMAIL , @GOODSNAME ) ");
var cmdUpdate =
db . GetSqlStringCommand (
@ "update ch_fee_invoiceapplication_detail set CUSTOMERNAME=@CUSTOMERNAME,INVOICECUSTNAME=@INVOICECUSTNAME,AMOUNT=@AMOUNT,CURRENCY=@CURRENCY,REMARK=@REMARK,CUSTRATENO=@CUSTRATENO
, CUSTADDRTEL = @CUSTADDRTEL , CUSTBANK = @CUSTBANK , CUSTTEL = @CUSTTEL , CUSTADDR = @CUSTADDR , EMAIL = @EMAIL , GOODSNAME = @GOODSNAME
WHERE GID = @GID ");
if ( bodyList ! = null )
{
foreach ( var enumValue in bodyList )
{
if ( enumValue . LINKGID = = "*" )
{
cmdInsert . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsert , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsert , "@BILLSTATUS" , DbType . String , "未开" ) ;
db . AddInParameter ( cmdInsert , "@LINKGID" , DbType . String , headData . GID ) ;
db . AddInParameter ( cmdInsert , "@CUSTOMERNAME" , DbType . String , enumValue . CUSTOMERNAME ) ;
db . AddInParameter ( cmdInsert , "@INVOICECUSTNAME" , DbType . String , enumValue . INVOICECUSTNAME ) ;
db . AddInParameter ( cmdInsert , "@AMOUNT" , DbType . String , enumValue . AMOUNT ) ;
db . AddInParameter ( cmdInsert , "@CURRENCY" , DbType . String , enumValue . CURRENCY ) ;
db . AddInParameter ( cmdInsert , "@REMARK" , DbType . String , enumValue . REMARK ) ;
db . AddInParameter ( cmdInsert , "@CUSTRATENO" , DbType . String , enumValue . CUSTRATENO ) ;
db . AddInParameter ( cmdInsert , "@CUSTADDRTEL" , DbType . String , enumValue . CUSTADDRTEL ) ;
db . AddInParameter ( cmdInsert , "@CUSTBANK" , DbType . String , enumValue . CUSTBANK ) ;
db . AddInParameter ( cmdInsert , "@CUSTTEL" , DbType . String , enumValue . CUSTTEL ) ;
db . AddInParameter ( cmdInsert , "@CUSTADDR" , DbType . String , enumValue . CUSTADDR ) ;
db . AddInParameter ( cmdInsert , "@EMAIL" , DbType . String , enumValue . EMAIL ) ;
db . AddInParameter ( cmdInsert , "@GOODSNAME" , DbType . String , enumValue . GOODSNAME ) ;
db . ExecuteNonQuery ( cmdInsert , tran ) ;
}
else {
cmdUpdate . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdate , "@GID" , DbType . String , enumValue . GID ) ;
db . AddInParameter ( cmdUpdate , "@CUSTOMERNAME" , DbType . String , enumValue . CUSTOMERNAME ) ;
db . AddInParameter ( cmdUpdate , "@INVOICECUSTNAME" , DbType . String , enumValue . INVOICECUSTNAME ) ;
db . AddInParameter ( cmdUpdate , "@AMOUNT" , DbType . String , enumValue . AMOUNT ) ;
db . AddInParameter ( cmdUpdate , "@CURRENCY" , DbType . String , enumValue . CURRENCY ) ;
db . AddInParameter ( cmdUpdate , "@REMARK" , DbType . String , enumValue . REMARK ) ;
db . AddInParameter ( cmdUpdate , "@CUSTRATENO" , DbType . String , enumValue . CUSTRATENO ) ;
db . AddInParameter ( cmdUpdate , "@CUSTADDRTEL" , DbType . String , enumValue . CUSTADDRTEL ) ;
db . AddInParameter ( cmdUpdate , "@CUSTBANK" , DbType . String , enumValue . CUSTBANK ) ;
db . AddInParameter ( cmdUpdate , "@CUSTTEL" , DbType . String , enumValue . CUSTTEL ) ;
db . AddInParameter ( cmdUpdate , "@CUSTADDR" , DbType . String , enumValue . CUSTADDR ) ;
db . AddInParameter ( cmdUpdate , "@EMAIL" , DbType . String , enumValue . EMAIL ) ;
db . AddInParameter ( cmdUpdate , "@GOODSNAME" , DbType . String , enumValue . GOODSNAME ) ;
db . ExecuteNonQuery ( cmdUpdate , tran ) ;
}
}
}
tran . Commit ( ) ;
}
catch ( Exception e )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "保存出现错误,请重试或联系系统管理员" + e . Message ;
return result ;
}
}
result . Success = true ;
result . Message = "保存成功" ;
return result ;
}
public static DBResult DelInvAppDetail ( List < ChInvoiceapplicationDetail > bodyList )
{
var result = new DBResult ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
var cmdInsert =
db . GetSqlStringCommand (
@"delete from ch_fee_invoiceapplication_detail where GID=@GID " ) ;
if ( bodyList ! = null )
{
foreach ( var enumValue in bodyList )
{
cmdInsert . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsert , "@GID" , DbType . String , enumValue . GID ) ;
db . ExecuteNonQuery ( cmdInsert , tran ) ;
}
}
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "删除出现错误,请重试或联系系统管理员" ;
return result ;
}
}
result . Success = true ;
result . Message = "删除成功" + result . Message ;
return result ;
}
public static List < ChFeeExrate > GetAppCurrExrateData ( ChInvoiceapplication headData , List < ChInvoiceapplicationDetail > bodyList )
{
var headList = new List < ChFeeExrate > ( ) ;
if ( headData . INVTYPE = = "原币开票" ) {
foreach ( var body in bodyList )
{
if ( body . CURRENCY ! = "RMB" )
{
ChFeeExrate data = new ChFeeExrate ( ) ;
#region Set DB data to Object
data . CURR = body . CURRENCY ;
data . EXRATE = 0 ;
data . DFEXRATE = 0 ;
# endregion
headList . Add ( data ) ;
}
}
return headList ;
}
var strSql = new StringBuilder ( ) ;
strSql . Append ( " SELECT DISTINCT ORIGCURRENCY CURRENCY,EXCHANGERATE " ) ;
strSql . Append ( " FROM ch_fee_do f where ORIGCURRENCY<>'RMB' AND BILLNO='" + headData . BILLNO + "'" ) ;
return SetCurrExrateData ( strSql ) ;
}
public static DBResult CreateInvList ( ChInvoiceapplication headData , List < ChInvoiceapplicationDetail > bodyList , List < ChFeeExrate > exratelist , string userid , string username , string companyid )
{
var result = new DBResult ( ) ;
if ( bodyList = = null | | bodyList . Count = = 0 ) {
result . Success = false ;
result . Message = "开票列表不能为空!" ;
return result ;
}
var banklist = MsBaseInfoDAL . GetAllBANKList ( "" ) ;
foreach ( var body in bodyList ) {
var head = new ChInvoice_HangXin ( ) ;
head . OPERATOR = userid ;
head . OPERATORNAME = username ;
head . CREATEUSER = userid ;
head . PTORRED = "1" ; //默认为正票
head . SALECORPID = companyid ;
head . PAYEE = username ;
head . CHECKER = username ;
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 ;
head . INVOICETYPE = 2 ;
head . INVOICETYPEREF = "申请发票" ;
head . GID = Guid . NewGuid ( ) . ToString ( ) ;
head . BILLNO = PubSysDAL . GetBillNo ( "0308" ) ;
head . COMPANYID = companyid ;
head . OPERATOR = userid ;
head . OPERATETIME = DateTime . Now ;
head . CREATEUSER = userid ;
head . CREATETIME = DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) ;
head . DbOperationType = DbOperationType . DbotIns ;
head . CURRENCY = "RMB" ;
head . RECVCURR = body . CURRENCY ;
head . INVOICELINE = "p" ;
foreach ( var bank in banklist ) {
if ( bank . CURRENCY = = body . CURRENCY & & bank . ISDEF = = "True" ) {
head . ACCOUNT = bank . BANKACCOUNT ;
}
}
head . CUSTOMERNAME = headData . CUSTOMERNAME ;
head . INVOICECUSTNAME = body . INVOICECUSTNAME ;
head . CUSTRATENO = body . CUSTRATENO ;
head . CUSTADDR = body . CUSTADDR ;
head . CUSTTEL = body . CUSTTEL ;
head . CUSTBANK = body . CUSTBANK ;
head . PUSHEMAIL = body . EMAIL ;
head . PUSHMODE = "0" ;
if ( head . INVOICECUSTNAME = = "" | | head . 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,EMAIL from info_client WHERE SHORTNAME='" + headData . CUSTOMERNAME + "' and CORPID='" + companyid + "'" ) ;
if ( dsHSCODE ! = null )
{
if ( dsHSCODE . Tables [ 0 ] . Rows . Count > 0 )
{
if ( dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "BillRises1" ] . ToString ( ) ! = "" )
head . INVOICECUSTNAME = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "BillRises1" ] . ToString ( ) ;
else head . INVOICECUSTNAME = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "DESCRIPTION" ] . ToString ( ) ;
if ( head . CUSTRATENO = = "" ) head . CUSTRATENO = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "TaxNo" ] . ToString ( ) ;
if ( head . CUSTADDRTEL = = "" )
{
if ( dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "INVADDRTEL" ] . ToString ( ) ! = "" )
head . CUSTADDRTEL = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "INVADDRTEL" ] . ToString ( ) ;
else head . CUSTADDRTEL = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "Addr" ] . ToString ( ) + " " + dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "Tel" ] . ToString ( ) ;
}
if ( string . IsNullOrEmpty ( head . CUSTTEL ) )
{
if ( dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "Tel" ] . ToString ( ) ! = "" )
head . CUSTTEL = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "Tel" ] . ToString ( ) ;
}
if ( string . IsNullOrEmpty ( head . CUSTADDR ) )
{
if ( dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "Addr" ] . ToString ( ) ! = "" )
head . CUSTADDR = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "Addr" ] . ToString ( ) ;
}
if ( head . CUSTBANK = = "" )
{
head . CUSTBANK = dsHSCODE . Tables [ 0 ] . Rows [ 0 ] [ "Rmbbank" ] . ToString ( ) ;
}
}
}
}
if ( string . IsNullOrEmpty ( head . INVITERFACE ) )
{
var INVITERFACE = MsSysInvInterFaceSetDAL . GetData ( "INVOICELINE='" + head . INVOICELINEREF + "'" , "" ) ;
if ( INVITERFACE . INVITERFACE = = "" )
head . INVITERFACE = INVITERFACE . INVITERFACE ;
else head . INVITERFACE = "诺诺发票接口" ;
}
var modb = new ModelObjectDB ( ) ;
result = modb . Save ( head ) ;
if ( result . Success ) {
AddAppDetailNew ( head , headData , body , exratelist , companyid , userid ) ;
ChinvoiceDAL . p_update_Amount ( head . BILLNO , head . GID ) ;
}
}
result . Success = true ;
result . Message = "生成发票成功" + result . Message ;
return result ;
}
public static DBResult AddAppDetailNew ( ChInvoice_HangXin headdata , ChInvoiceapplication head , ChInvoiceapplicationDetail body , List < ChFeeExrate > exratelist , string companyid , string userid )
{
var result = new DBResult ( ) ;
//var invdetailDataList = GetDetailList("PID='" + GID + "'");
var invappdetail = ChinvoiceapplicationDAL . GetBodyList ( "c.BILLNO='" + head . BILLNO + "' and c.ORIGAMOUNT<>ISNULL(c.ORIGSTLAMOUNT,0) " , userid ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
var cmdUpdatefeedo =
db . GetSqlStringCommand (
@" update ch_fee_do set doamount=ISNULL(doamount,0)+@stlamount,origstlamount=ISNULL(origstlamount,0)+@origstlamount where gid=@gid" ) ;
var cmdUpdateFEE =
db . GetSqlStringCommand (
@"UPDATE CH_FEE SET INVOICE=ISNULL(INVOICE,0)+@INVOICE,ORDERINVSETTLEMENT=ISNULL(ORDERINVSETTLEMENT,0)+@INVOICE2 WHERE GID=@GID " ) ;
var cmdUpdateInv =
db . GetSqlStringCommand (
@ "update ch_fee_invoice set REMARK=REMARK+' '+@REMARK
WHERE BILLNO = @BILLNO ");
var cmdInsert =
db . GetSqlStringCommand (
@ "insert into ch_fee_do (GID,BILLNO,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY
, AMOUNT , DOAMOUNT , FEETYPE , CATEGORY , BILLSTATUS , ISDELETED , CREATETIME
, EXCHANGERATE , ORIGCURRENCY , ORIGAMOUNT , INVOICESETTLENO , COMPANYID )
values ( @GID , @BILLNO , @BSNO , @MBLNO , @HBLNO , @CUSTOMERNAME , @BSTYPE , @FEEID , @FEENAME , @CURRENCY
, @AMOUNT , @DOAMOUNT , @FEETYPE , @CATEGORY , @BILLSTATUS , @ISDELETED , @CREATETIME
, @EXCHANGERATE , @ORIGCURRENCY , @ORIGAMOUNT , @INVOICESETTLENO , @COMPANYID ) ");
var cmdUpdateAppDetail =
db . GetSqlStringCommand (
@"UPDATE ch_fee_invoiceapplication_detail set BILLSTATUS='已开',INVBILLNO=@INVBILLNO where GID=@GID" ) ;
var cmdInsertAppSettl =
db . GetSqlStringCommand (
@ "insert into ch_fee_do_payapplication (GID,BILLNO,PAYBILLNO,PAY_FEEDOID,FEEDOID,CREATETIME,PAYDOAMOUNT,CURR)
values ( @GID , @BILLNO , @PAYBILLNO , @PAY_FEEDOID , @FEEDOID , @CREATETIME , @PAYDOAMOUNT , @CURR ) ");
// var cmdUpdateApp =
//db.GetSqlStringCommand(
// @"UPDATE ch_fee_invoiceapplication set BILLSTATUS=3,INVBILLNO=@INVBILLNO,DOINVAMOUNT=ISNULL(DOINVAMOUNT,0)+@DOINVAMOUNT where BILLNO=@BILLNO");
var cmdInsertInvDetail =
db . GetSqlStringCommand (
@ "insert ch_fee_invoicedetail (GID,PID,SerialNo,GOODSNAME,SPEC,UNIT,PKGS,TAXPRICE,PRICE,AMOUNT,TAXRATE,TAX,Remark,GOODCODE)
values ( NEWID ( ) , @PID , @SerialNo , @GOODSNAME , @SPEC , @UNIT , @PKGS , @TAXPRICE , @PRICE , @AMOUNT , @TAXRATE , @TAX , @Remark , @GOODCODE ) ");
var invdetailid = "" ;
decimal amtttl = 0 ;
var stlamount = body . AMOUNT ;
if ( invappdetail ! = null )
{
foreach ( var feedovalue in invappdetail )
{
decimal balamount = 0 ;
decimal origamount = 0 ;
if ( stlamount ! = 0 & & ( head . INVTYPE = = "原币开票" & & feedovalue . ORIGCURRENCY = = body . CURRENCY ) )
{
if ( head . INVTYPE = = "原币开票" )
{
if ( ( feedovalue . ORIGAMOUNT - feedovalue . ORIGSTLAMOUNT ) < = stlamount )
{
balamount = feedovalue . AMOUNT - feedovalue . DOAMOUNT ;
origamount = feedovalue . ORIGAMOUNT - feedovalue . ORIGSTLAMOUNT ;
if ( feedovalue . FEETYPE = = 1 )
stlamount = stlamount - origamount ;
else
stlamount = stlamount + origamount ;
}
else
{
origamount = stlamount ;
balamount = origamount * feedovalue . EXCHANGERATE ;
stlamount = 0 ;
}
}
cmdUpdatefeedo . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdatefeedo , "@stlamount" , DbType . Decimal , balamount ) ;
db . AddInParameter ( cmdUpdatefeedo , "@origstlamount" , DbType . Decimal , origamount ) ;
db . AddInParameter ( cmdUpdatefeedo , "@gid" , DbType . String , feedovalue . FEEDOID ) ;
db . ExecuteNonQuery ( cmdUpdatefeedo , tran ) ;
var feedoid = Guid . NewGuid ( ) . ToString ( ) ;
cmdInsert . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsert , "@GID" , DbType . String , feedoid ) ;
db . AddInParameter ( cmdInsert , "@BILLNO" , DbType . String , headdata . BILLNO ) ;
db . AddInParameter ( cmdInsert , "@BSNO" , DbType . String , feedovalue . BSNO ) ;
db . AddInParameter ( cmdInsert , "@MBLNO" , DbType . String , feedovalue . MBLNO ) ;
db . AddInParameter ( cmdInsert , "@HBLNO" , DbType . String , feedovalue . HBLNO ) ;
db . AddInParameter ( cmdInsert , "@CUSTOMERNAME" , DbType . String , feedovalue . FEEOBJNAME ) ;
db . AddInParameter ( cmdInsert , "@BSTYPE" , DbType . Boolean , false ) ;
db . AddInParameter ( cmdInsert , "@FEEID" , DbType . String , feedovalue . FEEID ) ;
db . AddInParameter ( cmdInsert , "@FEENAME" , DbType . String , feedovalue . FEENAME ) ;
db . AddInParameter ( cmdInsert , "@CURRENCY" , DbType . String , feedovalue . CURRENCY ) ;
if ( feedovalue . ORIGCURRENCY = = "RMB" )
{
db . AddInParameter ( cmdInsert , "@AMOUNT" , DbType . Decimal , origamount ) ;
db . AddInParameter ( cmdInsert , "@DOAMOUNT" , DbType . Decimal , 0 ) ;
db . AddInParameter ( cmdInsert , "@EXCHANGERATE" , DbType . Decimal , 1 ) ;
if ( feedovalue . FEETYPE = = 2 )
amtttl = amtttl - origamount ;
else
amtttl = amtttl + origamount ;
}
else
{
var UExrate = GetExrate ( feedovalue . ORIGCURRENCY , exratelist ) ;
db . AddInParameter ( cmdInsert , "@AMOUNT" , DbType . Decimal , Math . Round ( origamount * UExrate , 2 ) ) ;
db . AddInParameter ( cmdInsert , "@DOAMOUNT" , DbType . Decimal , 0 ) ;
db . AddInParameter ( cmdInsert , "@EXCHANGERATE" , DbType . Decimal , UExrate ) ;
if ( feedovalue . FEETYPE = = 2 )
amtttl = amtttl - Math . Round ( origamount * UExrate , 2 ) ;
else
amtttl = amtttl + Math . Round ( origamount * UExrate , 2 ) ;
}
db . AddInParameter ( cmdInsert , "@FEETYPE" , DbType . Int16 , feedovalue . FEETYPE ) ;
db . AddInParameter ( cmdInsert , "@CATEGORY" , DbType . Int16 , 7 ) ;
db . AddInParameter ( cmdInsert , "@BILLSTATUS" , DbType . Int16 , 1 ) ;
db . AddInParameter ( cmdInsert , "@ISDELETED" , DbType . Boolean , false ) ;
db . AddInParameter ( cmdInsert , "@CREATETIME" , DbType . DateTime , DateTime . Now ) ;
db . AddInParameter ( cmdInsert , "@ORIGCURRENCY" , DbType . String , feedovalue . ORIGCURRENCY ) ;
db . AddInParameter ( cmdInsert , "@ORIGAMOUNT" , DbType . Decimal , origamount ) ;
db . AddInParameter ( cmdInsert , "@INVOICESETTLENO" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsert , "@COMPANYID" , DbType . String , companyid ) ;
db . ExecuteNonQuery ( cmdInsert , tran ) ;
cmdUpdateFEE . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdateFEE , "@GID" , DbType . String , feedovalue . FEEID ) ;
db . AddInParameter ( cmdUpdateFEE , "@INVOICE" , DbType . Decimal , origamount ) ;
db . AddInParameter ( cmdUpdateFEE , "@INVOICE2" , DbType . Decimal , origamount ) ;
db . ExecuteNonQuery ( cmdUpdateFEE , tran ) ;
cmdInsertAppSettl . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsertAppSettl , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsertAppSettl , "@BILLNO" , DbType . String , headdata . BILLNO ) ;
db . AddInParameter ( cmdInsertAppSettl , "@PAYBILLNO" , DbType . String , head . BILLNO ) ;
db . AddInParameter ( cmdInsertAppSettl , "@PAY_FEEDOID" , DbType . String , feedovalue . FEEDOID ) ;
db . AddInParameter ( cmdInsertAppSettl , "@FEEDOID" , DbType . String , feedoid ) ;
db . AddInParameter ( cmdInsertAppSettl , "@CREATETIME" , DbType . DateTime , DateTime . Now ) ;
db . AddInParameter ( cmdInsertAppSettl , "@PAYDOAMOUNT" , DbType . Decimal , origamount ) ;
db . AddInParameter ( cmdInsertAppSettl , "@CURR" , DbType . String , feedovalue . CURRENCY ) ;
db . ExecuteNonQuery ( cmdInsertAppSettl , tran ) ;
}
if ( stlamount ! = 0 & & ( head . INVTYPE = = "人民币折美元开票" | | head . INVTYPE = = "美元折人民币开票" ) )
{
if ( ( feedovalue . AMOUNT - feedovalue . DOAMOUNT ) < = stlamount )
{
balamount = feedovalue . AMOUNT - feedovalue . DOAMOUNT ;
origamount = feedovalue . ORIGAMOUNT - feedovalue . ORIGSTLAMOUNT ;
if ( feedovalue . FEETYPE = = 1 )
stlamount = stlamount - balamount ;
else
stlamount = stlamount + balamount ;
}
else
{
balamount = stlamount ;
origamount = balamount * feedovalue . EXCHANGERATE ;
stlamount = 0 ;
}
cmdUpdatefeedo . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdatefeedo , "@stlamount" , DbType . Decimal , balamount ) ;
db . AddInParameter ( cmdUpdatefeedo , "@origstlamount" , DbType . Decimal , origamount ) ;
db . AddInParameter ( cmdUpdatefeedo , "@gid" , DbType . String , feedovalue . FEEDOID ) ;
db . ExecuteNonQuery ( cmdUpdatefeedo , tran ) ;
var feedoid = Guid . NewGuid ( ) . ToString ( ) ;
cmdInsert . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsert , "@GID" , DbType . String , feedoid ) ;
db . AddInParameter ( cmdInsert , "@BILLNO" , DbType . String , headdata . BILLNO ) ;
db . AddInParameter ( cmdInsert , "@BSNO" , DbType . String , feedovalue . BSNO ) ;
db . AddInParameter ( cmdInsert , "@MBLNO" , DbType . String , feedovalue . MBLNO ) ;
db . AddInParameter ( cmdInsert , "@HBLNO" , DbType . String , feedovalue . HBLNO ) ;
db . AddInParameter ( cmdInsert , "@CUSTOMERNAME" , DbType . String , feedovalue . FEEOBJNAME ) ;
db . AddInParameter ( cmdInsert , "@BSTYPE" , DbType . Boolean , false ) ;
db . AddInParameter ( cmdInsert , "@FEEID" , DbType . String , feedovalue . FEEID ) ;
db . AddInParameter ( cmdInsert , "@FEENAME" , DbType . String , feedovalue . FEENAME ) ;
db . AddInParameter ( cmdInsert , "@CURRENCY" , DbType . String , feedovalue . CURRENCY ) ;
if ( feedovalue . ORIGCURRENCY = = "RMB" )
{
db . AddInParameter ( cmdInsert , "@AMOUNT" , DbType . Decimal , origamount ) ;
db . AddInParameter ( cmdInsert , "@DOAMOUNT" , DbType . Decimal , 0 ) ;
db . AddInParameter ( cmdInsert , "@EXCHANGERATE" , DbType . Decimal , 1 ) ;
if ( feedovalue . FEETYPE = = 2 )
amtttl = amtttl - origamount ;
else
amtttl = amtttl + origamount ;
}
else
{
var UExrate = GetExrate ( feedovalue . ORIGCURRENCY , exratelist ) ;
db . AddInParameter ( cmdInsert , "@AMOUNT" , DbType . Decimal , Math . Round ( origamount * UExrate , 2 ) ) ;
db . AddInParameter ( cmdInsert , "@DOAMOUNT" , DbType . Decimal , 0 ) ;
db . AddInParameter ( cmdInsert , "@EXCHANGERATE" , DbType . Decimal , UExrate ) ;
if ( feedovalue . FEETYPE = = 2 )
amtttl = amtttl - Math . Round ( origamount * UExrate , 2 ) ;
else
amtttl = amtttl + Math . Round ( origamount * UExrate , 2 ) ;
}
db . AddInParameter ( cmdInsert , "@FEETYPE" , DbType . Int16 , feedovalue . FEETYPE ) ;
db . AddInParameter ( cmdInsert , "@CATEGORY" , DbType . Int16 , 7 ) ;
db . AddInParameter ( cmdInsert , "@BILLSTATUS" , DbType . Int16 , 1 ) ;
db . AddInParameter ( cmdInsert , "@ISDELETED" , DbType . Boolean , false ) ;
db . AddInParameter ( cmdInsert , "@CREATETIME" , DbType . DateTime , DateTime . Now ) ;
db . AddInParameter ( cmdInsert , "@ORIGCURRENCY" , DbType . String , feedovalue . ORIGCURRENCY ) ;
db . AddInParameter ( cmdInsert , "@ORIGAMOUNT" , DbType . Decimal , origamount ) ;
db . AddInParameter ( cmdInsert , "@INVOICESETTLENO" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsert , "@COMPANYID" , DbType . String , companyid ) ;
db . ExecuteNonQuery ( cmdInsert , tran ) ;
cmdInsertAppSettl . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsertAppSettl , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsertAppSettl , "@BILLNO" , DbType . String , headdata . BILLNO ) ;
db . AddInParameter ( cmdInsertAppSettl , "@PAYBILLNO" , DbType . String , head . BILLNO ) ;
db . AddInParameter ( cmdInsertAppSettl , "@PAY_FEEDOID" , DbType . String , feedovalue . FEEDOID ) ;
db . AddInParameter ( cmdInsertAppSettl , "@FEEDOID" , DbType . String , feedoid ) ;
db . AddInParameter ( cmdInsertAppSettl , "@CREATETIME" , DbType . DateTime , DateTime . Now ) ;
db . AddInParameter ( cmdInsertAppSettl , "@PAYDOAMOUNT" , DbType . Decimal , origamount ) ;
db . AddInParameter ( cmdInsertAppSettl , "@CURR" , DbType . String , feedovalue . CURRENCY ) ;
db . ExecuteNonQuery ( cmdInsertAppSettl , tran ) ;
cmdUpdateFEE . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdateFEE , "@GID" , DbType . String , feedovalue . FEEID ) ;
db . AddInParameter ( cmdUpdateFEE , "@INVOICE" , DbType . Decimal , origamount ) ;
db . AddInParameter ( cmdUpdateFEE , "@INVOICE2" , DbType . Decimal , origamount ) ;
db . ExecuteNonQuery ( cmdUpdateFEE , tran ) ;
}
}
cmdUpdateAppDetail . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdateAppDetail , "@GID" , DbType . String , body . GID ) ;
db . AddInParameter ( cmdUpdateAppDetail , "@INVBILLNO" , DbType . String , headdata . BILLNO ) ;
db . ExecuteNonQuery ( cmdUpdateAppDetail , tran ) ;
}
//currency = enumValue.CURRENCY;
//rate = enumValue.RATE;
//custrateno = enumValue.CUSTRATENO;
//custaddrtel = enumValue.CUSTADDRTEL;
//custbank = enumValue.CUSTBANK;
//INVOICECATEGORY = enumValue.INVOICECATEGORY;
//ACTUALCUSTOMERNAME = enumValue.ACTUALCUSTOMERNAME;
//INVOICECUSTNAME = enumValue.INVOICECUSTNAME;
//REMARK = REMARK + ' ' + enumValue.REMARK;
//cmdInsert.Parameters.Clear();
//db.AddInParameter(cmdInsert, "@BILLNO", DbType.String, billno);
//db.AddInParameter(cmdInsert, "@AppBILLNO", DbType.String, enumValue.BILLNO);
//db.ExecuteNonQuery(cmdInsert, tran);
//var invdetaillist = GetDetailList("PID='" + enumValue.GID + "'", db, tran);
//var stlinvaount = enumValue.STLINVAMOUNT;
//if (invdetaillist != null)
//{
// foreach (var enumInvDetail in invdetaillist)
// {
// if (stlinvaount != 0)
// {
// bool ishave = false;
// if (enumInvDetail.AMOUNT <= stlinvaount)
// {
// stlinvaount = stlinvaount - enumInvDetail.AMOUNT;
// if (invdetailDataList != null)
// {
// foreach (var invdetailData in invdetailDataList)
// {
// if (invdetailData.GOODSNAME == enumInvDetail.GOODSNAME)
// {
// invdetailData.TAXPRICE = invdetailData.TAXPRICE + enumInvDetail.TAXPRICE;
// invdetailData.PRICE = invdetailData.PRICE + enumInvDetail.PRICE;
// invdetailData.AMOUNT = invdetailData.AMOUNT + enumInvDetail.AMOUNT;
// invdetailData.TAX = invdetailData.TAX + enumInvDetail.TAX;
// ishave = true;
// }
// }
// }
// if (!ishave)
// {
// var invdetailtmp = enumInvDetail;
// invdetailtmp.GID = "*";
// invdetailtmp.PID = GID;
// invdetailDataList.Add(invdetailtmp);
// }
// }
// else
// {
// if (invdetailDataList != null)
// {
// foreach (var invdetailData in invdetailDataList)
// {
// if (invdetailData.GOODSNAME == enumInvDetail.GOODSNAME)
// {
// invdetailData.TAXPRICE = invdetailData.TAXPRICE + enumInvDetail.TAXPRICE * (stlinvaount / enumInvDetail.AMOUNT);
// invdetailData.PRICE = invdetailData.PRICE + enumInvDetail.PRICE * (stlinvaount / enumInvDetail.AMOUNT);
// invdetailData.AMOUNT = invdetailData.AMOUNT + stlinvaount;
// invdetailData.TAX = invdetailData.TAX + enumInvDetail.TAX * (stlinvaount / enumInvDetail.AMOUNT);
// ishave = true;
// }
// }
// }
// if (!ishave)
// {
// var invdetailtmp = enumInvDetail;
// invdetailtmp.GID = "*";
// invdetailtmp.PID = GID;
// invdetailtmp.TAXPRICE = enumInvDetail.TAXPRICE * (stlinvaount / enumInvDetail.AMOUNT);
// invdetailtmp.PRICE = enumInvDetail.PRICE * (stlinvaount / enumInvDetail.AMOUNT);
// invdetailtmp.AMOUNT = stlinvaount;
// invdetailtmp.TAX = enumInvDetail.TAX * (stlinvaount / enumInvDetail.AMOUNT);
// invdetailDataList.Add(invdetailtmp);
// }
// stlinvaount = 0;
// }
// }
// }
//}
//cmdUpdateApp.Parameters.Clear();
//db.AddInParameter(cmdUpdateApp, "@INVBILLNO", DbType.String, billno);
//db.AddInParameter(cmdUpdateApp, "@INVOICENO", DbType.String, invoiceno);
//db.AddInParameter(cmdUpdateApp, "@DOINVAMOUNT", DbType.Decimal, enumValue.DOINVAMOUNT);
//db.AddInParameter(cmdUpdateApp, "@BILLNO", DbType.String, enumValue.BILLNO);
//db.ExecuteNonQuery(cmdUpdateApp, tran);
if ( amtttl ! = 0 )
{
var defGOOD = new CodeGoodInv ( ) ;
if ( ! string . IsNullOrEmpty ( body . GOODSNAME ) )
defGOOD = MsCodeGoodInvDAL . GetData ( " GID='" + body . GOODSNAME + "' " ) ;
else
defGOOD = MsCodeGoodInvDAL . GetData ( " ISDEF='1' and (DEFCURR='' or DEFCURR='" + body . CURRENCY + "') " ) ;
var acctaxrate = head . RATE ;
cmdInsertInvDetail . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsertInvDetail , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsertInvDetail , "@PID" , DbType . String , headdata . GID ) ;
db . AddInParameter ( cmdInsertInvDetail , "@SerialNo" , DbType . Int32 , 1 ) ;
if ( defGOOD . GOODNAME = = "" )
{
db . AddInParameter ( cmdInsertInvDetail , "@GOODSNAME" , DbType . String , "代理运杂费" ) ;
db . AddInParameter ( cmdInsertInvDetail , "@UNIT" , DbType . String , "票" ) ;
}
else
{
db . AddInParameter ( cmdInsertInvDetail , "@GOODSNAME" , DbType . String , defGOOD . GID ) ;
db . AddInParameter ( cmdInsertInvDetail , "@UNIT" , DbType . String , defGOOD . UNIT ) ;
}
db . AddInParameter ( cmdInsertInvDetail , "@SPEC" , DbType . String , defGOOD . SPEC ) ;
db . AddInParameter ( cmdInsertInvDetail , "@PKGS" , DbType . Decimal , 1 ) ;
db . AddInParameter ( cmdInsertInvDetail , "@TAXPRICE" , DbType . Decimal , amtttl ) ;
db . AddInParameter ( cmdInsertInvDetail , "@TAXRATE" , DbType . Decimal , acctaxrate ) ;
if ( acctaxrate = = 0 )
{
db . AddInParameter ( cmdInsertInvDetail , "@PRICE" , DbType . Decimal , amtttl ) ;
db . AddInParameter ( cmdInsertInvDetail , "@AMOUNT" , DbType . Decimal , amtttl ) ;
db . AddInParameter ( cmdInsertInvDetail , "@TAX" , DbType . Decimal , 0 ) ;
}
else
{
var tax = Math . Round ( amtttl / ( 1 + acctaxrate / 100 ) * ( acctaxrate / 100 ) , 2 ) ;
var amount = amtttl - tax ;
// var amount = Math.Round(amtttl / (1 + acctaxrate / 100),2);
db . AddInParameter ( cmdInsertInvDetail , "@PRICE" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdInsertInvDetail , "@AMOUNT" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdInsertInvDetail , "@TAX" , DbType . Decimal , tax ) ;
}
db . AddInParameter ( cmdInsertInvDetail , "@Remark" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsertInvDetail , "@GOODCODE" , DbType . String , defGOOD . GOODCODE ) ;
db . ExecuteNonQuery ( cmdInsertInvDetail , tran ) ;
var cmd = db . GetStoredProcCommand ( "p_update_invapplycationstatus" ) ;
db . AddInParameter ( cmd , "@con_no" , DbType . String , head . BILLNO ) ;
db . ExecuteNonQuery ( cmd , tran ) ;
}
//db.AddInParameter(cmdUpdateInv, "@REMARK", DbType.String, REMARK);
//db.ExecuteNonQuery(cmdUpdateInv, tran);
tran . Commit ( ) ;
}
catch ( Exception E )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "保存出现错误,请重试或联系系统管理员" + E . Message ;
return result ;
}
}
result . Success = true ;
result . Message = "保存成功" + result . Message ;
return result ;
}
public static DBResult DeleteAppDetail ( ChInvoiceapplication headData )
{
var result = new DBResult ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
var cmd = db . GetSqlStringCommand ( "delete from ch_fee_invoiceapplication_detail where LINKGID='" + headData . GID + "'" ) ;
db . ExecuteNonQuery ( cmd , tran ) ;
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "保存出现错误,请重试或联系系统管理员" ;
return result ;
}
}
result . Success = true ;
result . Message = "保存成功" ;
return result ;
}
#region 发票申请费用明细
static public List < Chfee_do_detail > GetBodyList ( string strCondition , string userid , string sort = null )
{
var modPSFEE = MsBaseInfoDAL . GetUserModuleEnable ( "modPSFEE" , userid ) ;
if ( ! modPSFEE )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and f.FEENAME<>'P/S' AND F.FEENAME<>'HP/S' " ;
}
else
{
strCondition = " f.FEENAME<>'P/S' AND F.FEENAME<>'HP/S' " ;
}
}
var strSql = new StringBuilder ( ) ;
strSql . Append ( " SELECT c.GID,c.BSNO,c.FEEID,c.FEENAME,c.CURRENCY,c.AMOUNT,c.DOAMOUNT,c.ORIGCURRENCY,c.ORIGAMOUNT,ISNULL(c.ORIGSTLAMOUNT,0) AS ORIGSTLAMOUNT,c.EXCHANGERATE,f.ACCTAXRATE " ) ;
strSql . Append ( ",c.FEETYPE,c.CUSTOMERNAME as FEEOBJNAME,(CASE C.FEETYPE WHEN 1 THEN '收' ELSE '付' END) AS FEETYPEREF,f.EXCHANGERATE ORIGEXCHANGERATE" ) ;
strSql . Append ( " ,b.OPLBNAME,b.BSSTATUS,b.ACCDATE,b.MBLNO,b.HBLNO,b.CUSTNO" ) ;
strSql . Append ( ",b.CUSTOMERNAME" ) ;
strSql . Append ( ",b.VESSEL,b.VOYNO,b.ETD,b.PORTLOAD" ) ;
strSql . Append ( ",b.PORTDISCHARGE,b.INPUTBY,b.OP,b.CUSTSERVICE" ) ;
strSql . Append ( ",b.DOC,b.SALE,b.ENTERP,(select [NAME] FROM company where GID=B.SALECORPID) BSSALECORP" ) ;
strSql . Append ( ",f.Remark Remark,f.INPUTMODE,f.AUDITDATE,f.SALECORP,c.INVOICESETTLENO,C.BILLNO " ) ;
strSql . Append ( " FROM ch_fee_do c" ) ;
strSql . Append ( " left join v_op_bill b on (b.bsno=c.bsno)" ) ;
strSql . Append ( " left join ch_fee f on (f.gid=c.feeid) " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " where (c.ISDELETED=0 or c.ISDELETED IS NULL) and " + strCondition ) ;
}
var sortstring = DatasetSort . Getsortstring ( sort ) ;
if ( ! string . IsNullOrEmpty ( sortstring ) )
{
strSql . Append ( " order by " + sortstring ) ;
}
else
{
strSql . Append ( " order by b.MBLNO" ) ;
}
return BodySetData ( strSql ) ;
}
private static List < Chfee_do_detail > BodySetData ( StringBuilder strSql )
{
var headList = new List < Chfee_do_detail > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
SqlCommand cmd = new SqlCommand ( ) ;
cmd . CommandText = strSql . ToString ( ) ;
cmd . CommandTimeout = 1200000 ; //要加这一句
using ( IDataReader reader = db . ExecuteReader ( cmd ) )
{
while ( reader . Read ( ) )
{
Chfee_do_detail data = new Chfee_do_detail ( ) ;
#region Set DB data to Object
data . BSNO = Convert . ToString ( reader [ "BSNO" ] ) ;
data . FEEDOID = Convert . ToString ( reader [ "GID" ] ) ;
data . FEEID = Convert . ToString ( reader [ "FEEID" ] ) ;
data . FEENAME = Convert . ToString ( reader [ "FEENAME" ] ) ;
data . FEEOBJNAME = Convert . ToString ( reader [ "FEEOBJNAME" ] ) ;
data . FEETYPE = Convert . ToInt16 ( reader [ "FEETYPE" ] ) ;
data . FEETYPEREF = Convert . ToString ( reader [ "FEETYPEREF" ] ) ;
data . CURRENCY = Convert . ToString ( reader [ "CURRENCY" ] ) ;
data . AMOUNT = Convert . ToDecimal ( reader [ "AMOUNT" ] ) ;
data . DOAMOUNT = Convert . ToDecimal ( reader [ "DOAMOUNT" ] ) ;
data . ORIGCURRENCY = Convert . ToString ( reader [ "ORIGCURRENCY" ] ) ;
data . ORIGAMOUNT = Convert . ToDecimal ( reader [ "ORIGAMOUNT" ] ) ;
data . ORIGSTLAMOUNT = Convert . ToDecimal ( reader [ "ORIGSTLAMOUNT" ] ) ;
data . EXCHANGERATE = Convert . ToDecimal ( reader [ "EXCHANGERATE" ] ) ;
if ( reader [ "ETD" ] ! = DBNull . Value )
data . ETD = Convert . ToString ( reader [ "ETD" ] ) ;
data . ACCDATE = Convert . ToString ( reader [ "ACCDATE" ] ) ;
data . OPLBNAME = Convert . ToString ( reader [ "OPLBNAME" ] ) ;
data . MBLNO = Convert . ToString ( reader [ "MBLNO" ] ) ;
data . HBLNO = Convert . ToString ( reader [ "HBLNO" ] ) ;
data . CUSTNO = Convert . ToString ( reader [ "CUSTNO" ] ) ;
data . CUSTOMERNAME = Convert . ToString ( reader [ "CUSTOMERNAME" ] ) ;
data . VESSEL = Convert . ToString ( reader [ "VESSEL" ] ) ;
data . VOYNO = Convert . ToString ( reader [ "VOYNO" ] ) ;
data . PORTLOAD = Convert . ToString ( reader [ "PORTLOAD" ] ) ;
data . PORTDISCHARGE = Convert . ToString ( reader [ "PORTDISCHARGE" ] ) ;
data . INPUTBY = Convert . ToString ( reader [ "INPUTBY" ] ) ;
data . OP = Convert . ToString ( reader [ "OP" ] ) ;
data . CUSTSERVICE = Convert . ToString ( reader [ "CUSTSERVICE" ] ) ;
data . DOC = Convert . ToString ( reader [ "DOC" ] ) ;
data . SALE = Convert . ToString ( reader [ "SALE" ] ) ;
if ( reader [ "ORIGEXCHANGERATE" ] ! = DBNull . Value )
data . ORIGEXCHANGERATE = Convert . ToDecimal ( reader [ "ORIGEXCHANGERATE" ] ) ;
if ( reader [ "BSSTATUS" ] ! = DBNull . Value )
data . BSSTATUS = Convert . ToBoolean ( reader [ "BSSTATUS" ] ) ;
data . Remark = Convert . ToString ( reader [ "Remark" ] ) ;
data . INPUTMODE = Convert . ToString ( reader [ "INPUTMODE" ] ) ;
if ( reader [ "AUDITDATE" ] ! = DBNull . Value )
data . AUDITDATE = Convert . ToString ( reader [ "AUDITDATE" ] ) ;
data . SALECORP = Convert . ToString ( reader [ "SALECORP" ] ) ;
data . COMPANYNAME = Convert . ToString ( reader [ "BSSALECORP" ] ) ;
data . ENTERP = Convert . ToString ( reader [ "ENTERP" ] ) ;
if ( reader [ "ACCTAXRATE" ] ! = DBNull . Value )
data . ACCTAXRATE = Convert . ToDecimal ( reader [ "ACCTAXRATE" ] ) ;
data . INVOICESETTLENO = Convert . ToString ( reader [ "INVOICESETTLENO" ] ) ;
data . BILLNO = Convert . ToString ( reader [ "BILLNO" ] ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
static public List < TruckChfee_do_detail > GetTruckBodyList ( string strCondition , string sort = null )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " SELECT c.GID,c.BSNO,c.FEEID,c.FEENAME,c.CURRENCY,c.AMOUNT,c.DOAMOUNT,c.ORIGCURRENCY,c.ORIGAMOUNT,ISNULL(c.ORIGSTLAMOUNT,0) AS ORIGSTLAMOUNT,c.EXCHANGERATE " ) ;
strSql . Append ( ",c.FEETYPE,c.CUSTOMERNAME as FEEOBJNAME,(CASE C.FEETYPE WHEN 1 THEN '收' ELSE '付' END) AS FEETYPEREF,(SELECT EXCHANGERATE from ch_fee where GID=c.FEEID) ORIGEXCHANGERATE" ) ;
strSql . Append ( " ,B.BSNO,B.TRANSTYPE,B.TRANSSTATUS,B.CUSTOMERNAME,B.CUSTNO,B.CONTRACTNO,B.ORDERNO,B.BSDATE,B.MBLNO,B.CNTRTOTAL," ) ;
strSql . Append ( "B.ETD,B.ETA,B.OP,B.SALE,B.CUSTSERVICE,B.CUSTATTN,B.CUSTTEL,B.CONSIGNEENAME,B.CONSIGNEEATTN,B.CONSIGNEETEL,B.CONSIGNEEADDR," ) ;
strSql . Append ( "B.PORTLOAD,B.PORTDISCHARGE,B.GOODSNAME,B.KGS,B.NETWEIGHT,B.CBM,B.PKGS,B.KINDPKGS,B.TRUCKER,B.TRUCKNO" ) ;
strSql . Append ( ",f.Remark Remark,f.INPUTMODE " ) ;
strSql . Append ( " FROM ch_fee_do c" ) ;
strSql . Append ( " left join v_op_truck_bulk b on (b.bsno=c.bsno)" ) ;
strSql . Append ( " left join ch_fee f on (f.gid=c.feeid) " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " where (c.ISDELETED=0 or c.ISDELETED IS NULL) and " + strCondition ) ;
}
var sortstring = DatasetSort . Getsortstring ( sort ) ;
if ( ! string . IsNullOrEmpty ( sortstring ) )
{
strSql . Append ( " order by " + sortstring ) ;
}
else
{
strSql . Append ( " order by b.MBLNO" ) ;
}
return TruckBodySetData ( strSql ) ;
}
private static List < TruckChfee_do_detail > TruckBodySetData ( StringBuilder strSql )
{
var headList = new List < TruckChfee_do_detail > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
TruckChfee_do_detail data = new TruckChfee_do_detail ( ) ;
#region Set DB data to Object
data . BSNO = Convert . ToString ( reader [ "BSNO" ] ) ;
data . FEEDOID = Convert . ToString ( reader [ "GID" ] ) ;
data . FEEID = Convert . ToString ( reader [ "FEEID" ] ) ;
data . FEENAME = Convert . ToString ( reader [ "FEENAME" ] ) ;
data . FEEOBJNAME = Convert . ToString ( reader [ "FEEOBJNAME" ] ) ;
data . FEETYPE = Convert . ToInt16 ( reader [ "FEETYPE" ] ) ;
data . FEETYPEREF = Convert . ToString ( reader [ "FEETYPEREF" ] ) ;
data . CURRENCY = Convert . ToString ( reader [ "CURRENCY" ] ) ;
data . AMOUNT = Convert . ToDecimal ( reader [ "AMOUNT" ] ) ;
data . DOAMOUNT = Convert . ToDecimal ( reader [ "DOAMOUNT" ] ) ;
data . ORIGCURRENCY = Convert . ToString ( reader [ "ORIGCURRENCY" ] ) ;
data . ORIGAMOUNT = Convert . ToDecimal ( reader [ "ORIGAMOUNT" ] ) ;
data . ORIGSTLAMOUNT = Convert . ToDecimal ( reader [ "ORIGSTLAMOUNT" ] ) ;
data . EXCHANGERATE = Convert . ToDecimal ( reader [ "EXCHANGERATE" ] ) ;
if ( reader [ "ETD" ] ! = DBNull . Value )
data . ETD = Convert . ToString ( reader [ "ETD" ] ) ;
data . ORDERNO = Convert . ToString ( reader [ "ORDERNO" ] ) ;
data . CONTRACTNO = Convert . ToString ( reader [ "CONTRACTNO" ] ) ;
data . CUSTATTN = Convert . ToString ( reader [ "CUSTATTN" ] ) ;
data . MBLNO = Convert . ToString ( reader [ "MBLNO" ] ) ;
data . CUSTTEL = Convert . ToString ( reader [ "CUSTTEL" ] ) ;
data . CUSTNO = Convert . ToString ( reader [ "CUSTNO" ] ) ;
data . CONSIGNEENAME = Convert . ToString ( reader [ "CONSIGNEENAME" ] ) ;
data . CUSTOMERNAME = Convert . ToString ( reader [ "CUSTOMERNAME" ] ) ;
data . CONSIGNEEATTN = Convert . ToString ( reader [ "CONSIGNEEATTN" ] ) ;
data . CONSIGNEETEL = Convert . ToString ( reader [ "CONSIGNEETEL" ] ) ;
data . PORTLOAD = Convert . ToString ( reader [ "PORTLOAD" ] ) ;
data . PORTDISCHARGE = Convert . ToString ( reader [ "PORTDISCHARGE" ] ) ;
data . CONSIGNEEADDR = Convert . ToString ( reader [ "CONSIGNEEADDR" ] ) ;
data . OP = Convert . ToString ( reader [ "OP" ] ) ;
data . CUSTSERVICE = Convert . ToString ( reader [ "CUSTSERVICE" ] ) ;
data . SALE = Convert . ToString ( reader [ "SALE" ] ) ;
if ( reader [ "ORIGEXCHANGERATE" ] ! = DBNull . Value )
data . ORIGEXCHANGERATE = Convert . ToDecimal ( reader [ "ORIGEXCHANGERATE" ] ) ;
data . REMARK = Convert . ToString ( reader [ "REMARK" ] ) ;
data . CNTRTOTAL = Convert . ToString ( reader [ "CNTRTOTAL" ] ) ;
data . GOODSNAME = Convert . ToString ( reader [ "GOODSNAME" ] ) ;
data . TRUCKER = Convert . ToString ( reader [ "TRUCKER" ] ) ;
data . TRUCKNO = Convert . ToString ( reader [ "TRUCKNO" ] ) ;
if ( reader [ "PKGS" ] ! = DBNull . Value )
data . PKGS = Convert . ToInt32 ( reader [ "PKGS" ] ) ;
if ( reader [ "KGS" ] ! = DBNull . Value )
data . KGS = Convert . ToDecimal ( reader [ "KGS" ] ) ;
if ( reader [ "CBM" ] ! = DBNull . Value )
data . CBM = Convert . ToDecimal ( reader [ "CBM" ] ) ;
if ( reader [ "NETWEIGHT" ] ! = DBNull . Value )
data . NETWEIGHT = Convert . ToDecimal ( reader [ "NETWEIGHT" ] ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
# endregion
#region 明细金额币别合计
static public List < Chfee_do_Sum > GetBodySumList ( string strCondition )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " SELECT c.FEETYPE,(CASE C.FEETYPE WHEN 1 THEN '收' ELSE '付' END) AS FEETYPEREF,c.ORIGCURRENCY CURRENCY,Sum(c.ORIGAMOUNT) AMOUNT " ) ;
strSql . Append ( " FROM ch_fee_do c" ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " where (c.ISDELETED=0 or c.ISDELETED IS NULL) and " + strCondition ) ;
}
strSql . Append ( " Group by c.FEETYPE,c.ORIGCURRENCY" ) ;
return BodySumSetData ( strSql ) ;
}
private static List < Chfee_do_Sum > BodySumSetData ( StringBuilder strSql )
{
var headList = new List < Chfee_do_Sum > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
Chfee_do_Sum data = new Chfee_do_Sum ( ) ;
#region Set DB data to Object
data . FEETYPE = Convert . ToInt16 ( reader [ "FEETYPE" ] ) ;
data . FEETYPEREF = Convert . ToString ( reader [ "FEETYPEREF" ] ) ;
data . CURRENCY = Convert . ToString ( reader [ "CURRENCY" ] ) ;
data . AMOUNT = Convert . ToDecimal ( reader [ "AMOUNT" ] ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
# endregion
#region Inquery FeeDataList
static public List < BillChfeeDetail > GetFeeDataList ( string strCondition , string duino , string userid , string usercode , string orgcode , string sort )
{
var rangstr = GetRangDAStr ( "index" , userid , usercode , orgcode ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstr ;
}
else
{
strCondition = rangstr ;
}
}
var INVISNOTSTL = MsSysParamSetDAL . GetData ( "PARAMNAME='INVISNOTSTL'" ) ;
var strSql = new StringBuilder ( ) ;
if ( ! string . IsNullOrEmpty ( duino ) )
{
strSql . Append ( "SELECT " ) ;
strSql . Append ( "b.BSNO,b.OPLB,b.OPLBNAME,b.BSSTATUS,b.ACCDATE,b.MBLNO,b.HBLNO,b.CUSTNO" ) ;
strSql . Append ( ",b.CUSTOMERNAME,b.CUSTOMNO" ) ;
strSql . Append ( ",b.VESSEL,b.VOYNO,b.ETD,b.PORTLOAD" ) ;
strSql . Append ( ",b.PORTDISCHARGE,b.INPUTBY,b.OP,b.CUSTSERVICE" ) ;
strSql . Append ( ",b.DOC,b.SALE" ) ;
strSql . Append ( ",f.GID AS CH_ID,f.FeeType" ) ;
strSql . Append ( ",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99020 and EnumValueID=f.FeeType) as FeeType_Ref" ) ;
strSql . Append ( ",f.feeName,f.customerName as FeeObjName,f.amount,f.currency,f.exChangerate,f.AccTaxRate" ) ;
if ( INVISNOTSTL . PARAMVALUE = = "1" )
{
strSql . Append ( ",f.amount-isnull(f.SETTLEMENT,0)-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) as balamount" ) ;
}
else
strSql . Append ( ",f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) as balamount" ) ;
strSql . Append ( ",d.DEBITAMOUNT from ch_fee f " ) ;
strSql . Append ( " left join v_op_bill b on (b.bsno=f.bsno) " ) ;
strSql . Append ( " left join ch_dui_detail d on (d.CH_ID=f.GID) WHERE 1=1 AND D.DUINO='" + duino + "' AND ISNULL(D.INVNO,'')='' " ) ;
}
else
{
strSql . Append ( "SELECT " ) ;
strSql . Append ( "b.BSNO,b.OPLB,b.OPLBNAME,b.BSSTATUS,b.ACCDATE,b.MBLNO,b.HBLNO,b.CUSTNO" ) ;
strSql . Append ( ",b.CUSTOMERNAME,b.CUSTOMNO" ) ;
strSql . Append ( ",b.VESSEL,b.VOYNO,b.ETD,b.PORTLOAD" ) ;
strSql . Append ( ",b.PORTDISCHARGE,b.INPUTBY,b.OP,b.CUSTSERVICE" ) ;
strSql . Append ( ",b.DOC,b.SALE" ) ;
strSql . Append ( ",f.GID AS CH_ID,f.FeeType" ) ;
strSql . Append ( ",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99020 and EnumValueID=f.FeeType) as FeeType_Ref" ) ;
strSql . Append ( ",f.feeName,f.customerName as FeeObjName,f.amount,f.currency,f.exChangerate,f.AccTaxRate" ) ;
if ( INVISNOTSTL . PARAMVALUE = = "1" )
{
strSql . Append ( ",f.amount-isnull(f.SETTLEMENT,0)-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) as balamount" ) ;
}
else
strSql . Append ( ",f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) as balamount" ) ;
strSql . Append ( ",0 DEBITAMOUNT from ch_fee f " ) ;
strSql . Append ( " left join v_op_bill b on (b.bsno=f.bsno) WHERE 1=1 " ) ;
}
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " AND " + strCondition ) ;
}
var sortstring = DatasetSort . Getsortstring ( sort ) ;
if ( ! string . IsNullOrEmpty ( sortstring ) )
{
strSql . Append ( " order by " + sortstring ) ;
}
else
{
strSql . Append ( " order by b.BsNo" ) ;
}
return SetFeeData ( strSql , duino ) ;
}
private static List < BillChfeeDetail > SetFeeData ( StringBuilder strSql , string duino )
{
var headList = new List < BillChfeeDetail > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
BillChfeeDetail data = new BillChfeeDetail ( ) ;
#region Set DB data to Object
data . BSNO = Convert . ToString ( reader [ "BSNO" ] ) ;
if ( reader [ "ETD" ] ! = DBNull . Value )
data . ETD = Convert . ToString ( reader [ "ETD" ] ) ;
data . ACCDATE = Convert . ToString ( reader [ "ACCDATE" ] ) ;
data . OPLB = Convert . ToString ( reader [ "OPLB" ] ) ;
data . OPLBNAME = Convert . ToString ( reader [ "OPLBNAME" ] ) ;
data . MBLNO = Convert . ToString ( reader [ "MBLNO" ] ) ;
data . HBLNO = Convert . ToString ( reader [ "HBLNO" ] ) ;
data . CUSTNO = Convert . ToString ( reader [ "CUSTNO" ] ) ;
data . CUSTOMNO = Convert . ToString ( reader [ "CUSTOMNO" ] ) ;
data . CUSTOMERNAME = Convert . ToString ( reader [ "CUSTOMERNAME" ] ) ;
data . VESSEL = Convert . ToString ( reader [ "VESSEL" ] ) ;
data . VOYNO = Convert . ToString ( reader [ "VOYNO" ] ) ;
data . PORTLOAD = Convert . ToString ( reader [ "PORTLOAD" ] ) ;
data . PORTDISCHARGE = Convert . ToString ( reader [ "PORTDISCHARGE" ] ) ;
data . INPUTBY = Convert . ToString ( reader [ "INPUTBY" ] ) ;
data . OP = Convert . ToString ( reader [ "OP" ] ) ;
data . CUSTSERVICE = Convert . ToString ( reader [ "CUSTSERVICE" ] ) ;
data . DOC = Convert . ToString ( reader [ "DOC" ] ) ;
data . SALE = Convert . ToString ( reader [ "SALE" ] ) ;
data . BSSTATUS = Convert . ToBoolean ( reader [ "BSSTATUS" ] ) ;
data . CH_ID = Convert . ToString ( reader [ "CH_ID" ] ) ;
data . FeeType = Convert . ToInt16 ( reader [ "FeeType" ] ) ;
data . FeeType_Ref = Convert . ToString ( reader [ "FeeType_Ref" ] ) ;
data . FeeName = Convert . ToString ( reader [ "feeName" ] ) ;
data . FeeObjName = Convert . ToString ( reader [ "FeeObjName" ] ) ;
data . Amount = Convert . ToDecimal ( reader [ "Amount" ] ) ;
if ( reader [ "BalAmount" ] ! = DBNull . Value )
data . BalAmount = Convert . ToDecimal ( reader [ "BalAmount" ] ) ;
if ( reader [ "BalAmount" ] ! = DBNull . Value )
data . StlAmount = Convert . ToDecimal ( reader [ "BalAmount" ] ) ;
data . Currency = Convert . ToString ( reader [ "Currency" ] ) ;
data . ExChangerate = Convert . ToDecimal ( reader [ "exChangerate" ] ) ;
if ( reader [ "AccTaxRate" ] ! = DBNull . Value )
data . AccTaxRate = Convert . ToDecimal ( reader [ "AccTaxRate" ] ) ;
if ( reader [ "DEBITAMOUNT" ] ! = DBNull . Value )
data . DEBITAMOUNT = Convert . ToDecimal ( reader [ "DEBITAMOUNT" ] ) ;
if ( ! string . IsNullOrEmpty ( duino ) )
{
decimal balamount = 0 ;
if ( data . Amount > = 0 )
{
if ( data . BalAmount > data . DEBITAMOUNT ) balamount = data . DEBITAMOUNT ; else balamount = data . BalAmount ;
}
else
{
if ( data . BalAmount < data . DEBITAMOUNT ) balamount = data . DEBITAMOUNT ; else balamount = data . BalAmount ;
}
data . BalAmount = balamount ;
data . StlAmount = balamount ;
}
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
# endregion
#region 添加列表
static public List < BillCustDetail > GetAddBillList ( int start , int limit , string strCondition , string duino , string userid , string usercode , string orgcode , string sort )
{
var rangstr = GetRangDAStr ( "index" , userid , usercode , orgcode ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstr ;
}
else
{
strCondition = rangstr ;
}
}
var PAYUSEFEERANGE = MsSysParamSetDAL . GetData ( "PARAMNAME='INVAPPFEERANGE'" ) ;
if ( PAYUSEFEERANGE . PARAMVALUE = = "1" )
{
var rangstrfee = GetRangAddFeeDAStr ( userid , usercode , orgcode ) ;
if ( ! string . IsNullOrEmpty ( rangstrfee ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstrfee ;
}
else
{
strCondition = rangstrfee ;
}
}
}
var modPSFEE = MsBaseInfoDAL . GetUserModuleEnable ( "modPSFEE" , userid ) ;
if ( ! modPSFEE )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and f.FEENAME<>'P/S' AND F.FEENAME<>'HP/S' " ;
}
else
{
strCondition = " f.FEENAME<>'P/S' AND F.FEENAME<>'HP/S' " ;
}
}
var INVISNOTSTL = MsSysParamSetDAL . GetData ( "PARAMNAME='INVISNOTSTL'" ) ;
var strSql = new StringBuilder ( ) ;
//strSql.Append(@"SELECT * from (SELECT row_number() over (");
//var sortstring = DatasetSort.Getsortstring(sort);
//if (!string.IsNullOrEmpty(sortstring))
//{
// sortstring = sortstring.Replace("FEEOBJNAME", "F.CUSTOMERNAME").Replace("COMPANYID", "b.SALECORPID").Replace("COMPANYNAME", "b.SALECORPID");
// strSql.Append(" order by " + sortstring);
//}
//else
//{
// strSql.Append(" order by f.BsNo");
//}
//strSql.Append(@") as num , ");
strSql . Append ( "SELECT f.BSNO,b.OPLB,b.OPLBNAME,b.BSSTATUS,b.ACCDATE,b.MBLNO,b.HBLNO,b.CUSTNO,b.ORDERNO" ) ;
strSql . Append ( ",b.CUSTOMERNAME" ) ;
strSql . Append ( ",b.VESSEL,b.VOYNO,b.ETD,b.PORTLOAD" ) ;
strSql . Append ( ",b.PORTDISCHARGE,b.INPUTBY,b.OP,b.CUSTSERVICE,b.INVNO" ) ;
strSql . Append ( ",b.DOC,b.SALE,b.ENTERP,b.CUSTOMNO,b.SALECORPID,(SELECT [NAME] from [COMPANY] WHERE GID=b.SALECORPID) SALECORP" ) ;
strSql . Append ( ",F.CUSTOMERNAME AS CUSTNAME " ) ;
strSql . Append ( ",G.RMBDR RMBDR," ) ;
strSql . Append ( "G.RMBCR RMBCR," ) ;
if ( INVISNOTSTL . PARAMVALUE = = "1" )
{
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN f.amount-isnull(f.SETTLEMENT,0)-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END) ELSE 0 END),0) AS BALRMBDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN f.amount-isnull(f.SETTLEMENT,0)-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALRMBCR," ) ;
}
else
{
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END) ELSE 0 END),0) AS BALRMBDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALRMBCR," ) ;
}
strSql . Append ( "G.USDDR," ) ;
strSql . Append ( "G.USDCR," ) ;
if ( INVISNOTSTL . PARAMVALUE = = "1" )
{
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN f.amount-isnull(f.SETTLEMENT,0)-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALUSDDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN f.amount-isnull(f.SETTLEMENT,0)-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALUSDCR," ) ;
}
else
{
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALUSDDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALUSDCR," ) ;
}
strSql . Append ( " G.OTDR," ) ;
strSql . Append ( " G.OTCR," ) ;
if ( INVISNOTSTL . PARAMVALUE = = "1" )
{
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE f.amount-isnull(f.SETTLEMENT,0)-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) END) END) ELSE 0 END),0) AS BALOTDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE f.amount-isnull(f.SETTLEMENT,0)-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) END) END) ELSE 0 END),0) AS BALOTCR" ) ;
}
else
{
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) END) END) ELSE 0 END),0) AS BALOTDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) END) END) ELSE 0 END),0) AS BALOTCR" ) ;
}
strSql . Append ( ",isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT,0) ELSE 0 END) ELSE 0 END),0) AS RMBDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT,0) ELSE 0 END) ELSE 0 END),0) AS RMBCR," ) ;
if ( INVISNOTSTL . PARAMVALUE = = "1" )
{
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN f.amount-isnull(f.SETTLEMENT,0)-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END) ELSE 0 END),0) AS BALRMBDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN f.amount-isnull(f.SETTLEMENT,0)-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALRMBCR," ) ;
}
else
{
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END) ELSE 0 END),0) AS BALRMBDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALRMBCR," ) ;
}
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT,0) ELSE 0 END)ELSE 0 END),0) AS USDDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT,0) ELSE 0 END)ELSE 0 END),0) AS USDCR," ) ;
if ( INVISNOTSTL . PARAMVALUE = = "1" )
{
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN f.amount-isnull(f.SETTLEMENT,0)-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALUSDDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN f.amount-isnull(f.SETTLEMENT,0)-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALUSDCR," ) ;
}
else
{
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALUSDDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALUSDCR," ) ;
}
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE ISNULL(AMOUNT,0) END) END)ELSE 0 END),0) AS OTDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE ISNULL(AMOUNT,0) END) END)ELSE 0 END),0) AS OTCR," ) ;
if ( INVISNOTSTL . PARAMVALUE = = "1" )
{
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE f.amount-isnull(f.SETTLEMENT,0)-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) END) END) ELSE 0 END),0) AS BALOTDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE f.amount-isnull(f.SETTLEMENT,0)-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) END) END) ELSE 0 END),0) AS BALOTCR" ) ;
}
else
{
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) END) END) ELSE 0 END),0) AS BALOTDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) END) END) ELSE 0 END),0) AS BALOTCR" ) ;
}
if ( ! string . IsNullOrEmpty ( duino ) )
{
strSql . Append ( ",isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN d.DEBITAMOUNT ELSE 0 END) ELSE 0 END),0) AS DUIRMBDR" ) ;
strSql . Append ( ",isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN d.DEBITAMOUNT ELSE 0 END)ELSE 0 END),0) AS DUIRMBCR" ) ;
strSql . Append ( ",isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN d.DEBITAMOUNT ELSE 0 END)ELSE 0 END),0) AS DUIUSDDR" ) ;
strSql . Append ( ",isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN d.DEBITAMOUNT ELSE 0 END)ELSE 0 END),0) AS DUIUSDCR" ) ;
strSql . Append ( ",isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE d.DEBITAMOUNT END) END) ELSE 0 END),0) AS DUIOTDR" ) ;
strSql . Append ( ",isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE d.DEBITAMOUNT END) END) ELSE 0 END),0) AS DUIOTCR" ) ;
strSql . Append ( " FROM CH_FEE f " ) ;
strSql . Append ( " INNER JOIN V_OP_BILL B ON (F.BSNO=B.BSNO) " ) ;
strSql . Append ( " LEFT JOIN v_op_gain_cust_sum g ON (g.BSNO=B.BSNO and g.CUSTOMERNAME=f.CUSTOMERNAME) " ) ;
strSql . Append ( " left join ch_dui_detail d on (d.CH_ID=f.GID) WHERE D.DUINO='" + duino + "' AND ISNULL(D.INVNO,'')='' " ) ;
strSql . Append ( " and f.ISINVOICE<>1 and (f.AMOUNT<>(ISNULL(f.INVOICE,0)+ISNULL(f.ORDERINVOICE,0)-ISNULL(f.ORDERINVSETTLEMENT,0))) and ISNULL(f.INVLINKGID,'')='' " ) ;
}
else
{
strSql . Append ( ",0 AS DUIRMBDR" ) ;
strSql . Append ( ",0 AS DUIRMBCR" ) ;
strSql . Append ( ",0 AS DUIUSDDR" ) ;
strSql . Append ( ",0 AS DUIUSDCR" ) ;
strSql . Append ( ",0 AS DUIOTDR" ) ;
strSql . Append ( ",0 AS DUIOTCR" ) ;
strSql . Append ( " FROM CH_FEE f " ) ;
strSql . Append ( " INNER JOIN V_OP_BILL B ON (F.BSNO=B.BSNO) " ) ;
strSql . Append ( " LEFT JOIN v_op_gain_cust_sum g ON (g.BSNO=B.BSNO and g.CUSTOMERNAME=f.CUSTOMERNAME) " ) ;
strSql . Append ( " where f.ISINVOICE<>1 and (f.AMOUNT<>(ISNULL(f.INVOICE,0)+ISNULL(f.ORDERINVOICE,0)-ISNULL(f.ORDERINVSETTLEMENT,0))) and ISNULL(f.INVLINKGID,'')='' " ) ;
}
var InvAppFeeStatus = MsSysParamSetDAL . GetData ( "PARAMNAME='InvAppFeeStatus'" ) ;
if ( InvAppFeeStatus . PARAMVALUE ! = "2" )
strSql . Append ( " and f.FEESTATUS IN (0,8,9) " ) ;
else
strSql . Append ( " and f.FEESTATUS IN (2,0,8,9) " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " and " + strCondition ) ;
}
if ( INVISNOTSTL . PARAMVALUE = = "1" )
{
strSql . Append ( " and ISNULL(f.AMOUNT,0)<>ISNULL(f.SETTLEMENT,0) " ) ;
}
var isopen = MsBaseInfoDAL . GetUserModuleEnable ( "modFeenotopen" , userid ) ;
if ( isopen = = false )
{
strSql . Append ( " AND ( f.ENTEROPERATOR='" + userid + "' OR ( f.ENTEROPERATOR<>'" + userid + "' AND ISNULL(f.ISOPEN,0)=0)) " ) ;
}
strSql . Append ( "GROUP BY f.BSNO,b.OPLB,b.OPLBNAME,b.BSSTATUS,b.ACCDATE,b.MBLNO,b.HBLNO,b.CUSTNO,b.ORDERNO" ) ;
strSql . Append ( ",b.CUSTOMERNAME" ) ;
strSql . Append ( ",b.VESSEL,b.VOYNO,b.ETD,b.PORTLOAD" ) ;
strSql . Append ( ",b.PORTDISCHARGE,b.INPUTBY,b.OP,b.CUSTSERVICE,b.INVNO" ) ;
strSql . Append ( ",b.DOC,b.SALE,b.ENTERP,b.CUSTOMNO,b.SALECORPID,f.CUSTOMERNAME" ) ;
strSql . Append ( ",G.RMBDR,G.RMBCR,G.USDDR,G.USDCR,G.OTDR,G.OTCR" ) ;
var sortstring = DatasetSort . Getsortstring ( sort ) ;
if ( ! string . IsNullOrEmpty ( sortstring ) )
{
sortstring = sortstring . Replace ( "FEEOBJNAME" , "F.CUSTOMERNAME" ) . Replace ( "COMPANYID" , "b.SALECORPID" ) . Replace ( "COMPANYNAME" , "b.SALECORPID" ) ;
strSql . Append ( " order by " + sortstring ) ;
}
else
{
strSql . Append ( " order by f.BsNo" ) ;
}
//strSql.Append( @")as t ");
//strSql.Append(string.Format("where t.num>={0} and t.num<={1} ", start, start + limit)); //
return SetAddBillData ( strSql , duino ) ;
}
public static int getAddBillTotalCount ( string strCondition , string duino , string userid , string usercode , string companyid )
{
var rangstr = GetRangDAStr ( "index" , userid , usercode , companyid ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstr ;
}
else
{
strCondition = rangstr ;
}
}
var PAYUSEFEERANGE = MsSysParamSetDAL . GetData ( "PARAMNAME='INVAPPFEERANGE'" ) ;
if ( PAYUSEFEERANGE . PARAMVALUE = = "1" )
{
var rangstrfee = GetRangAddFeeDAStr ( userid , usercode , companyid ) ;
if ( ! string . IsNullOrEmpty ( rangstrfee ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstrfee ;
}
else
{
strCondition = rangstrfee ;
}
}
}
var modPSFEE = MsBaseInfoDAL . GetUserModuleEnable ( "modPSFEE" , userid ) ;
if ( ! modPSFEE )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and f.FEENAME<>'P/S' AND F.FEENAME<>'HP/S' " ;
}
else
{
strCondition = " f.FEENAME<>'P/S' AND F.FEENAME<>'HP/S' " ;
}
}
StringBuilder strSql = new StringBuilder ( ) ;
if ( ! string . IsNullOrEmpty ( duino ) )
{
strSql . Append ( "SELECT COUNT(*) FROM (select b.BSNO,f.CUSTOMERNAME " ) ;
strSql . Append ( " FROM CH_FEE f " ) ;
strSql . Append ( " INNER JOIN V_OP_BILL B ON (F.BSNO=B.BSNO) " ) ;
strSql . Append ( " left join ch_dui_detail d on (d.CH_ID=f.GID) WHERE D.DUINO='" + duino + "' AND ISNULL(D.INVNO,'')='' " ) ;
strSql . Append ( " and f.ISINVOICE<>1 and f.FEESTATUS IN (0,8,9) and (f.AMOUNT<>(ISNULL(f.INVOICE,0)+ISNULL(f.ORDERINVOICE,0)-ISNULL(f.ORDERINVSETTLEMENT,0))) and ISNULL(f.INVLINKGID,'')='' " ) ;
}
else
{
strSql . Append ( "SELECT COUNT(*) FROM (select b.BSNO,f.CUSTOMERNAME " ) ;
strSql . Append ( " FROM CH_FEE f " ) ;
strSql . Append ( " INNER JOIN V_OP_BILL B ON (F.BSNO=B.BSNO) " ) ;
strSql . Append ( " where f.ISINVOICE<>1 and f.FEESTATUS IN (0,8,9) and (f.AMOUNT<>(ISNULL(f.INVOICE,0)+ISNULL(f.ORDERINVOICE,0)-ISNULL(f.ORDERINVSETTLEMENT,0))) and ISNULL(f.INVLINKGID,'')='' " ) ;
}
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " and " + strCondition ) ;
}
strSql . Append ( "GROUP BY b.BSNO,f.CUSTOMERNAME) AS T " ) ;
int cnt = 0 ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
cnt = Convert . ToInt32 ( reader [ 0 ] ) ;
}
}
return cnt ;
}
private static List < BillCustDetail > SetAddBillData ( StringBuilder strSql , string duino )
{
var headList = new List < BillCustDetail > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
BillCustDetail data = new BillCustDetail ( ) ;
#region Set DB data to Object
data . BSNO = Convert . ToString ( reader [ "BSNO" ] ) ;
if ( reader [ "ETD" ] ! = DBNull . Value )
data . ETD = Convert . ToString ( reader [ "ETD" ] ) ;
data . ACCDATE = Convert . ToString ( reader [ "ACCDATE" ] ) ;
data . OPLB = Convert . ToString ( reader [ "OPLB" ] ) ;
data . OPLBNAME = Convert . ToString ( reader [ "OPLBNAME" ] ) ;
data . MBLNO = Convert . ToString ( reader [ "MBLNO" ] ) ;
data . HBLNO = Convert . ToString ( reader [ "HBLNO" ] ) ;
data . CUSTNO = Convert . ToString ( reader [ "CUSTNO" ] ) ;
data . ORDERNO = Convert . ToString ( reader [ "ORDERNO" ] ) ;
data . CUSTOMERNAME = Convert . ToString ( reader [ "CUSTOMERNAME" ] ) ;
data . VESSEL = Convert . ToString ( reader [ "VESSEL" ] ) ;
data . VOYNO = Convert . ToString ( reader [ "VOYNO" ] ) ;
data . PORTLOAD = Convert . ToString ( reader [ "PORTLOAD" ] ) ;
data . PORTDISCHARGE = Convert . ToString ( reader [ "PORTDISCHARGE" ] ) ;
data . INPUTBY = Convert . ToString ( reader [ "INPUTBY" ] ) ;
data . OP = Convert . ToString ( reader [ "OP" ] ) ;
data . CUSTSERVICE = Convert . ToString ( reader [ "CUSTSERVICE" ] ) ;
data . DOC = Convert . ToString ( reader [ "DOC" ] ) ;
data . SALE = Convert . ToString ( reader [ "SALE" ] ) ;
if ( reader [ "BSSTATUS" ] ! = DBNull . Value )
data . BSSTATUS = Convert . ToBoolean ( reader [ "BSSTATUS" ] ) ;
data . FEEOBJNAME = Convert . ToString ( reader [ "CUSTNAME" ] ) ;
data . COMPANYID = Convert . ToString ( reader [ "SALECORPID" ] ) ;
data . COMPANYNAME = Convert . ToString ( reader [ "SALECORP" ] ) ;
data . INVNO = Convert . ToString ( reader [ "INVNO" ] ) ;
if ( reader [ "RMBDR" ] ! = DBNull . Value )
data . RMBDrAmount = Convert . ToDecimal ( reader [ "RMBDR" ] ) ;
if ( reader [ "BALRMBDR" ] ! = DBNull . Value )
data . RMBDrBalAmount = Convert . ToDecimal ( reader [ "BALRMBDR" ] ) - Convert . ToDecimal ( reader [ "BALRMBCR" ] ) ;
if ( reader [ "BALRMBDR" ] ! = DBNull . Value )
data . RMBDrDoAmount = Convert . ToDecimal ( reader [ "BALRMBDR" ] ) - Convert . ToDecimal ( reader [ "BALRMBCR" ] ) ;
if ( ! string . IsNullOrEmpty ( duino ) )
{
decimal balamount = 0 ;
if ( reader [ "DUIRMBDR" ] ! = DBNull . Value )
data . RMBDrDoAmount = Convert . ToDecimal ( reader [ "DUIRMBDR" ] ) ;
if ( data . RMBDrAmount > 0 )
{
if ( data . RMBDrBalAmount > data . RMBDrDoAmount ) balamount = data . RMBDrDoAmount ; else balamount = data . RMBDrBalAmount ;
}
else
{
if ( data . RMBDrBalAmount < data . RMBDrDoAmount ) balamount = data . RMBDrDoAmount ; else balamount = data . RMBDrBalAmount ;
}
data . RMBDrBalAmount = balamount ;
data . RMBDrDoAmount = balamount ;
}
if ( reader [ "RMBCR" ] ! = DBNull . Value )
data . RMBCrAmount = Convert . ToDecimal ( reader [ "RMBCR" ] ) ;
if ( reader [ "BALRMBCR" ] ! = DBNull . Value )
data . RMBCrBalAmount = Convert . ToDecimal ( reader [ "BALRMBCR" ] ) ;
if ( reader [ "BALRMBCR" ] ! = DBNull . Value )
data . RMBCrDoAmount = Convert . ToDecimal ( reader [ "BALRMBCR" ] ) ;
if ( ! string . IsNullOrEmpty ( duino ) )
{
decimal balamount = 0 ;
if ( reader [ "DUIRMBCR" ] ! = DBNull . Value )
data . RMBCrDoAmount = Convert . ToDecimal ( reader [ "DUIRMBCR" ] ) ;
if ( data . RMBCrAmount > 0 )
{
if ( data . RMBCrBalAmount > data . RMBCrDoAmount ) balamount = data . RMBCrDoAmount ; else balamount = data . RMBCrBalAmount ;
}
else
{
if ( data . RMBCrBalAmount < data . RMBCrDoAmount ) balamount = data . RMBCrDoAmount ; else balamount = data . RMBCrBalAmount ;
}
data . RMBCrBalAmount = balamount ;
data . RMBCrDoAmount = balamount ;
}
if ( reader [ "USDDR" ] ! = DBNull . Value )
data . USDDrAmount = Convert . ToDecimal ( reader [ "USDDR" ] ) ;
if ( reader [ "BALUSDDR" ] ! = DBNull . Value )
data . USDDrBalAmount = Convert . ToDecimal ( reader [ "BALUSDDR" ] ) - Convert . ToDecimal ( reader [ "BALUSDCR" ] ) ;
if ( reader [ "BALUSDDR" ] ! = DBNull . Value )
data . USDDrDoAmount = Convert . ToDecimal ( reader [ "BALUSDDR" ] ) - Convert . ToDecimal ( reader [ "BALUSDCR" ] ) ;
if ( ! string . IsNullOrEmpty ( duino ) )
{
decimal balamount = 0 ;
if ( reader [ "DUIUSDDR" ] ! = DBNull . Value )
data . USDDrDoAmount = Convert . ToDecimal ( reader [ "DUIUSDDR" ] ) ;
if ( data . USDDrAmount > 0 )
{
if ( data . USDDrBalAmount > data . USDDrDoAmount ) balamount = data . USDDrDoAmount ; else balamount = data . USDDrBalAmount ;
}
else
{
if ( data . USDDrBalAmount < data . USDDrDoAmount ) balamount = data . USDDrDoAmount ; else balamount = data . USDDrBalAmount ;
}
data . USDDrBalAmount = balamount ;
data . USDDrDoAmount = balamount ;
}
if ( reader [ "USDCR" ] ! = DBNull . Value )
data . USDCrAmount = Convert . ToDecimal ( reader [ "USDCR" ] ) ;
if ( reader [ "BALUSDCR" ] ! = DBNull . Value )
data . USDCrBalAmount = Convert . ToDecimal ( reader [ "BALUSDCR" ] ) ;
if ( reader [ "BALUSDCR" ] ! = DBNull . Value )
data . USDCrDoAmount = Convert . ToDecimal ( reader [ "BALUSDCR" ] ) ;
if ( ! string . IsNullOrEmpty ( duino ) )
{
decimal balamount = 0 ;
if ( reader [ "DUIUSDCR" ] ! = DBNull . Value )
data . USDCrDoAmount = Convert . ToDecimal ( reader [ "DUIUSDCR" ] ) ;
if ( data . USDCrAmount > 0 )
{
if ( data . USDCrBalAmount > data . USDCrDoAmount ) balamount = data . USDCrDoAmount ; else balamount = data . USDCrBalAmount ;
}
else
{
if ( data . USDCrBalAmount < data . USDCrDoAmount ) balamount = data . USDCrDoAmount ; else balamount = data . USDCrBalAmount ;
}
data . USDCrBalAmount = balamount ;
data . USDCrDoAmount = balamount ;
}
if ( reader [ "OTDR" ] ! = DBNull . Value )
data . OTDrAmount = Convert . ToDecimal ( reader [ "OTDR" ] ) ;
if ( reader [ "BALOTDR" ] ! = DBNull . Value )
data . OTDrBalAmount = Convert . ToDecimal ( reader [ "BALOTDR" ] ) - Convert . ToDecimal ( reader [ "BALOTCR" ] ) ;
if ( reader [ "BALOTDR" ] ! = DBNull . Value )
data . OTDrDoAmount = Convert . ToDecimal ( reader [ "BALOTDR" ] ) - Convert . ToDecimal ( reader [ "BALOTCR" ] ) ;
if ( ! string . IsNullOrEmpty ( duino ) )
{
decimal balamount = 0 ;
if ( reader [ "DUIOTDR" ] ! = DBNull . Value )
data . OTDrDoAmount = Convert . ToDecimal ( reader [ "DUIOTDR" ] ) ;
if ( data . OTDrAmount > 0 )
{
if ( data . OTDrBalAmount > data . OTDrDoAmount ) balamount = data . OTDrDoAmount ; else balamount = data . OTDrBalAmount ;
}
else
{
if ( data . OTDrBalAmount < data . OTDrDoAmount ) balamount = data . OTDrDoAmount ; else balamount = data . OTDrBalAmount ;
}
data . OTDrBalAmount = balamount ;
data . OTDrDoAmount = balamount ;
}
if ( reader [ "OTCR" ] ! = DBNull . Value )
data . OTCrAmount = Convert . ToDecimal ( reader [ "OTCR" ] ) ;
if ( reader [ "BALOTCR" ] ! = DBNull . Value )
data . OTCrBalAmount = Convert . ToDecimal ( reader [ "BALOTCR" ] ) ;
if ( reader [ "BALOTCR" ] ! = DBNull . Value )
data . OTCrDoAmount = Convert . ToDecimal ( reader [ "BALOTCR" ] ) ;
if ( ! string . IsNullOrEmpty ( duino ) )
{
decimal balamount = 0 ;
if ( reader [ "DUIOTCR" ] ! = DBNull . Value )
data . OTCrDoAmount = Convert . ToDecimal ( reader [ "DUIOTCR" ] ) ;
if ( data . OTCrAmount > 0 )
{
if ( data . OTCrBalAmount > data . OTCrDoAmount ) balamount = data . OTCrDoAmount ; else balamount = data . OTCrBalAmount ;
}
else
{
if ( data . OTCrBalAmount < data . OTCrDoAmount ) balamount = data . OTCrDoAmount ; else balamount = data . OTCrBalAmount ;
}
data . OTCrBalAmount = balamount ;
data . OTCrDoAmount = balamount ;
}
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
static public List < BillTruckCustDetail > GetAddTruckBillList ( int start , int limit , string strCondition , string userid , string usercode , string orgcode , string sort )
{
var rangstr = GetRangDAStr ( "index" , userid , usercode , orgcode ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstr ;
}
else
{
strCondition = rangstr ;
}
}
var strSql = new StringBuilder ( ) ;
strSql . Append ( @"SELECT * from (SELECT row_number() over (" ) ;
var sortstring = DatasetSort . Getsortstring ( sort ) ;
if ( ! string . IsNullOrEmpty ( sortstring ) )
{
sortstring = sortstring . Replace ( "FEEOBJNAME" , "F.CUSTOMERNAME" ) . Replace ( "COMPANYID" , "b.SALECORPID" ) . Replace ( "COMPANYNAME" , "b.SALECORPID" ) ;
strSql . Append ( " order by " + sortstring ) ;
}
else
{
strSql . Append ( " order by f.BsNo" ) ;
}
strSql . Append ( @") as num , " ) ;
strSql . Append ( "f.BSNO,b.TRANSTYPE,b.TRANSSTATUS,b.CUSTOMERNAME,b.CUSTNO,b.CONTRACTNO,b.ORDERNO,b.BSDATE," ) ;
strSql . Append ( "b.ETD,b.ETA,b.OP,b.SALE,b.CUSTSERVICE,b.CUSTATTN,b.CUSTTEL,b.CONSIGNEENAME,b.CONSIGNEEATTN,b.CONSIGNEETEL,b.CONSIGNEEADDR," ) ;
strSql . Append ( "b.PORTLOAD,b.PORTDISCHARGE,b.GOODSNAME,b.KGS,b.NETWEIGHT,b.CBM,b.PKGS,b.KINDPKGS,b.TRUCKER,b.TRUCKNO,b.MBLNO" ) ;
strSql . Append ( ",F.CUSTOMERNAME AS CUSTNAME " ) ;
strSql . Append ( ",isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT,0) ELSE 0 END) ELSE 0 END),0) AS RMBDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT,0) ELSE 0 END) ELSE 0 END),0) AS RMBCR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END) ELSE 0 END),0) AS BALRMBDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALRMBCR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT,0) ELSE 0 END)ELSE 0 END),0) AS USDDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT,0) ELSE 0 END)ELSE 0 END),0) AS USDCR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALUSDDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALUSDCR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE ISNULL(AMOUNT,0) END) END)ELSE 0 END),0) AS OTDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE ISNULL(AMOUNT,0) END) END)ELSE 0 END),0) AS OTCR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) END) END) ELSE 0 END),0) AS BALOTDR," ) ;
strSql . Append ( "isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) END) END) ELSE 0 END),0) AS BALOTCR" ) ;
strSql . Append ( " FROM CH_FEE f " ) ;
strSql . Append ( " INNER JOIN v_op_truck_bulk B ON (F.BSNO=B.BSNO) " ) ;
strSql . Append ( " where f.ISINVOICE<>1 and f.FEESTATUS IN (0,8,9) and (f.AMOUNT<>(ISNULL(f.INVOICE,0)+ISNULL(f.ORDERINVOICE,0)-ISNULL(f.ORDERINVSETTLEMENT,0))) " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " and " + strCondition ) ;
}
var INVISNOTSTL = MsSysParamSetDAL . GetData ( "PARAMNAME='INVISNOTSTL'" ) ;
if ( INVISNOTSTL . PARAMVALUE = = "1" )
{
strSql . Append ( " and ISNULL(f.AMOUNT,0)<>ISNULL(f.SETTLEMENT,0) " ) ;
}
var isopen = MsBaseInfoDAL . GetUserModuleEnable ( "modFeenotopen" , userid ) ;
if ( isopen = = false )
{
strSql . Append ( " AND ( f.ENTEROPERATOR='" + userid + "' OR ( f.ENTEROPERATOR<>'" + userid + "' AND ISNULL(f.ISOPEN,0)=0)) " ) ;
}
strSql . Append ( "GROUP BY f.BSNO,b.TRANSTYPE,b.TRANSSTATUS,b.CUSTOMERNAME,b.CUSTNO,b.CONTRACTNO,b.ORDERNO,b.BSDATE" ) ;
strSql . Append ( ",b.ETD,b.ETA,b.OP,b.SALE,b.CUSTSERVICE,b.CUSTATTN,b.CUSTTEL,b.CONSIGNEENAME,b.CONSIGNEEATTN,b.CONSIGNEETEL,b.CONSIGNEEADDR" ) ;
strSql . Append ( ",b.PORTLOAD,b.PORTDISCHARGE,b.GOODSNAME,b.KGS,b.NETWEIGHT,b.CBM,b.PKGS,b.KINDPKGS,b.TRUCKER,b.TRUCKNO,b.MBLNO,f.CUSTOMERNAME" ) ;
strSql . Append ( @")as t " ) ;
strSql . Append ( string . Format ( "where t.num>{0} and t.num<={1} " , start , start + limit ) ) ; / /
return SetAddTruckBillData ( strSql ) ;
}
public static int getAddTruckBillTotalCount ( string strCondition , string userid , string usercode , string companyid )
{
var rangstr = GetRangDAStr ( "index" , userid , usercode , companyid ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstr ;
}
else
{
strCondition = rangstr ;
}
}
StringBuilder strSql = new StringBuilder ( ) ;
strSql . Append ( "SELECT COUNT(*) FROM (select b.BSNO,f.CUSTOMERNAME " ) ;
strSql . Append ( " FROM CH_FEE f " ) ;
strSql . Append ( " INNER JOIN v_op_truck_bulk B ON (F.BSNO=B.BSNO) " ) ;
strSql . Append ( " where f.ISINVOICE<>1 and f.FEESTATUS IN (0,8,9) and (f.AMOUNT<>(ISNULL(f.INVOICE,0)+ISNULL(f.ORDERINVOICE,0)-ISNULL(f.ORDERINVSETTLEMENT,0))) " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " and " + strCondition ) ;
}
strSql . Append ( "GROUP BY b.BSNO,f.CUSTOMERNAME) AS T " ) ;
int cnt = 0 ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
cnt = Convert . ToInt32 ( reader [ 0 ] ) ;
}
}
return cnt ;
}
private static List < BillTruckCustDetail > SetAddTruckBillData ( StringBuilder strSql )
{
var headList = new List < BillTruckCustDetail > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
BillTruckCustDetail data = new BillTruckCustDetail ( ) ;
#region Set DB data to Object
data . BSNO = Convert . ToString ( reader [ "BSNO" ] ) ;
if ( reader [ "ETD" ] ! = DBNull . Value )
data . ETD = Convert . ToDateTime ( reader [ "ETD" ] ) . ToString ( "yyyy-MM-dd" ) ;
if ( reader [ "ETA" ] ! = DBNull . Value )
data . ETA = Convert . ToDateTime ( reader [ "ETA" ] ) . ToString ( "yyyy-MM-dd" ) ;
data . ORDERNO = Convert . ToString ( reader [ "ORDERNO" ] ) ;
data . CONTRACTNO = Convert . ToString ( reader [ "CONTRACTNO" ] ) ;
data . CUSTATTN = Convert . ToString ( reader [ "CUSTATTN" ] ) ;
data . MBLNO = Convert . ToString ( reader [ "MBLNO" ] ) ;
data . CUSTTEL = Convert . ToString ( reader [ "CUSTTEL" ] ) ;
data . CUSTNO = Convert . ToString ( reader [ "CUSTNO" ] ) ;
data . CONSIGNEENAME = Convert . ToString ( reader [ "CONSIGNEENAME" ] ) ;
data . CUSTOMERNAME = Convert . ToString ( reader [ "CUSTOMERNAME" ] ) ;
data . CONSIGNEEATTN = Convert . ToString ( reader [ "CONSIGNEEATTN" ] ) ;
data . CONSIGNEETEL = Convert . ToString ( reader [ "CONSIGNEETEL" ] ) ;
data . PORTLOAD = Convert . ToString ( reader [ "PORTLOAD" ] ) ;
data . PORTDISCHARGE = Convert . ToString ( reader [ "PORTDISCHARGE" ] ) ;
data . CONSIGNEEADDR = Convert . ToString ( reader [ "CONSIGNEEADDR" ] ) ;
data . OP = Convert . ToString ( reader [ "OP" ] ) ;
data . CUSTSERVICE = Convert . ToString ( reader [ "CUSTSERVICE" ] ) ;
data . SALE = Convert . ToString ( reader [ "SALE" ] ) ;
data . GOODSNAME = Convert . ToString ( reader [ "GOODSNAME" ] ) ;
data . TRUCKER = Convert . ToString ( reader [ "TRUCKER" ] ) ;
data . TRUCKNO = Convert . ToString ( reader [ "TRUCKNO" ] ) ;
data . PORTLOAD = Convert . ToString ( reader [ "PORTLOAD" ] ) ;
data . PORTDISCHARGE = Convert . ToString ( reader [ "PORTDISCHARGE" ] ) ;
data . OP = Convert . ToString ( reader [ "OP" ] ) ;
data . CUSTSERVICE = Convert . ToString ( reader [ "CUSTSERVICE" ] ) ;
data . SALE = Convert . ToString ( reader [ "SALE" ] ) ;
data . FEEOBJNAME = Convert . ToString ( reader [ "CUSTNAME" ] ) ;
if ( reader [ "PKGS" ] ! = DBNull . Value )
data . PKGS = Convert . ToInt32 ( reader [ "PKGS" ] ) ;
if ( reader [ "KGS" ] ! = DBNull . Value )
data . KGS = Convert . ToDecimal ( reader [ "KGS" ] ) ;
if ( reader [ "CBM" ] ! = DBNull . Value )
data . CBM = Convert . ToDecimal ( reader [ "CBM" ] ) ;
if ( reader [ "NETWEIGHT" ] ! = DBNull . Value )
data . NETWEIGHT = Convert . ToDecimal ( reader [ "NETWEIGHT" ] ) ;
if ( reader [ "RMBDR" ] ! = DBNull . Value )
data . RMBDrAmount = Convert . ToDecimal ( reader [ "RMBDR" ] ) ;
if ( reader [ "BALRMBDR" ] ! = DBNull . Value )
data . RMBDrBalAmount = Convert . ToDecimal ( reader [ "BALRMBDR" ] ) - Convert . ToDecimal ( reader [ "BALRMBCR" ] ) ;
if ( reader [ "BALRMBDR" ] ! = DBNull . Value )
data . RMBDrDoAmount = Convert . ToDecimal ( reader [ "BALRMBDR" ] ) - Convert . ToDecimal ( reader [ "BALRMBCR" ] ) ;
if ( reader [ "RMBCR" ] ! = DBNull . Value )
data . RMBCrAmount = Convert . ToDecimal ( reader [ "RMBCR" ] ) ;
if ( reader [ "BALRMBCR" ] ! = DBNull . Value )
data . RMBCrBalAmount = Convert . ToDecimal ( reader [ "BALRMBCR" ] ) ;
if ( reader [ "BALRMBCR" ] ! = DBNull . Value )
data . RMBCrDoAmount = Convert . ToDecimal ( reader [ "BALRMBCR" ] ) ;
if ( reader [ "USDDR" ] ! = DBNull . Value )
data . USDDrAmount = Convert . ToDecimal ( reader [ "USDDR" ] ) ;
if ( reader [ "BALUSDDR" ] ! = DBNull . Value )
data . USDDrBalAmount = Convert . ToDecimal ( reader [ "BALUSDDR" ] ) - Convert . ToDecimal ( reader [ "BALUSDCR" ] ) ;
if ( reader [ "BALUSDDR" ] ! = DBNull . Value )
data . USDDrDoAmount = Convert . ToDecimal ( reader [ "BALUSDDR" ] ) - Convert . ToDecimal ( reader [ "BALUSDCR" ] ) ;
if ( reader [ "USDCR" ] ! = DBNull . Value )
data . USDCrAmount = Convert . ToDecimal ( reader [ "USDCR" ] ) ;
if ( reader [ "BALUSDCR" ] ! = DBNull . Value )
data . USDCrBalAmount = Convert . ToDecimal ( reader [ "BALUSDCR" ] ) ;
if ( reader [ "BALUSDCR" ] ! = DBNull . Value )
data . USDCrDoAmount = Convert . ToDecimal ( reader [ "BALUSDCR" ] ) ;
if ( reader [ "OTDR" ] ! = DBNull . Value )
data . OTDrAmount = Convert . ToDecimal ( reader [ "OTDR" ] ) ;
if ( reader [ "BALOTDR" ] ! = DBNull . Value )
data . OTDrBalAmount = Convert . ToDecimal ( reader [ "BALOTDR" ] ) - Convert . ToDecimal ( reader [ "BALOTCR" ] ) ;
if ( reader [ "BALOTDR" ] ! = DBNull . Value )
data . OTDrDoAmount = Convert . ToDecimal ( reader [ "BALOTDR" ] ) - Convert . ToDecimal ( reader [ "BALOTCR" ] ) ;
if ( reader [ "OTCR" ] ! = DBNull . Value )
data . OTCrAmount = Convert . ToDecimal ( reader [ "OTCR" ] ) ;
if ( reader [ "BALOTCR" ] ! = DBNull . Value )
data . OTCrBalAmount = Convert . ToDecimal ( reader [ "BALOTCR" ] ) ;
if ( reader [ "BALOTCR" ] ! = DBNull . Value )
data . OTCrDoAmount = Convert . ToDecimal ( reader [ "BALOTCR" ] ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
# endregion
static public List < Chfee_do_Sum > GetAddSum ( string strCondition , string userid , string usercode , string orgcode )
{
var rangstr = GetRangDAStr ( "index" , userid , usercode , orgcode ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstr ;
}
else
{
strCondition = rangstr ;
}
}
var modPSFEE = MsBaseInfoDAL . GetUserModuleEnable ( "modPSFEE" , userid ) ;
if ( ! modPSFEE )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and f.FEENAME<>'P/S' AND F.FEENAME<>'HP/S' " ;
}
else
{
strCondition = " f.FEENAME<>'P/S' AND F.FEENAME<>'HP/S' " ;
}
}
var strSql = new StringBuilder ( ) ;
strSql . Append ( " SELECT f.FEETYPE,(CASE f.FEETYPE WHEN 1 THEN '收' ELSE '付' END) AS FEETYPEREF,f.CURRENCY,Sum(f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0)) AMOUNT " ) ;
strSql . Append ( " from ch_fee f " ) ;
strSql . Append ( " left join v_op_bill b on (b.bsno=f.bsno)" ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " where " + strCondition ) ;
}
strSql . Append ( " Group by f.FEETYPE,f.CURRENCY" ) ;
return BodySumSetData ( strSql ) ;
}
static public List < ChFeeExrate > GetCurrExrateData ( string billcust , string billcurr , string feesql , bool custgroup = false )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " SELECT DISTINCT CURRENCY,EXCHANGERATE " ) ;
if ( ! custgroup )
strSql . Append ( " FROM ch_fee f where CURRENCY<>'" + billcurr + "' AND CUSTOMERNAME='" + billcust + "'" ) ;
else
strSql . Append ( " FROM ch_fee f where CURRENCY<>'" + billcurr + "'" ) ;
if ( ! string . IsNullOrEmpty ( feesql ) )
{
strSql . Append ( " and " + feesql ) ;
}
return SetCurrExrateData ( strSql ) ;
}
//static public List<ChFeeExrate> GetFeeNowInvCurrList(string billcust, string billcurr, string feesql, bool custgroup = false)
//{
// var strSql = new StringBuilder();
// strSql.Append(" SELECT DISTINCT CURRENCY,EXCHANGERATE ");
// if (!custgroup)
// strSql.Append(" FROM ch_fee f where CURRENCY<>'" + billcurr + "' AND CUSTOMERNAME='" + billcust + "'");
// else
// strSql.Append(" FROM ch_fee f where CURRENCY<>'" + billcurr + "'");
// if (!string.IsNullOrEmpty(feesql))
// {
// strSql.Append(" and " + feesql);
// }
// return SetCurrExrateData(strSql);
//}
private static List < ChFeeExrate > SetCurrExrateData ( StringBuilder strSql )
{
var headList = new List < ChFeeExrate > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
ChFeeExrate data = new ChFeeExrate ( ) ;
#region Set DB data to Object
data . CURR = Convert . ToString ( reader [ "CURRENCY" ] ) ;
data . EXRATE = 0 ;
if ( reader [ "EXCHANGERATE" ] ! = DBNull . Value )
data . DFEXRATE = Convert . ToDecimal ( reader [ "EXCHANGERATE" ] ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
#region 费用列表明细
static public List < ChFeeDetail > GetFeeDetailList ( string strCondition , string duino , string userid , string usercode , string orgcode , string sort = null )
{
var strSql = new StringBuilder ( ) ;
var PAYUSEFEERANGE = MsSysParamSetDAL . GetData ( "PARAMNAME='INVAPPFEERANGE'" ) ;
if ( PAYUSEFEERANGE . PARAMVALUE = = "1" )
{
var rangstrfee = GetRangAddFeeDAStr ( userid , usercode , orgcode ) ;
if ( ! string . IsNullOrEmpty ( rangstrfee ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstrfee ;
}
else
{
strCondition = rangstrfee ;
}
}
}
var modPSFEE = MsBaseInfoDAL . GetUserModuleEnable ( "modPSFEE" , userid ) ;
if ( ! modPSFEE )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and f.FEENAME<>'P/S' AND F.FEENAME<>'HP/S' " ;
}
else
{
strCondition = " f.FEENAME<>'P/S' AND F.FEENAME<>'HP/S' " ;
}
}
if ( ! string . IsNullOrEmpty ( duino ) )
{
strSql . Append ( "SELECT * from (SELECT " ) ;
strSql . Append ( "f.BSNO,f.GID AS CH_ID,FeeType" ) ;
strSql . Append ( ",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99020 and EnumValueID=f.FeeType) as FeeType_Ref" ) ;
strSql . Append ( ",f.feeName,f.customerName,f.amount,f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) as balamount,f.currency,f.exChangerate,f.AccTaxRate,f.remark" ) ;
strSql . Append ( ",(select ShowName from [user] where GID=f.EnteroPerator) as OpName" ) ;
strSql . Append ( ",f.INPUTMODE,f.UNIT,f.UNITPRICE,f.QUANTITY,d.DEBITAMOUNT from ch_fee f " ) ;
strSql . Append ( " left join ch_dui_detail d on (d.CH_ID=f.GID) WHERE D.DUINO='" + duino + "' AND ISNULL(D.INVNO,'')='' " ) ;
strSql . Append ( " and f.ISINVOICE<>1 and (f.AMOUNT<>(ISNULL(f.INVOICE,0)+ISNULL(f.ORDERINVOICE,0)-ISNULL(f.ORDERINVSETTLEMENT,0))) and ISNULL(f.INVLINKGID,'')='' " ) ;
}
else
{
strSql . Append ( "SELECT * from (SELECT " ) ;
strSql . Append ( "f.BSNO,f.GID AS CH_ID,FeeType" ) ;
strSql . Append ( ",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99020 and EnumValueID=f.FeeType) as FeeType_Ref" ) ;
strSql . Append ( ",f.feeName,f.customerName,f.amount,f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) as balamount,f.currency,f.exChangerate,f.AccTaxRate,f.remark" ) ;
strSql . Append ( ",(select ShowName from [user] where GID=f.EnteroPerator) as OpName" ) ;
strSql . Append ( ",f.INPUTMODE,f.UNIT,f.UNITPRICE,f.QUANTITY,0 DEBITAMOUNT from ch_fee f " ) ;
strSql . Append ( " where f.ISINVOICE<>1 and (f.AMOUNT<>(ISNULL(f.INVOICE,0)+ISNULL(f.ORDERINVOICE,0)-ISNULL(f.ORDERINVSETTLEMENT,0))) and ISNULL(f.INVLINKGID,'')='' " ) ;
}
var InvAppFeeStatus = MsSysParamSetDAL . GetData ( "PARAMNAME='InvAppFeeStatus'" ) ;
if ( InvAppFeeStatus . PARAMVALUE ! = "2" )
strSql . Append ( " and f.FEESTATUS IN (0,8,9) " ) ;
else
strSql . Append ( " and f.FEESTATUS IN (2,0,8,9) " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " AND " + strCondition ) ;
}
var INVISNOTSTL = MsSysParamSetDAL . GetData ( "PARAMNAME='INVISNOTSTL'" ) ;
if ( INVISNOTSTL . PARAMVALUE = = "1" )
{
strSql . Append ( " and ISNULL(f.AMOUNT,0)<>ISNULL(f.SETTLEMENT,0) " ) ;
}
var isopen = MsBaseInfoDAL . GetUserModuleEnable ( "modFeenotopen" , userid ) ;
if ( isopen = = false )
{
strSql . Append ( " AND ( f.ENTEROPERATOR='" + userid + "' OR ( f.ENTEROPERATOR<>'" + userid + "' AND ISNULL(f.ISOPEN,0)=0)) " ) ;
}
strSql . Append ( " ) AS VF " ) ;
var sortstring = DatasetSort . Getsortstring ( sort ) ;
if ( ! string . IsNullOrEmpty ( sortstring ) )
{
strSql . Append ( " order by " + sortstring ) ;
}
else
{
strSql . Append ( " order by feeName" ) ;
}
return SetFeeDetailData ( strSql , duino ) ;
}
private static List < ChFeeDetail > SetFeeDetailData ( StringBuilder strSql , string duino )
{
var headList = new List < ChFeeDetail > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
ChFeeDetail data = new ChFeeDetail ( ) ;
#region Set DB data to Object
data . BSNO = Convert . ToString ( reader [ "BSNO" ] ) ;
data . CH_ID = Convert . ToString ( reader [ "CH_ID" ] ) ;
data . FeeType = Convert . ToInt16 ( reader [ "FeeType" ] ) ;
data . FeeType_Ref = Convert . ToString ( reader [ "FeeType_Ref" ] ) ;
data . FeeName = Convert . ToString ( reader [ "feeName" ] ) ;
data . CustomerName = Convert . ToString ( reader [ "customerName" ] ) ;
data . Amount = Convert . ToDecimal ( reader [ "Amount" ] ) ;
if ( reader [ "BalAmount" ] ! = DBNull . Value )
data . BalAmount = Convert . ToDecimal ( reader [ "BalAmount" ] ) ;
if ( reader [ "BalAmount" ] ! = DBNull . Value )
data . StlAmount = Convert . ToDecimal ( reader [ "BalAmount" ] ) ;
if ( reader [ "DEBITAMOUNT" ] ! = DBNull . Value )
data . DEBITAMOUNT = Convert . ToDecimal ( reader [ "DEBITAMOUNT" ] ) ;
if ( ! string . IsNullOrEmpty ( duino ) )
{
decimal balamount = 0 ;
if ( data . Amount > = 0 )
{
if ( data . BalAmount > data . DEBITAMOUNT ) balamount = data . DEBITAMOUNT ; else balamount = data . BalAmount ;
}
else
{
if ( data . BalAmount < data . DEBITAMOUNT ) balamount = data . DEBITAMOUNT ; else balamount = data . BalAmount ;
}
data . BalAmount = balamount ;
data . StlAmount = balamount ;
}
else
{
if ( reader [ "BalAmount" ] ! = DBNull . Value )
data . StlAmount = Convert . ToDecimal ( reader [ "BalAmount" ] ) ;
}
data . Currency = Convert . ToString ( reader [ "Currency" ] ) ;
if ( reader [ "exChangerate" ] ! = DBNull . Value )
data . ExChangerate = Convert . ToDecimal ( reader [ "exChangerate" ] ) ;
if ( reader [ "AccTaxRate" ] ! = DBNull . Value )
data . AccTaxRate = Convert . ToDecimal ( reader [ "AccTaxRate" ] ) ;
data . INPUTMODE = Convert . ToString ( reader [ "INPUTMODE" ] ) ;
data . UNIT = Convert . ToString ( reader [ "UNIT" ] ) ;
if ( reader [ "UNITPRICE" ] ! = DBNull . Value )
data . UNITPRICE = Convert . ToDecimal ( reader [ "UNITPRICE" ] ) ;
if ( reader [ "QUANTITY" ] ! = DBNull . Value )
data . QUANTITY = Convert . ToDecimal ( reader [ "QUANTITY" ] ) ;
data . Remark = Convert . ToString ( reader [ "remark" ] ) ;
data . INPUTBY = Convert . ToString ( reader [ "OpName" ] ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
# endregion
#region 发票明细保存,删除
public static DBResult SaveInvDetail ( string BsNo , List < ChInvoiceDetail > bodyList )
{
var result = new DBResult ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
var cmdInsert =
db . GetSqlStringCommand (
@ "insert into ch_fee_invoicedetail (GID,PID,SerialNo,GOODSNAME,SPEC,UNIT,PKGS,TAXPRICE,PRICE,AMOUNT,TAXRATE,TAX,Remark,GOODCODE)
values ( @GID , @PID , @SerialNo , @GOODSNAME , @SPEC , @UNIT , @PKGS , @TAXPRICE , @PRICE , @AMOUNT , @TAXRATE , @TAX , @Remark , @GOODCODE ) ");
var cmdUpdate =
db . GetSqlStringCommand (
@ "update ch_fee_invoicedetail set SerialNo=@SerialNo,GOODSNAME=@GOODSNAME,SPEC=@SPEC,UNIT=@UNIT,PKGS=@PKGS,TAXPRICE=@TAXPRICE
, PRICE = @PRICE , AMOUNT = @AMOUNT , TAXRATE = @TAXRATE , Remark = @Remark , TAX = @TAX , GOODCODE = @GOODCODE where GID = @GID ");
if ( bodyList ! = null )
{
foreach ( var enumValue in bodyList )
{
if ( enumValue . PID = = "*" | | enumValue . GID = = "" )
{
cmdInsert . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsert , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsert , "@PID" , DbType . String , BsNo ) ;
db . AddInParameter ( cmdInsert , "@SerialNo" , DbType . Int32 , enumValue . SERIALNO ) ;
db . AddInParameter ( cmdInsert , "@GOODSNAME" , DbType . String , enumValue . GOODSNAME ) ;
db . AddInParameter ( cmdInsert , "@SPEC" , DbType . String , enumValue . SPEC ) ;
db . AddInParameter ( cmdInsert , "@UNIT" , DbType . String , enumValue . UNIT ) ;
db . AddInParameter ( cmdInsert , "@PKGS" , DbType . Decimal , enumValue . PKGS ) ;
db . AddInParameter ( cmdInsert , "@TAXPRICE" , DbType . Decimal , enumValue . TAXPRICE ) ;
db . AddInParameter ( cmdInsert , "@PRICE" , DbType . Decimal , enumValue . PRICE ) ;
db . AddInParameter ( cmdInsert , "@AMOUNT" , DbType . Decimal , enumValue . AMOUNT ) ;
db . AddInParameter ( cmdInsert , "@TAXRATE" , DbType . Decimal , enumValue . TAXRATE ) ;
db . AddInParameter ( cmdInsert , "@TAX" , DbType . Decimal , enumValue . TAX ) ;
db . AddInParameter ( cmdInsert , "@Remark" , DbType . String , enumValue . REMARK ) ;
db . AddInParameter ( cmdInsert , "@GOODCODE" , DbType . String , enumValue . GOODCODE ) ;
db . ExecuteNonQuery ( cmdInsert , tran ) ;
}
else
{
cmdUpdate . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdate , "@GID" , DbType . String , enumValue . GID ) ;
db . AddInParameter ( cmdUpdate , "@SerialNo" , DbType . Int32 , enumValue . SERIALNO ) ;
db . AddInParameter ( cmdUpdate , "@GOODSNAME" , DbType . String , enumValue . GOODSNAME ) ;
db . AddInParameter ( cmdUpdate , "@SPEC" , DbType . String , enumValue . SPEC ) ;
db . AddInParameter ( cmdUpdate , "@UNIT" , DbType . String , enumValue . UNIT ) ;
db . AddInParameter ( cmdUpdate , "@PKGS" , DbType . Decimal , enumValue . PKGS ) ;
db . AddInParameter ( cmdUpdate , "@TAXPRICE" , DbType . Decimal , enumValue . TAXPRICE ) ;
db . AddInParameter ( cmdUpdate , "@PRICE" , DbType . Decimal , enumValue . PRICE ) ;
db . AddInParameter ( cmdUpdate , "@AMOUNT" , DbType . Decimal , enumValue . AMOUNT ) ;
db . AddInParameter ( cmdUpdate , "@TAXRATE" , DbType . Decimal , enumValue . TAXRATE ) ;
db . AddInParameter ( cmdUpdate , "@TAX" , DbType . Decimal , enumValue . TAX ) ;
db . AddInParameter ( cmdUpdate , "@Remark" , DbType . String , enumValue . REMARK ) ;
db . AddInParameter ( cmdUpdate , "@GOODCODE" , DbType . String , enumValue . GOODCODE ) ;
db . ExecuteNonQuery ( cmdUpdate , tran ) ;
}
}
}
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "保存出现错误,请重试或联系系统管理员" ;
return result ;
}
}
result . Success = true ;
result . Message = "保存成功" + result . Message ;
return result ;
}
public static DBResult DelInvDetail ( List < ChInvoiceDetail > bodyList )
{
var result = new DBResult ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
var cmdInsert =
db . GetSqlStringCommand (
@"delete from ch_fee_invoicedetail where GID=@GID " ) ;
if ( bodyList ! = null )
{
foreach ( var enumValue in bodyList )
{
cmdInsert . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsert , "@GID" , DbType . String , enumValue . GID ) ;
db . ExecuteNonQuery ( cmdInsert , tran ) ;
}
}
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "删除出现错误,请重试或联系系统管理员" ;
return result ;
}
}
result . Success = true ;
result . Message = "删除成功" + result . Message ;
return result ;
}
# endregion
public static DBResult AddDetail ( string billno , string duino , List < BillChfeeDetail > bodyList , string curr , string companyid , bool isList , string GID , ChInvoiceapplication headdata )
{
var result = new DBResult ( ) ;
decimal ttlamount = headdata . APPLYAMOUNT ;
bool INVAPPMAX = false ;
var INVAPPMAXPARAM = MsSysParamSetDAL . GetData ( "PARAMNAME='INVAPPMAX'" ) ;
if ( INVAPPMAXPARAM . PARAMVALUE = = "1" )
{
INVAPPMAX = true ;
}
if ( ttlamount > = 99999 & & INVAPPMAX )
{
result . Success = false ;
result . Message = "单张发票申请不能超过100000" ;
return result ;
}
bool ischaoe = false ;
var defGOOD = MsCodeGoodInvDAL . GetData ( " ISDEF='1' and (DEFCURR='' or DEFCURR='" + headdata . RECVCURR + "')" ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
var cmdInsert =
db . GetSqlStringCommand (
@ "insert into ch_fee_do (GID,BILLNO,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY
, AMOUNT , DOAMOUNT , FEETYPE , CATEGORY , BILLSTATUS , ISDELETED , CREATETIME
, EXCHANGERATE , ORIGCURRENCY , ORIGAMOUNT , INVOICESETTLENO , COMPANYID )
values ( @GID , @BILLNO , @BSNO , @MBLNO , @HBLNO , @CUSTOMERNAME , @BSTYPE , @FEEID , @FEENAME , @CURRENCY
, @AMOUNT , @DOAMOUNT , @FEETYPE , @CATEGORY , @BILLSTATUS , @ISDELETED , @CREATETIME
, @EXCHANGERATE , @ORIGCURRENCY , @ORIGAMOUNT , @INVOICESETTLENO , @COMPANYID ) ");
var cmdUpdate =
db . GetSqlStringCommand (
@"UPDATE CH_FEE SET ORDERINVOICE=ISNULL(ORDERINVOICE,0)+@ORDERINVOICE WHERE GID=@GID " ) ;
var cmdInsertInv =
db . GetSqlStringCommand (
@ "insert into ch_fee_invoicedetail (GID,PID,SerialNo,GOODSNAME,SPEC,UNIT,PKGS,TAXPRICE,PRICE,AMOUNT,TAXRATE,TAX,Remark,GOODCODE)
values ( @GID , @PID , @SerialNo , @GOODSNAME , @SPEC , @UNIT , @PKGS , @TAXPRICE , @PRICE , @AMOUNT , @TAXRATE , @TAX , @Remark , @GOODCODE ) ");
var cmdUpdateInv =
db . GetSqlStringCommand (
@ "update ch_fee_invoicedetail set TAXPRICE=@TAXPRICE
, PRICE = @PRICE , AMOUNT = @AMOUNT , TAX = @TAX where GID = @GID ");
decimal amtttl = 0 ;
decimal acctaxrate = 0 ;
decimal doamount = 0 ;
decimal StlAmount = 0 ;
if ( bodyList ! = null )
{
foreach ( var enumValue in bodyList )
{
if ( ttlamount > = 99999 & & INVAPPMAX ) break ;
if ( ( ttlamount + Math . Round ( enumValue . DoAmount , 2 , MidpointRounding . AwayFromZero ) ) > = 99999 & & INVAPPMAX )
{
StlAmount = 0 ;
doamount = 0 ;
ischaoe = true ;
//doamount = 99999-ttlamount;
//StlAmount = Math.Round(enumValue.StlAmount*((99999 - ttlamount)/doamount),2, MidpointRounding.AwayFromZero);
}
else
{
doamount = Math . Round ( enumValue . DoAmount , 2 , MidpointRounding . AwayFromZero ) ;
StlAmount = enumValue . StlAmount ;
}
ttlamount = ttlamount + doamount ;
cmdInsert . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsert , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsert , "@BILLNO" , DbType . String , billno ) ;
db . AddInParameter ( cmdInsert , "@BSNO" , DbType . String , enumValue . BSNO ) ;
db . AddInParameter ( cmdInsert , "@MBLNO" , DbType . String , enumValue . MBLNO ) ;
db . AddInParameter ( cmdInsert , "@HBLNO" , DbType . String , enumValue . HBLNO ) ;
db . AddInParameter ( cmdInsert , "@CUSTOMERNAME" , DbType . String , enumValue . FeeObjName ) ;
//var tops = enumValue.BSNO.Substring(0, 7);
//if (tops == "topseae")
// db.AddInParameter(cmdInsert, "@BSTYPE", DbType.Boolean, true);
//else
db . AddInParameter ( cmdInsert , "@BSTYPE" , DbType . Boolean , false ) ;
db . AddInParameter ( cmdInsert , "@FEEID" , DbType . String , enumValue . CH_ID ) ;
db . AddInParameter ( cmdInsert , "@FEENAME" , DbType . String , enumValue . FeeName ) ;
if ( curr = = "" )
db . AddInParameter ( cmdInsert , "@CURRENCY" , DbType . String , enumValue . Currency ) ;
else
db . AddInParameter ( cmdInsert , "@CURRENCY" , DbType . String , curr ) ;
db . AddInParameter ( cmdInsert , "@AMOUNT" , DbType . Decimal , doamount ) ;
db . AddInParameter ( cmdInsert , "@DOAMOUNT" , DbType . Decimal , 0 ) ;
db . AddInParameter ( cmdInsert , "@FEETYPE" , DbType . Int16 , enumValue . FeeType ) ;
db . AddInParameter ( cmdInsert , "@CATEGORY" , DbType . Int16 , 6 ) ;
db . AddInParameter ( cmdInsert , "@BILLSTATUS" , DbType . Int16 , 1 ) ;
db . AddInParameter ( cmdInsert , "@ISDELETED" , DbType . Boolean , false ) ;
db . AddInParameter ( cmdInsert , "@CREATETIME" , DbType . DateTime , DateTime . Now ) ;
db . AddInParameter ( cmdInsert , "@EXCHANGERATE" , DbType . Decimal , enumValue . ExChangerate ) ;
db . AddInParameter ( cmdInsert , "@ORIGCURRENCY" , DbType . String , enumValue . Currency ) ;
db . AddInParameter ( cmdInsert , "@ORIGAMOUNT" , DbType . Decimal , StlAmount ) ;
db . AddInParameter ( cmdInsert , "@INVOICESETTLENO" , DbType . String , duino ) ;
db . AddInParameter ( cmdInsert , "@COMPANYID" , DbType . String , companyid ) ;
db . ExecuteNonQuery ( cmdInsert , tran ) ;
cmdUpdate . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdate , "@GID" , DbType . String , enumValue . CH_ID ) ;
db . AddInParameter ( cmdUpdate , "@ORDERINVOICE" , DbType . Decimal , StlAmount ) ;
db . ExecuteNonQuery ( cmdUpdate , tran ) ;
if ( ! string . IsNullOrEmpty ( duino ) )
{
var cmdUpdateDui =
db . GetSqlStringCommand (
@"update ch_dui_detail set INVNO=@PAYNO WHERE CH_ID=@GID AND DUINO=@DUINO" ) ;
cmdUpdateDui . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdateDui , "@GID" , DbType . String , enumValue . CH_ID ) ;
db . AddInParameter ( cmdUpdateDui , "@PAYNO" , DbType . String , billno ) ;
db . AddInParameter ( cmdUpdateDui , "@DUINO" , DbType . String , duino ) ;
db . ExecuteNonQuery ( cmdUpdateDui , tran ) ;
}
if ( isList & & doamount ! = 0 )
{
cmdInsertInv . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsertInv , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsertInv , "@PID" , DbType . String , GID ) ;
db . AddInParameter ( cmdInsertInv , "@SerialNo" , DbType . Int32 , 1 ) ;
db . AddInParameter ( cmdInsertInv , "@GOODSNAME" , DbType . String , enumValue . FeeName ) ;
db . AddInParameter ( cmdInsertInv , "@SPEC" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsertInv , "@UNIT" , DbType . String , "票" ) ;
db . AddInParameter ( cmdInsertInv , "@PKGS" , DbType . Decimal , 1 ) ;
db . AddInParameter ( cmdInsertInv , "@TAXPRICE" , DbType . Decimal , doamount ) ;
db . AddInParameter ( cmdInsertInv , "@TAXRATE" , DbType . Decimal , headdata . RATE ) ;
if ( headdata . RATE = = 0 )
{
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , doamount ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , doamount ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , 0 ) ;
}
else
{
var tax = Math . Round ( doamount / ( 1 + headdata . RATE / 100 ) * ( headdata . RATE / 100 ) , 2 , MidpointRounding . AwayFromZero ) ;
var amount = doamount - tax ;
// var amount = Math.Round(enumValue.DoAmount / (1 + enumValue.AccTaxRate / 100),2);
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , tax ) ;
}
db . AddInParameter ( cmdInsertInv , "@Remark" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsertInv , "@GOODCODE" , DbType . String , "" ) ;
db . ExecuteNonQuery ( cmdInsertInv , tran ) ;
}
if ( enumValue . FeeType = = 2 )
amtttl = amtttl - doamount ;
else
amtttl = amtttl + doamount ;
}
}
acctaxrate = headdata . RATE ;
if ( ! isList & & ttlamount ! = 0 )
{
var dataList = GetDetailList ( " PID='" + GID + "'" ) ;
if ( dataList . Count ! = 0 )
{
var invlist = dataList [ 0 ] ;
cmdUpdateInv . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdateInv , "@GID" , DbType . String , invlist . GID ) ;
if ( acctaxrate = = 0 )
{
db . AddInParameter ( cmdUpdateInv , "@AMOUNT" , DbType . Decimal , Math . Round ( invlist . AMOUNT + amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdUpdateInv , "@TAXPRICE" , DbType . Decimal , Math . Round ( ( invlist . AMOUNT + amtttl ) / invlist . PKGS , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdUpdateInv , "@PRICE" , DbType . Decimal , Math . Round ( ( invlist . AMOUNT + amtttl ) / invlist . PKGS , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdUpdateInv , "@TAXRATE" , DbType . Decimal , 0 ) ;
db . AddInParameter ( cmdUpdateInv , "@TAX" , DbType . Decimal , 0 ) ;
}
else
{
amtttl = amtttl + ( invlist . TAXPRICE * invlist . PKGS ) ;
var tax = Math . Round ( amtttl / ( 1 + acctaxrate / 100 ) * ( acctaxrate / 100 ) , 2 , MidpointRounding . AwayFromZero ) ;
var amount = amtttl - tax ;
db . AddInParameter ( cmdUpdateInv , "@TAXPRICE" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdUpdateInv , "@PRICE" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdUpdateInv , "@AMOUNT" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdUpdateInv , "@TAX" , DbType . Decimal , tax ) ;
//var tax = Math.Round(amtttl / (1 + acctaxrate / 100) * (acctaxrate / 100), 2);
//var amount = amtttl - tax;
//db.AddInParameter(cmdUpdateInv, "@AMOUNT", DbType.Decimal, Math.Round(invlist.AMOUNT + amount, 2));
//db.AddInParameter(cmdUpdateInv, "@TAXPRICE", DbType.Decimal, Math.Round(((invlist.AMOUNT + amount) / invlist.PKGS) * (1 + acctaxrate / 100), 2));
//db.AddInParameter(cmdUpdateInv, "@PRICE", DbType.Decimal, Math.Round((invlist.AMOUNT + amount) / invlist.PKGS, 2));
//db.AddInParameter(cmdUpdateInv, "@TAX", DbType.Decimal, invlist.TAX + tax);
}
db . ExecuteNonQuery ( cmdUpdateInv , tran ) ;
}
else
{
cmdInsertInv . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsertInv , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsertInv , "@PID" , DbType . String , GID ) ;
db . AddInParameter ( cmdInsertInv , "@SerialNo" , DbType . Int32 , 1 ) ;
if ( defGOOD . GOODNAME = = "" )
{
db . AddInParameter ( cmdInsertInv , "@GOODSNAME" , DbType . String , "代理运杂费" ) ;
db . AddInParameter ( cmdInsertInv , "@UNIT" , DbType . String , "票" ) ;
}
else
{
db . AddInParameter ( cmdInsertInv , "@GOODSNAME" , DbType . String , defGOOD . GID ) ;
db . AddInParameter ( cmdInsertInv , "@UNIT" , DbType . String , defGOOD . UNIT ) ;
}
db . AddInParameter ( cmdInsertInv , "@SPEC" , DbType . String , defGOOD . SPEC ) ;
db . AddInParameter ( cmdInsertInv , "@PKGS" , DbType . Decimal , 1 ) ;
db . AddInParameter ( cmdInsertInv , "@TAXPRICE" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@TAXRATE" , DbType . Decimal , acctaxrate ) ;
if ( acctaxrate = = 0 )
{
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , 0 ) ;
}
else
{
var tax = Math . Round ( amtttl / ( 1 + acctaxrate / 100 ) * ( acctaxrate / 100 ) , 2 , MidpointRounding . AwayFromZero ) ;
var amount = amtttl - tax ;
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , Math . Round ( amount , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , Math . Round ( amount , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , tax ) ;
}
db . AddInParameter ( cmdInsertInv , "@Remark" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsertInv , "@GOODCODE" , DbType . String , defGOOD . GOODCODE ) ;
db . ExecuteNonQuery ( cmdInsertInv , tran ) ;
}
}
if ( ischaoe )
{
result . Success = false ;
result . Message = "单张发票不能超过十万元" ;
}
else
{
result = new DBResult ( ) ;
result . Success = true ;
result . Message = "保存成功" ;
}
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "保存出现错误,请重试或联系系统管理员" ;
return result ;
}
}
//result.Success = true;
//result.Message = "保存成功" + result.Message;
return result ;
}
public static DBResult AddBill ( string billno , string duino , string billcust , string billcurr , string feesql , List < ChFeeExrate > exratelist , string companyid , bool isList , string GID , ChInvoiceapplication headdata , bool custgroup = false , string userid = "" , string username = "" )
{
var result = new DBResult ( ) ;
bool INVAPPMAX = false ;
decimal ttlamount = headdata . APPLYAMOUNT ;
var INVAPPMAXPARAM = MsSysParamSetDAL . GetData ( "PARAMNAME='INVAPPMAX'" ) ;
if ( INVAPPMAXPARAM . PARAMVALUE = = "1" )
{
INVAPPMAX = true ;
}
if ( ttlamount > = 99999 & & INVAPPMAX )
{
result . Success = false ;
result . Message = "单张发票申请不能超过100000" ;
return result ;
}
Database db = DatabaseFactory . CreateDatabase ( ) ;
decimal amtttl = 0 ;
decimal acctaxrate = 0 ;
bool adddo = true ;
bool ischaoe = false ;
var FEENOAUDITCANTSHENINV = MsSysParamSetDAL . GetData ( "PARAMNAME='FEENOAUDITCANTSHENINV'" ) ;
List < DSWeb . MvcShipping . Models . MsOpBill . MsOpBill > billnoinvlist = null ;
var defGOOD = MsCodeGoodInvDAL . GetData ( " ISDEF='1' and (DEFCURR='' or DEFCURR='" + headdata . RECVCURR + "')" ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
if ( ! custgroup )
feesql = feesql + " AND CUSTOMERNAME='" + billcust + "'" ;
var feelist = GetFeeDetailList ( feesql , duino , userid , username , companyid ) ;
if ( FEENOAUDITCANTSHENINV . PARAMVALUE = = "1" )
{
billnoinvlist = MsOpBillDAL . GetDataList ( " BSNO IN (select DISTINCT BSNO from ch_fee (NOLOCK) where FEETYPE=1 and (FEESTATUS=1 OR FEESTATUS=2 ) AND BSNO IN (SELECT DISTINCT BSNO FROM CH_FEE f WHERE f.ISINVOICE<>1 and f.FEESTATUS IN (0,8,9) and (f.AMOUNT<>(ISNULL(f.INVOICE,0)+ISNULL(f.ORDERINVOICE,0)-ISNULL(f.ORDERINVSETTLEMENT,0))) AND " + feesql + " ))" ) ;
}
var cmdInsert =
db . GetSqlStringCommand (
@ "insert into ch_fee_do (GID,BILLNO,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY
, AMOUNT , DOAMOUNT , FEETYPE , CATEGORY , BILLSTATUS , ISDELETED , CREATETIME
, EXCHANGERATE , ORIGCURRENCY , ORIGAMOUNT , INVOICESETTLENO , COMPANYID )
values ( @GID , @BILLNO , @BSNO , @MBLNO , @HBLNO , @CUSTOMERNAME , @BSTYPE , @FEEID , @FEENAME , @CURRENCY
, @AMOUNT , @DOAMOUNT , @FEETYPE , @CATEGORY , @BILLSTATUS , @ISDELETED , @CREATETIME
, @EXCHANGERATE , @ORIGCURRENCY , @ORIGAMOUNT , @INVOICESETTLENO , @COMPANYID ) ");
var cmdUpdate =
db . GetSqlStringCommand (
@ "UPDATE CH_FEE SET ORDERINVOICE=ISNULL(ORDERINVOICE,0)+@ORDERINVOICE WHERE GID=@GID AND ((AMOUNT>=0 AND ((AMOUNT-ISNULL(ORDERINVOICE,0))-@ORDERINVOICE)>=0)
OR ( AMOUNT < 0 AND ( ( AMOUNT - ISNULL ( ORDERINVOICE , 0 ) ) - @ORDERINVOICE ) < = 0 ) ) ");
var cmdInsertInv =
db . GetSqlStringCommand (
@ "insert into ch_fee_invoicedetail (GID,PID,SerialNo,GOODSNAME,SPEC,UNIT,PKGS,TAXPRICE,PRICE,AMOUNT,TAXRATE,TAX,Remark,GOODCODE)
values ( @GID , @PID , @SerialNo , @GOODSNAME , @SPEC , @UNIT , @PKGS , @TAXPRICE , @PRICE , @AMOUNT , @TAXRATE , @TAX , @Remark , @GOODCODE ) ");
var cmdUpdateInv =
db . GetSqlStringCommand (
@ "update ch_fee_invoicedetail set TAXPRICE=@TAXPRICE
, PRICE = @PRICE , AMOUNT = @AMOUNT , TAX = @TAX where GID = @GID ");
decimal doamount = 0 ;
decimal StlAmount = 0 ;
decimal ORIGAMOUNT = 0 ;
decimal UExrate = 0 ;
if ( feelist ! = null )
{
foreach ( var enumValue in feelist )
{
//if (ttlamount >= 99999&& INVAPPMAX) break;
if ( FEENOAUDITCANTSHENINV . PARAMVALUE = = "1" )
{
if ( billnoinvlist ! = null )
{
foreach ( var billnoinv in billnoinvlist )
{
if ( enumValue . BSNO = = billnoinv . BSNO ) adddo = false ;
}
}
}
if ( adddo )
{
decimal feettl = 0 ;
decimal otamount = 0 ;
if ( billcurr = = "" | | billcurr = = enumValue . Currency )
{
feettl = enumValue . StlAmount ;
if ( enumValue . FeeType = = 2 )
otamount = - enumValue . StlAmount ;
else
otamount = enumValue . StlAmount ;
if ( ( ttlamount + Math . Round ( otamount , 2 , MidpointRounding . AwayFromZero ) ) > = 100000 & & INVAPPMAX )
{
feettl = 0 ;
doamount = 0 ;
ischaoe = true ;
}
else {
doamount = feettl ;
if ( enumValue . FeeType = = 2 )
amtttl = amtttl - enumValue . StlAmount ;
else
amtttl = amtttl + enumValue . StlAmount ;
ttlamount = ttlamount + otamount ;
}
}
else {
UExrate = GetExrate ( enumValue . Currency , exratelist ) ;
if ( enumValue . FeeType = = 2 )
otamount = - enumValue . StlAmount * UExrate ;
else
otamount = enumValue . StlAmount * UExrate ;
feettl = enumValue . StlAmount * UExrate ;
feettl = Math . Round ( feettl , 2 , MidpointRounding . AwayFromZero ) ;
if ( ( ttlamount + Math . Round ( otamount , 2 , MidpointRounding . AwayFromZero ) ) > = 100000 & & INVAPPMAX )
{
feettl = 0 ;
doamount = 0 ;
ischaoe = true ;
//feettl = 99999 - ttlamount;
//doamount = enumValue.StlAmount * (feettl /(enumValue.StlAmount * UExrate));
//amtttl = amtttl + feettl;
//ttlamount = ttlamount + feettl;
}
else {
doamount = enumValue . StlAmount ;
if ( enumValue . FeeType = = 2 )
amtttl = amtttl - feettl ;
else
amtttl = amtttl + feettl ;
ttlamount = ttlamount + otamount ;
}
}
if ( feettl ! = 0 )
{
cmdInsert . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsert , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsert , "@BILLNO" , DbType . String , billno ) ;
db . AddInParameter ( cmdInsert , "@BSNO" , DbType . String , enumValue . BSNO ) ;
db . AddInParameter ( cmdInsert , "@MBLNO" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsert , "@HBLNO" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsert , "@CUSTOMERNAME" , DbType . String , enumValue . CustomerName ) ;
//var tops = enumValue.BSNO.Substring(0, 7);
//if (tops == "topseae")
// db.AddInParameter(cmdInsert, "@BSTYPE", DbType.Boolean, true);
//else
db . AddInParameter ( cmdInsert , "@BSTYPE" , DbType . Boolean , false ) ;
db . AddInParameter ( cmdInsert , "@FEEID" , DbType . String , enumValue . CH_ID ) ;
db . AddInParameter ( cmdInsert , "@FEENAME" , DbType . String , enumValue . FeeName ) ;
if ( billcurr = = "" )
db . AddInParameter ( cmdInsert , "@CURRENCY" , DbType . String , enumValue . Currency ) ;
else
db . AddInParameter ( cmdInsert , "@CURRENCY" , DbType . String , billcurr ) ;
if ( billcurr = = "" | | billcurr = = enumValue . Currency )
{
db . AddInParameter ( cmdInsert , "@AMOUNT" , DbType . Decimal , Math . Round ( feettl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsert , "@DOAMOUNT" , DbType . Decimal , 0 ) ;
db . AddInParameter ( cmdInsert , "@EXCHANGERATE" , DbType . Decimal , 1 ) ;
}
else
{
db . AddInParameter ( cmdInsert , "@AMOUNT" , DbType . Decimal , Math . Round ( feettl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsert , "@DOAMOUNT" , DbType . Decimal , 0 ) ;
db . AddInParameter ( cmdInsert , "@EXCHANGERATE" , DbType . Decimal , UExrate ) ;
}
db . AddInParameter ( cmdInsert , "@FEETYPE" , DbType . Int16 , enumValue . FeeType ) ;
db . AddInParameter ( cmdInsert , "@ORIGCURRENCY" , DbType . String , enumValue . Currency ) ;
db . AddInParameter ( cmdInsert , "@ORIGAMOUNT" , DbType . Decimal , doamount ) ;
db . AddInParameter ( cmdInsert , "@CATEGORY" , DbType . Int16 , 6 ) ;
db . AddInParameter ( cmdInsert , "@BILLSTATUS" , DbType . Int16 , 1 ) ;
db . AddInParameter ( cmdInsert , "@ISDELETED" , DbType . Boolean , false ) ;
db . AddInParameter ( cmdInsert , "@CREATETIME" , DbType . DateTime , DateTime . Now ) ;
db . AddInParameter ( cmdInsert , "@INVOICESETTLENO" , DbType . String , duino ) ;
db . AddInParameter ( cmdInsert , "@COMPANYID" , DbType . String , companyid ) ;
db . ExecuteNonQuery ( cmdInsert , tran ) ;
cmdUpdate . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdate , "@GID" , DbType . String , enumValue . CH_ID ) ;
db . AddInParameter ( cmdUpdate , "@ORDERINVOICE" , DbType . Decimal , doamount ) ;
db . ExecuteNonQuery ( cmdUpdate , tran ) ;
if ( isList )
{
var defGOODFEELIST = MsCodeGoodInvDAL . GetData ( " GOODNAME='代理" + enumValue . FeeName + "'" ) ;
var quantity = enumValue . QUANTITY ;
if ( quantity = = 0 ) quantity = 1 ;
cmdInsertInv . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsertInv , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsertInv , "@PID" , DbType . String , GID ) ;
db . AddInParameter ( cmdInsertInv , "@SerialNo" , DbType . Int32 , 1 ) ;
if ( defGOODFEELIST . GOODNAME = = "" )
{
db . AddInParameter ( cmdInsertInv , "@GOODSNAME" , DbType . String , "代理运杂费" ) ;
db . AddInParameter ( cmdInsertInv , "@UNIT" , DbType . String , "票" ) ;
}
else
{
db . AddInParameter ( cmdInsertInv , "@GOODSNAME" , DbType . String , defGOODFEELIST . GID ) ;
db . AddInParameter ( cmdInsertInv , "@UNIT" , DbType . String , defGOODFEELIST . UNIT ) ;
}
db . AddInParameter ( cmdInsertInv , "@SPEC" , DbType . String , defGOODFEELIST . SPEC ) ;
db . AddInParameter ( cmdInsertInv , "@PKGS" , DbType . Decimal , quantity ) ;
db . AddInParameter ( cmdInsertInv , "@TAXPRICE" , DbType . Decimal , Math . Round ( feettl / quantity , 3 , MidpointRounding . AwayFromZero ) ) ;
// db.AddInParameter(cmdInsertInv, "@TAXRATE", DbType.Decimal,defGOODFEELIST.TAXRATE);
db . AddInParameter ( cmdInsertInv , "@TAXRATE" , DbType . Decimal , headdata . RATE ) ;
if ( headdata . RATE = = 0 )
{
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , Math . Round ( feettl / quantity , 3 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , Math . Round ( feettl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , 0 ) ;
}
else
{
// var tax = Math.Round(feettl / (1 + defGOODFEELIST.TAXRATE / 100) * (defGOODFEELIST.TAXRATE / 100), 2);
var tax = Math . Round ( feettl / ( 1 + headdata . RATE / 100 ) * ( headdata . RATE / 100 ) , 2 , MidpointRounding . AwayFromZero ) ;
var amount = feettl - tax ;
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , Math . Round ( amount / quantity , 3 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , tax ) ;
}
db . AddInParameter ( cmdInsertInv , "@Remark" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsertInv , "@GOODCODE" , DbType . String , defGOODFEELIST . GOODCODE ) ;
db . ExecuteNonQuery ( cmdInsertInv , tran ) ;
}
if ( ! string . IsNullOrEmpty ( duino ) )
{
var cmdUpdateDui =
db . GetSqlStringCommand (
@"update ch_dui_detail set INVNO=@PAYNO WHERE CH_ID=@GID AND DUINO=@DUINO" ) ;
cmdUpdateDui . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdateDui , "@GID" , DbType . String , enumValue . CH_ID ) ;
db . AddInParameter ( cmdUpdateDui , "@PAYNO" , DbType . String , billno ) ;
db . AddInParameter ( cmdUpdateDui , "@DUINO" , DbType . String , duino ) ;
db . ExecuteNonQuery ( cmdUpdateDui , tran ) ;
}
}
}
}
}
acctaxrate = headdata . RATE ;
if ( ! isList & & amtttl ! = 0 )
{
// acctaxrate = defGOOD.TAXRATE;
var dataList = GetDetailList ( " PID='" + GID + "'" ) ;
if ( dataList . Count ! = 0 )
{
var invlist = dataList [ 0 ] ;
cmdUpdateInv . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdateInv , "@GID" , DbType . String , invlist . GID ) ;
if ( acctaxrate = = 0 )
{
db . AddInParameter ( cmdUpdateInv , "@AMOUNT" , DbType . Decimal , Math . Round ( invlist . AMOUNT + amtttl , 2 ) ) ;
db . AddInParameter ( cmdUpdateInv , "@TAXPRICE" , DbType . Decimal , Math . Round ( ( invlist . AMOUNT + amtttl ) / invlist . PKGS , 2 ) ) ;
db . AddInParameter ( cmdUpdateInv , "@PRICE" , DbType . Decimal , Math . Round ( ( invlist . AMOUNT + amtttl ) / invlist . PKGS , 2 ) ) ;
db . AddInParameter ( cmdUpdateInv , "@TAXRATE" , DbType . Decimal , 0 ) ;
db . AddInParameter ( cmdUpdateInv , "@TAX" , DbType . Decimal , 0 ) ;
}
else
{
amtttl = amtttl + ( invlist . TAXPRICE * invlist . PKGS ) ;
var tax = Math . Round ( amtttl / ( 1 + acctaxrate / 100 ) * ( acctaxrate / 100 ) , 2 , MidpointRounding . AwayFromZero ) ;
var amount = amtttl - tax ;
db . AddInParameter ( cmdUpdateInv , "@TAXPRICE" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdUpdateInv , "@PRICE" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdUpdateInv , "@AMOUNT" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdUpdateInv , "@TAX" , DbType . Decimal , tax ) ;
//db.AddInParameter(cmdUpdateInv, "@AMOUNT", DbType.Decimal, invlist.AMOUNT + amount);
//db.AddInParameter(cmdUpdateInv, "@TAXPRICE", DbType.Decimal, ((invlist.AMOUNT + amount) / invlist.PKGS) * (1 + acctaxrate / 100));
//db.AddInParameter(cmdUpdateInv, "@PRICE", DbType.Decimal, (invlist.AMOUNT + amount) / invlist.PKGS);
//db.AddInParameter(cmdUpdateInv, "@TAX", DbType.Decimal, invlist.TAX+tax);
}
db . ExecuteNonQuery ( cmdUpdateInv , tran ) ;
}
else
{
cmdInsertInv . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsertInv , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsertInv , "@PID" , DbType . String , GID ) ;
db . AddInParameter ( cmdInsertInv , "@SerialNo" , DbType . Int32 , 1 ) ;
if ( defGOOD . GOODNAME = = "" )
{
db . AddInParameter ( cmdInsertInv , "@GOODSNAME" , DbType . String , "代理运杂费" ) ;
db . AddInParameter ( cmdInsertInv , "@UNIT" , DbType . String , "票" ) ;
}
else
{
db . AddInParameter ( cmdInsertInv , "@GOODSNAME" , DbType . String , defGOOD . GID ) ;
db . AddInParameter ( cmdInsertInv , "@UNIT" , DbType . String , defGOOD . UNIT ) ;
}
db . AddInParameter ( cmdInsertInv , "@SPEC" , DbType . String , defGOOD . SPEC ) ;
db . AddInParameter ( cmdInsertInv , "@PKGS" , DbType . Decimal , 1 ) ;
db . AddInParameter ( cmdInsertInv , "@TAXPRICE" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@TAXRATE" , DbType . Decimal , acctaxrate ) ;
if ( acctaxrate = = 0 )
{
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , 0 ) ;
}
else
{
var tax = Math . Round ( amtttl / ( 1 + acctaxrate / 100 ) * ( acctaxrate / 100 ) , 2 , MidpointRounding . AwayFromZero ) ;
var amount = amtttl - tax ;
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , tax ) ;
}
db . AddInParameter ( cmdInsertInv , "@Remark" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsertInv , "@GOODCODE" , DbType . String , defGOOD . GOODCODE ) ;
db . ExecuteNonQuery ( cmdInsertInv , tran ) ;
}
}
var MBLNOSTR = "" ;
if ( FEENOAUDITCANTSHENINV . PARAMVALUE = = "1" )
{
if ( billnoinvlist ! = null )
{
foreach ( var billnoinv in billnoinvlist )
{
MBLNOSTR = MBLNOSTR + billnoinv . MBLNO + "," ;
}
}
}
if ( MBLNOSTR ! = "" ) MBLNOSTR = "主提单号:" + MBLNOSTR + " 业务应收费用中存在未审核的费用,不能添加发票申请!" ;
else MBLNOSTR = "添加成功" ;
if ( ischaoe ) {
result . Success = false ;
result . Message = "单张发票不能超过十万元" ;
}
else {
result = new DBResult ( ) ;
result . Success = true ;
result . Message = MBLNOSTR ;
}
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "保存出现错误,请重试或联系系统管理员" ;
return result ;
}
}
//result.Success = true;
//result.Message = "保存成功";
return result ;
}
public static DBResult AddDetailNew ( string billno , string duino , List < BillChfeeDetail > bodyList , string curr , string companyid , bool isList , string GID , ChInvoiceapplication headdata )
{
var result = new DBResult ( ) ;
decimal ttlamount = headdata . APPLYAMOUNT ;
bool INVAPPMAX = false ;
var INVAPPMAXPARAM = MsSysParamSetDAL . GetData ( "PARAMNAME='INVAPPMAX'" ) ;
if ( INVAPPMAXPARAM . PARAMVALUE = = "1" )
{
INVAPPMAX = true ;
}
if ( ttlamount > = 99999 & & INVAPPMAX )
{
result . Success = false ;
result . Message = "单张发票申请不能超过100000" ;
return result ;
}
bool ischaoe = false ;
var defGOOD = MsCodeGoodInvDAL . GetData ( " ISDEF='1' and (DEFCURR='' or DEFCURR='" + headdata . RECVCURR + "')" ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
var cmdInsert =
db . GetSqlStringCommand (
@ "insert into ch_fee_do (GID,BILLNO,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY
, AMOUNT , DOAMOUNT , FEETYPE , CATEGORY , BILLSTATUS , ISDELETED , CREATETIME
, EXCHANGERATE , ORIGCURRENCY , ORIGAMOUNT , INVOICESETTLENO , COMPANYID )
values ( @GID , @BILLNO , @BSNO , @MBLNO , @HBLNO , @CUSTOMERNAME , @BSTYPE , @FEEID , @FEENAME , @CURRENCY
, @AMOUNT , @DOAMOUNT , @FEETYPE , @CATEGORY , @BILLSTATUS , @ISDELETED , @CREATETIME
, @EXCHANGERATE , @ORIGCURRENCY , @ORIGAMOUNT , @INVOICESETTLENO , @COMPANYID ) ");
var cmdUpdate =
db . GetSqlStringCommand (
@"UPDATE CH_FEE SET ORDERINVOICE=ISNULL(ORDERINVOICE,0)+@ORDERINVOICE WHERE GID=@GID " ) ;
var cmdInsertInv =
db . GetSqlStringCommand (
@ "insert into ch_fee_invoicedetail (GID,PID,SerialNo,GOODSNAME,SPEC,UNIT,PKGS,TAXPRICE,PRICE,AMOUNT,TAXRATE,TAX,Remark,GOODCODE)
values ( @GID , @PID , @SerialNo , @GOODSNAME , @SPEC , @UNIT , @PKGS , @TAXPRICE , @PRICE , @AMOUNT , @TAXRATE , @TAX , @Remark , @GOODCODE ) ");
var cmdUpdateInv =
db . GetSqlStringCommand (
@ "update ch_fee_invoicedetail set TAXPRICE=@TAXPRICE
, PRICE = @PRICE , AMOUNT = @AMOUNT , TAX = @TAX where GID = @GID ");
decimal amtttl = 0 ;
decimal acctaxrate = 0 ;
decimal doamount = 0 ;
decimal StlAmount = 0 ;
if ( bodyList ! = null )
{
foreach ( var enumValue in bodyList )
{
if ( ttlamount > = 99999 & & INVAPPMAX ) break ;
if ( ( ttlamount + Math . Round ( enumValue . DoAmount , 2 , MidpointRounding . AwayFromZero ) ) > = 99999 & & INVAPPMAX )
{
StlAmount = 0 ;
doamount = 0 ;
ischaoe = true ;
//doamount = 99999-ttlamount;
//StlAmount = Math.Round(enumValue.StlAmount*((99999 - ttlamount)/doamount),2, MidpointRounding.AwayFromZero);
}
else
{
doamount = Math . Round ( enumValue . DoAmount , 2 , MidpointRounding . AwayFromZero ) ;
StlAmount = enumValue . StlAmount ;
}
ttlamount = ttlamount + doamount ;
cmdInsert . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsert , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsert , "@BILLNO" , DbType . String , billno ) ;
db . AddInParameter ( cmdInsert , "@BSNO" , DbType . String , enumValue . BSNO ) ;
db . AddInParameter ( cmdInsert , "@MBLNO" , DbType . String , enumValue . MBLNO ) ;
db . AddInParameter ( cmdInsert , "@HBLNO" , DbType . String , enumValue . HBLNO ) ;
db . AddInParameter ( cmdInsert , "@CUSTOMERNAME" , DbType . String , enumValue . FeeObjName ) ;
//var tops = enumValue.BSNO.Substring(0, 7);
//if (tops == "topseae")
// db.AddInParameter(cmdInsert, "@BSTYPE", DbType.Boolean, true);
//else
db . AddInParameter ( cmdInsert , "@BSTYPE" , DbType . Boolean , false ) ;
db . AddInParameter ( cmdInsert , "@FEEID" , DbType . String , enumValue . CH_ID ) ;
db . AddInParameter ( cmdInsert , "@FEENAME" , DbType . String , enumValue . FeeName ) ;
db . AddInParameter ( cmdInsert , "@CURRENCY" , DbType . String , enumValue . Currency ) ;
db . AddInParameter ( cmdInsert , "@AMOUNT" , DbType . Decimal , doamount ) ;
db . AddInParameter ( cmdInsert , "@DOAMOUNT" , DbType . Decimal , 0 ) ;
db . AddInParameter ( cmdInsert , "@FEETYPE" , DbType . Int16 , enumValue . FeeType ) ;
db . AddInParameter ( cmdInsert , "@CATEGORY" , DbType . Int16 , 6 ) ;
db . AddInParameter ( cmdInsert , "@BILLSTATUS" , DbType . Int16 , 1 ) ;
db . AddInParameter ( cmdInsert , "@ISDELETED" , DbType . Boolean , false ) ;
db . AddInParameter ( cmdInsert , "@CREATETIME" , DbType . DateTime , DateTime . Now ) ;
db . AddInParameter ( cmdInsert , "@EXCHANGERATE" , DbType . Decimal , enumValue . ExChangerate ) ;
db . AddInParameter ( cmdInsert , "@ORIGCURRENCY" , DbType . String , enumValue . Currency ) ;
db . AddInParameter ( cmdInsert , "@ORIGAMOUNT" , DbType . Decimal , StlAmount ) ;
db . AddInParameter ( cmdInsert , "@INVOICESETTLENO" , DbType . String , duino ) ;
db . AddInParameter ( cmdInsert , "@COMPANYID" , DbType . String , companyid ) ;
db . ExecuteNonQuery ( cmdInsert , tran ) ;
cmdUpdate . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdate , "@GID" , DbType . String , enumValue . CH_ID ) ;
db . AddInParameter ( cmdUpdate , "@ORDERINVOICE" , DbType . Decimal , StlAmount ) ;
db . ExecuteNonQuery ( cmdUpdate , tran ) ;
if ( ! string . IsNullOrEmpty ( duino ) )
{
var cmdUpdateDui =
db . GetSqlStringCommand (
@"update ch_dui_detail set INVNO=@PAYNO WHERE CH_ID=@GID AND DUINO=@DUINO" ) ;
cmdUpdateDui . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdateDui , "@GID" , DbType . String , enumValue . CH_ID ) ;
db . AddInParameter ( cmdUpdateDui , "@PAYNO" , DbType . String , billno ) ;
db . AddInParameter ( cmdUpdateDui , "@DUINO" , DbType . String , duino ) ;
db . ExecuteNonQuery ( cmdUpdateDui , tran ) ;
}
if ( isList & & doamount ! = 0 )
{
cmdInsertInv . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsertInv , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsertInv , "@PID" , DbType . String , GID ) ;
db . AddInParameter ( cmdInsertInv , "@SerialNo" , DbType . Int32 , 1 ) ;
db . AddInParameter ( cmdInsertInv , "@GOODSNAME" , DbType . String , enumValue . FeeName ) ;
db . AddInParameter ( cmdInsertInv , "@SPEC" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsertInv , "@UNIT" , DbType . String , "票" ) ;
db . AddInParameter ( cmdInsertInv , "@PKGS" , DbType . Decimal , 1 ) ;
db . AddInParameter ( cmdInsertInv , "@TAXPRICE" , DbType . Decimal , doamount ) ;
db . AddInParameter ( cmdInsertInv , "@TAXRATE" , DbType . Decimal , headdata . RATE ) ;
if ( headdata . RATE = = 0 )
{
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , doamount ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , doamount ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , 0 ) ;
}
else
{
var tax = Math . Round ( doamount / ( 1 + headdata . RATE / 100 ) * ( headdata . RATE / 100 ) , 2 , MidpointRounding . AwayFromZero ) ;
var amount = doamount - tax ;
// var amount = Math.Round(enumValue.DoAmount / (1 + enumValue.AccTaxRate / 100),2);
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , tax ) ;
}
db . AddInParameter ( cmdInsertInv , "@Remark" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsertInv , "@GOODCODE" , DbType . String , "" ) ;
db . ExecuteNonQuery ( cmdInsertInv , tran ) ;
}
if ( enumValue . FeeType = = 2 )
amtttl = amtttl - doamount ;
else
amtttl = amtttl + doamount ;
}
}
acctaxrate = headdata . RATE ;
if ( ! isList & & ttlamount ! = 0 )
{
var dataList = GetDetailList ( " PID='" + GID + "'" ) ;
if ( dataList . Count ! = 0 )
{
var invlist = dataList [ 0 ] ;
cmdUpdateInv . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdateInv , "@GID" , DbType . String , invlist . GID ) ;
if ( acctaxrate = = 0 )
{
db . AddInParameter ( cmdUpdateInv , "@AMOUNT" , DbType . Decimal , Math . Round ( invlist . AMOUNT + amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdUpdateInv , "@TAXPRICE" , DbType . Decimal , Math . Round ( ( invlist . AMOUNT + amtttl ) / invlist . PKGS , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdUpdateInv , "@PRICE" , DbType . Decimal , Math . Round ( ( invlist . AMOUNT + amtttl ) / invlist . PKGS , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdUpdateInv , "@TAXRATE" , DbType . Decimal , 0 ) ;
db . AddInParameter ( cmdUpdateInv , "@TAX" , DbType . Decimal , 0 ) ;
}
else
{
amtttl = amtttl + ( invlist . TAXPRICE * invlist . PKGS ) ;
var tax = Math . Round ( amtttl / ( 1 + acctaxrate / 100 ) * ( acctaxrate / 100 ) , 2 , MidpointRounding . AwayFromZero ) ;
var amount = amtttl - tax ;
db . AddInParameter ( cmdUpdateInv , "@TAXPRICE" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdUpdateInv , "@PRICE" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdUpdateInv , "@AMOUNT" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdUpdateInv , "@TAX" , DbType . Decimal , tax ) ;
//var tax = Math.Round(amtttl / (1 + acctaxrate / 100) * (acctaxrate / 100), 2);
//var amount = amtttl - tax;
//db.AddInParameter(cmdUpdateInv, "@AMOUNT", DbType.Decimal, Math.Round(invlist.AMOUNT + amount, 2));
//db.AddInParameter(cmdUpdateInv, "@TAXPRICE", DbType.Decimal, Math.Round(((invlist.AMOUNT + amount) / invlist.PKGS) * (1 + acctaxrate / 100), 2));
//db.AddInParameter(cmdUpdateInv, "@PRICE", DbType.Decimal, Math.Round((invlist.AMOUNT + amount) / invlist.PKGS, 2));
//db.AddInParameter(cmdUpdateInv, "@TAX", DbType.Decimal, invlist.TAX + tax);
}
db . ExecuteNonQuery ( cmdUpdateInv , tran ) ;
}
else
{
cmdInsertInv . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsertInv , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsertInv , "@PID" , DbType . String , GID ) ;
db . AddInParameter ( cmdInsertInv , "@SerialNo" , DbType . Int32 , 1 ) ;
if ( defGOOD . GOODNAME = = "" )
{
db . AddInParameter ( cmdInsertInv , "@GOODSNAME" , DbType . String , "代理运杂费" ) ;
db . AddInParameter ( cmdInsertInv , "@UNIT" , DbType . String , "票" ) ;
}
else
{
db . AddInParameter ( cmdInsertInv , "@GOODSNAME" , DbType . String , defGOOD . GID ) ;
db . AddInParameter ( cmdInsertInv , "@UNIT" , DbType . String , defGOOD . UNIT ) ;
}
db . AddInParameter ( cmdInsertInv , "@SPEC" , DbType . String , defGOOD . SPEC ) ;
db . AddInParameter ( cmdInsertInv , "@PKGS" , DbType . Decimal , 1 ) ;
db . AddInParameter ( cmdInsertInv , "@TAXPRICE" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@TAXRATE" , DbType . Decimal , acctaxrate ) ;
if ( acctaxrate = = 0 )
{
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , 0 ) ;
}
else
{
var tax = Math . Round ( amtttl / ( 1 + acctaxrate / 100 ) * ( acctaxrate / 100 ) , 2 , MidpointRounding . AwayFromZero ) ;
var amount = amtttl - tax ;
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , Math . Round ( amount , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , Math . Round ( amount , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , tax ) ;
}
db . AddInParameter ( cmdInsertInv , "@Remark" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsertInv , "@GOODCODE" , DbType . String , defGOOD . GOODCODE ) ;
db . ExecuteNonQuery ( cmdInsertInv , tran ) ;
}
}
if ( ischaoe )
{
result . Success = false ;
result . Message = "单张发票不能超过十万元" ;
}
else
{
result = new DBResult ( ) ;
result . Success = true ;
result . Message = "保存成功" ;
}
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "保存出现错误,请重试或联系系统管理员" ;
return result ;
}
}
//result.Success = true;
//result.Message = "保存成功" + result.Message;
return result ;
}
public static DBResult AddBillNew ( string billno , string duino , string billcust , string billcurr , string feesql , List < ChFeeExrate > exratelist , string companyid , bool isList , string GID , ChInvoiceapplication headdata , bool custgroup = false , string userid = "" )
{
var result = new DBResult ( ) ;
bool INVAPPMAX = false ;
decimal ttlamount = headdata . APPLYAMOUNT ;
var INVAPPMAXPARAM = MsSysParamSetDAL . GetData ( "PARAMNAME='INVAPPMAX'" ) ;
if ( INVAPPMAXPARAM . PARAMVALUE = = "1" )
{
INVAPPMAX = true ;
}
if ( ttlamount > = 99999 & & INVAPPMAX )
{
result . Success = false ;
result . Message = "单张发票申请不能超过100000" ;
return result ;
}
Database db = DatabaseFactory . CreateDatabase ( ) ;
decimal amtttl = 0 ;
decimal acctaxrate = 0 ;
bool adddo = true ;
bool ischaoe = false ;
var FEENOAUDITCANTSHENINV = MsSysParamSetDAL . GetData ( "PARAMNAME='FEENOAUDITCANTSHENINV'" ) ;
List < DSWeb . MvcShipping . Models . MsOpBill . MsOpBill > billnoinvlist = null ;
var defGOOD = MsCodeGoodInvDAL . GetData ( " ISDEF='1' and (DEFCURR='' or DEFCURR='" + headdata . RECVCURR + "')" ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
if ( ! custgroup )
feesql = feesql + " AND CUSTOMERNAME='" + billcust + "'" ;
var feelist = GetFeeDetailList ( feesql , duino , userid , "" , companyid ) ;
if ( FEENOAUDITCANTSHENINV . PARAMVALUE = = "1" )
{
billnoinvlist = MsOpBillDAL . GetDataList ( " BSNO IN (select DISTINCT BSNO from ch_fee (NOLOCK) where FEETYPE=1 and (FEESTATUS=1 OR FEESTATUS=2 ) AND BSNO IN (SELECT DISTINCT BSNO FROM CH_FEE f WHERE f.ISINVOICE<>1 and f.FEESTATUS IN (0,8,9) and (f.AMOUNT<>(ISNULL(f.INVOICE,0)+ISNULL(f.ORDERINVOICE,0)-ISNULL(f.ORDERINVSETTLEMENT,0))) AND " + feesql + " ))" ) ;
}
var cmdInsert =
db . GetSqlStringCommand (
@ "insert into ch_fee_do (GID,BILLNO,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY
, AMOUNT , DOAMOUNT , FEETYPE , CATEGORY , BILLSTATUS , ISDELETED , CREATETIME
, EXCHANGERATE , ORIGCURRENCY , ORIGAMOUNT , INVOICESETTLENO , COMPANYID )
values ( @GID , @BILLNO , @BSNO , @MBLNO , @HBLNO , @CUSTOMERNAME , @BSTYPE , @FEEID , @FEENAME , @CURRENCY
, @AMOUNT , @DOAMOUNT , @FEETYPE , @CATEGORY , @BILLSTATUS , @ISDELETED , @CREATETIME
, @EXCHANGERATE , @ORIGCURRENCY , @ORIGAMOUNT , @INVOICESETTLENO , @COMPANYID ) ");
var cmdUpdate =
db . GetSqlStringCommand (
@ "UPDATE CH_FEE SET ORDERINVOICE=ISNULL(ORDERINVOICE,0)+@ORDERINVOICE WHERE GID=@GID AND ((AMOUNT>=0 AND ((AMOUNT-ISNULL(ORDERINVOICE,0))-@ORDERINVOICE)>=0)
OR ( AMOUNT < 0 AND ( ( AMOUNT - ISNULL ( ORDERINVOICE , 0 ) ) - @ORDERINVOICE ) < = 0 ) ) ");
var cmdInsertInv =
db . GetSqlStringCommand (
@ "insert into ch_fee_invoicedetail (GID,PID,SerialNo,GOODSNAME,SPEC,UNIT,PKGS,TAXPRICE,PRICE,AMOUNT,TAXRATE,TAX,Remark,GOODCODE)
values ( @GID , @PID , @SerialNo , @GOODSNAME , @SPEC , @UNIT , @PKGS , @TAXPRICE , @PRICE , @AMOUNT , @TAXRATE , @TAX , @Remark , @GOODCODE ) ");
var cmdUpdateInv =
db . GetSqlStringCommand (
@ "update ch_fee_invoicedetail set TAXPRICE=@TAXPRICE
, PRICE = @PRICE , AMOUNT = @AMOUNT , TAX = @TAX where GID = @GID ");
decimal doamount = 0 ;
decimal StlAmount = 0 ;
decimal ORIGAMOUNT = 0 ;
decimal UExrate = 0 ;
if ( feelist ! = null )
{
foreach ( var enumValue in feelist )
{
//if (ttlamount >= 99999&& INVAPPMAX) break;
if ( FEENOAUDITCANTSHENINV . PARAMVALUE = = "1" )
{
if ( billnoinvlist ! = null )
{
foreach ( var billnoinv in billnoinvlist )
{
if ( enumValue . BSNO = = billnoinv . BSNO ) adddo = false ;
}
}
}
if ( adddo )
{
decimal feettl = 0 ;
decimal otamount = 0 ;
//if (billcurr == enumValue.Currency)
//{
feettl = enumValue . StlAmount ;
if ( enumValue . FeeType = = 2 )
otamount = - enumValue . StlAmount ;
else
otamount = enumValue . StlAmount ;
if ( ( ttlamount + Math . Round ( otamount , 2 , MidpointRounding . AwayFromZero ) ) > = 100000 & & INVAPPMAX )
{
feettl = 0 ;
doamount = 0 ;
ischaoe = true ;
}
else
{
doamount = feettl ;
if ( enumValue . FeeType = = 2 )
amtttl = amtttl - enumValue . StlAmount ;
else
amtttl = amtttl + enumValue . StlAmount ;
ttlamount = ttlamount + otamount ;
}
//}
//else
//{
// UExrate = GetExrate(enumValue.Currency, exratelist);
// if (enumValue.FeeType == 2)
// otamount = -enumValue.StlAmount * UExrate;
// else
// otamount = enumValue.StlAmount * UExrate;
// feettl = enumValue.StlAmount * UExrate;
// feettl = Math.Round(feettl, 2, MidpointRounding.AwayFromZero);
// if ((ttlamount + Math.Round(otamount, 2, MidpointRounding.AwayFromZero)) >= 100000 && INVAPPMAX)
// {
// feettl = 0;
// doamount = 0;
// ischaoe = true;
// //feettl = 99999 - ttlamount;
// //doamount = enumValue.StlAmount * (feettl /(enumValue.StlAmount * UExrate));
// //amtttl = amtttl + feettl;
// //ttlamount = ttlamount + feettl;
// }
// else
// {
// doamount = enumValue.StlAmount;
// if (enumValue.FeeType == 2)
// amtttl = amtttl - feettl;
// else
// amtttl = amtttl + feettl;
// ttlamount = ttlamount + otamount;
// }
//}
if ( feettl ! = 0 )
{
cmdInsert . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsert , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsert , "@BILLNO" , DbType . String , billno ) ;
db . AddInParameter ( cmdInsert , "@BSNO" , DbType . String , enumValue . BSNO ) ;
db . AddInParameter ( cmdInsert , "@MBLNO" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsert , "@HBLNO" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsert , "@CUSTOMERNAME" , DbType . String , enumValue . CustomerName ) ;
//var tops = enumValue.BSNO.Substring(0, 7);
//if (tops == "topseae")
// db.AddInParameter(cmdInsert, "@BSTYPE", DbType.Boolean, true);
//else
db . AddInParameter ( cmdInsert , "@BSTYPE" , DbType . Boolean , false ) ;
db . AddInParameter ( cmdInsert , "@FEEID" , DbType . String , enumValue . CH_ID ) ;
db . AddInParameter ( cmdInsert , "@FEENAME" , DbType . String , enumValue . FeeName ) ;
db . AddInParameter ( cmdInsert , "@CURRENCY" , DbType . String , enumValue . Currency ) ;
//if (billcurr == enumValue.Currency)
//{
db . AddInParameter ( cmdInsert , "@AMOUNT" , DbType . Decimal , Math . Round ( feettl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsert , "@DOAMOUNT" , DbType . Decimal , 0 ) ;
db . AddInParameter ( cmdInsert , "@EXCHANGERATE" , DbType . Decimal , 1 ) ;
//}
//else
//{
// db.AddInParameter(cmdInsert, "@AMOUNT", DbType.Decimal, Math.Round(feettl, 2, MidpointRounding.AwayFromZero));
// db.AddInParameter(cmdInsert, "@DOAMOUNT", DbType.Decimal, 0);
// db.AddInParameter(cmdInsert, "@EXCHANGERATE", DbType.Decimal, UExrate);
//}
db . AddInParameter ( cmdInsert , "@FEETYPE" , DbType . Int16 , enumValue . FeeType ) ;
db . AddInParameter ( cmdInsert , "@ORIGCURRENCY" , DbType . String , enumValue . Currency ) ;
db . AddInParameter ( cmdInsert , "@ORIGAMOUNT" , DbType . Decimal , doamount ) ;
db . AddInParameter ( cmdInsert , "@CATEGORY" , DbType . Int16 , 6 ) ;
db . AddInParameter ( cmdInsert , "@BILLSTATUS" , DbType . Int16 , 1 ) ;
db . AddInParameter ( cmdInsert , "@ISDELETED" , DbType . Boolean , false ) ;
db . AddInParameter ( cmdInsert , "@CREATETIME" , DbType . DateTime , DateTime . Now ) ;
db . AddInParameter ( cmdInsert , "@INVOICESETTLENO" , DbType . String , duino ) ;
db . AddInParameter ( cmdInsert , "@COMPANYID" , DbType . String , companyid ) ;
db . ExecuteNonQuery ( cmdInsert , tran ) ;
cmdUpdate . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdate , "@GID" , DbType . String , enumValue . CH_ID ) ;
db . AddInParameter ( cmdUpdate , "@ORDERINVOICE" , DbType . Decimal , doamount ) ;
db . ExecuteNonQuery ( cmdUpdate , tran ) ;
if ( isList )
{
var defGOODFEELIST = MsCodeGoodInvDAL . GetData ( " GOODNAME='代理" + enumValue . FeeName + "'" ) ;
var quantity = enumValue . QUANTITY ;
if ( quantity = = 0 ) quantity = 1 ;
cmdInsertInv . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsertInv , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsertInv , "@PID" , DbType . String , GID ) ;
db . AddInParameter ( cmdInsertInv , "@SerialNo" , DbType . Int32 , 1 ) ;
if ( defGOODFEELIST . GOODNAME = = "" )
{
db . AddInParameter ( cmdInsertInv , "@GOODSNAME" , DbType . String , "代理运杂费" ) ;
db . AddInParameter ( cmdInsertInv , "@UNIT" , DbType . String , "票" ) ;
}
else
{
db . AddInParameter ( cmdInsertInv , "@GOODSNAME" , DbType . String , defGOODFEELIST . GID ) ;
db . AddInParameter ( cmdInsertInv , "@UNIT" , DbType . String , defGOODFEELIST . UNIT ) ;
}
db . AddInParameter ( cmdInsertInv , "@SPEC" , DbType . String , defGOODFEELIST . SPEC ) ;
db . AddInParameter ( cmdInsertInv , "@PKGS" , DbType . Decimal , quantity ) ;
db . AddInParameter ( cmdInsertInv , "@TAXPRICE" , DbType . Decimal , Math . Round ( feettl / quantity , 3 , MidpointRounding . AwayFromZero ) ) ;
// db.AddInParameter(cmdInsertInv, "@TAXRATE", DbType.Decimal,defGOODFEELIST.TAXRATE);
db . AddInParameter ( cmdInsertInv , "@TAXRATE" , DbType . Decimal , headdata . RATE ) ;
if ( headdata . RATE = = 0 )
{
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , Math . Round ( feettl / quantity , 3 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , Math . Round ( feettl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , 0 ) ;
}
else
{
// var tax = Math.Round(feettl / (1 + defGOODFEELIST.TAXRATE / 100) * (defGOODFEELIST.TAXRATE / 100), 2);
var tax = Math . Round ( feettl / ( 1 + headdata . RATE / 100 ) * ( headdata . RATE / 100 ) , 2 , MidpointRounding . AwayFromZero ) ;
var amount = feettl - tax ;
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , Math . Round ( amount / quantity , 3 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , tax ) ;
}
db . AddInParameter ( cmdInsertInv , "@Remark" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsertInv , "@GOODCODE" , DbType . String , defGOODFEELIST . GOODCODE ) ;
db . ExecuteNonQuery ( cmdInsertInv , tran ) ;
}
if ( ! string . IsNullOrEmpty ( duino ) )
{
var cmdUpdateDui =
db . GetSqlStringCommand (
@"update ch_dui_detail set INVNO=@PAYNO WHERE CH_ID=@GID AND DUINO=@DUINO" ) ;
cmdUpdateDui . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdateDui , "@GID" , DbType . String , enumValue . CH_ID ) ;
db . AddInParameter ( cmdUpdateDui , "@PAYNO" , DbType . String , billno ) ;
db . AddInParameter ( cmdUpdateDui , "@DUINO" , DbType . String , duino ) ;
db . ExecuteNonQuery ( cmdUpdateDui , tran ) ;
}
}
}
}
}
acctaxrate = headdata . RATE ;
if ( ! isList & & amtttl ! = 0 )
{
// acctaxrate = defGOOD.TAXRATE;
var dataList = GetDetailList ( " PID='" + GID + "'" ) ;
if ( dataList . Count ! = 0 )
{
var invlist = dataList [ 0 ] ;
cmdUpdateInv . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdateInv , "@GID" , DbType . String , invlist . GID ) ;
if ( acctaxrate = = 0 )
{
db . AddInParameter ( cmdUpdateInv , "@AMOUNT" , DbType . Decimal , Math . Round ( invlist . AMOUNT + amtttl , 2 ) ) ;
db . AddInParameter ( cmdUpdateInv , "@TAXPRICE" , DbType . Decimal , Math . Round ( ( invlist . AMOUNT + amtttl ) / invlist . PKGS , 2 ) ) ;
db . AddInParameter ( cmdUpdateInv , "@PRICE" , DbType . Decimal , Math . Round ( ( invlist . AMOUNT + amtttl ) / invlist . PKGS , 2 ) ) ;
db . AddInParameter ( cmdUpdateInv , "@TAXRATE" , DbType . Decimal , 0 ) ;
db . AddInParameter ( cmdUpdateInv , "@TAX" , DbType . Decimal , 0 ) ;
}
else
{
amtttl = amtttl + ( invlist . TAXPRICE * invlist . PKGS ) ;
var tax = Math . Round ( amtttl / ( 1 + acctaxrate / 100 ) * ( acctaxrate / 100 ) , 2 , MidpointRounding . AwayFromZero ) ;
var amount = amtttl - tax ;
db . AddInParameter ( cmdUpdateInv , "@TAXPRICE" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdUpdateInv , "@PRICE" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdUpdateInv , "@AMOUNT" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdUpdateInv , "@TAX" , DbType . Decimal , tax ) ;
//db.AddInParameter(cmdUpdateInv, "@AMOUNT", DbType.Decimal, invlist.AMOUNT + amount);
//db.AddInParameter(cmdUpdateInv, "@TAXPRICE", DbType.Decimal, ((invlist.AMOUNT + amount) / invlist.PKGS) * (1 + acctaxrate / 100));
//db.AddInParameter(cmdUpdateInv, "@PRICE", DbType.Decimal, (invlist.AMOUNT + amount) / invlist.PKGS);
//db.AddInParameter(cmdUpdateInv, "@TAX", DbType.Decimal, invlist.TAX+tax);
}
db . ExecuteNonQuery ( cmdUpdateInv , tran ) ;
}
else
{
cmdInsertInv . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsertInv , "@GID" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsertInv , "@PID" , DbType . String , GID ) ;
db . AddInParameter ( cmdInsertInv , "@SerialNo" , DbType . Int32 , 1 ) ;
if ( defGOOD . GOODNAME = = "" )
{
db . AddInParameter ( cmdInsertInv , "@GOODSNAME" , DbType . String , "代理运杂费" ) ;
db . AddInParameter ( cmdInsertInv , "@UNIT" , DbType . String , "票" ) ;
}
else
{
db . AddInParameter ( cmdInsertInv , "@GOODSNAME" , DbType . String , defGOOD . GID ) ;
db . AddInParameter ( cmdInsertInv , "@UNIT" , DbType . String , defGOOD . UNIT ) ;
}
db . AddInParameter ( cmdInsertInv , "@SPEC" , DbType . String , defGOOD . SPEC ) ;
db . AddInParameter ( cmdInsertInv , "@PKGS" , DbType . Decimal , 1 ) ;
db . AddInParameter ( cmdInsertInv , "@TAXPRICE" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@TAXRATE" , DbType . Decimal , acctaxrate ) ;
if ( acctaxrate = = 0 )
{
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , Math . Round ( amtttl , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , 0 ) ;
}
else
{
var tax = Math . Round ( amtttl / ( 1 + acctaxrate / 100 ) * ( acctaxrate / 100 ) , 2 , MidpointRounding . AwayFromZero ) ;
var amount = amtttl - tax ;
db . AddInParameter ( cmdInsertInv , "@PRICE" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdInsertInv , "@AMOUNT" , DbType . Decimal , amount ) ;
db . AddInParameter ( cmdInsertInv , "@TAX" , DbType . Decimal , tax ) ;
}
db . AddInParameter ( cmdInsertInv , "@Remark" , DbType . String , "" ) ;
db . AddInParameter ( cmdInsertInv , "@GOODCODE" , DbType . String , defGOOD . GOODCODE ) ;
db . ExecuteNonQuery ( cmdInsertInv , tran ) ;
}
}
var MBLNOSTR = "" ;
if ( FEENOAUDITCANTSHENINV . PARAMVALUE = = "1" )
{
if ( billnoinvlist ! = null )
{
foreach ( var billnoinv in billnoinvlist )
{
MBLNOSTR = MBLNOSTR + billnoinv . MBLNO + "," ;
}
}
}
if ( MBLNOSTR ! = "" ) MBLNOSTR = "主提单号:" + MBLNOSTR + " 业务应收费用中存在未审核的费用,不能添加发票申请!" ;
else MBLNOSTR = "添加成功" ;
if ( ischaoe )
{
result . Success = false ;
result . Message = "单张发票不能超过十万元" ;
}
else
{
result = new DBResult ( ) ;
result . Success = true ;
result . Message = MBLNOSTR ;
}
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "保存出现错误,请重试或联系系统管理员" ;
return result ;
}
}
//result.Success = true;
//result.Message = "保存成功";
return result ;
}
public static Decimal GetExrate ( string curr , List < ChFeeExrate > exratelist )
{
decimal exrate = 0 ;
if ( exratelist ! = null )
{
foreach ( var enumValue in exratelist )
{
if ( enumValue . CURR = = curr )
{
exrate = enumValue . EXRATE ;
}
}
}
return exrate ;
}
public static DBResult DelFeeDo ( List < Chfee_do_detail > boday , string GID )
{
var result = new DBResult ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
decimal AMOUNT = 0 ;
if ( boday ! = null )
{
var cmddelete = db . GetSqlStringCommand ( "delete from ch_fee_do where GID=@FEEDOID" ) ;
var cmdupdate = db . GetSqlStringCommand ( "update ch_fee set ORDERINVOICE=ORDERINVOICE-@ORIGAMOUNT where GID=@GID" ) ;
var cmdupdatedui = db . GetSqlStringCommand ( "update ch_dui_detail set INVNO='' where CH_ID=@GID AND INVNO=@PAYNO AND DUINO=@DUINO" ) ;
foreach ( var enumValue in boday )
{
cmddelete . Parameters . Clear ( ) ;
db . AddInParameter ( cmddelete , "@FEEDOID" , DbType . String , enumValue . FEEDOID ) ;
db . ExecuteNonQuery ( cmddelete , tran ) ;
cmdupdate . Parameters . Clear ( ) ;
db . AddInParameter ( cmdupdate , "@ORIGAMOUNT" , DbType . Decimal , enumValue . ORIGAMOUNT ) ;
db . AddInParameter ( cmdupdate , "@GID" , DbType . String , enumValue . FEEID ) ;
db . ExecuteNonQuery ( cmdupdate , tran ) ;
if ( enumValue . FEETYPE = = 1 )
AMOUNT = AMOUNT + enumValue . AMOUNT ;
else AMOUNT = AMOUNT - enumValue . AMOUNT ;
if ( ! string . IsNullOrEmpty ( enumValue . INVOICESETTLENO ) )
{
cmdupdatedui . Parameters . Clear ( ) ;
db . AddInParameter ( cmdupdatedui , "@GID" , DbType . String , enumValue . FEEID ) ;
db . AddInParameter ( cmdupdatedui , "@PAYNO" , DbType . String , enumValue . BILLNO ) ;
db . AddInParameter ( cmdupdatedui , "@DUINO" , DbType . String , enumValue . INVOICESETTLENO ) ;
db . ExecuteNonQuery ( cmdupdatedui , tran ) ;
}
}
}
var dataList = GetDetailList ( " PID='" + GID + "'" ) ;
if ( dataList . Count ! = 0 )
{
var cmdUpdateInv =
db . GetSqlStringCommand (
@ "update ch_fee_invoicedetail set TAXPRICE=@TAXPRICE
, PRICE = @PRICE , AMOUNT = @AMOUNT , TAX = @TAX where GID = @GID ");
var invlist = dataList [ 0 ] ;
cmdUpdateInv . Parameters . Clear ( ) ;
db . AddInParameter ( cmdUpdateInv , "@GID" , DbType . String , invlist . GID ) ;
if ( invlist . TAXRATE = = 0 )
{
db . AddInParameter ( cmdUpdateInv , "@AMOUNT" , DbType . Decimal , Math . Round ( invlist . AMOUNT - AMOUNT , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdUpdateInv , "@TAXPRICE" , DbType . Decimal , Math . Round ( ( invlist . AMOUNT - AMOUNT ) / invlist . PKGS , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdUpdateInv , "@PRICE" , DbType . Decimal , Math . Round ( ( invlist . AMOUNT - AMOUNT ) / invlist . PKGS , 2 , MidpointRounding . AwayFromZero ) ) ;
db . AddInParameter ( cmdUpdateInv , "@TAXRATE" , DbType . Decimal , 0 ) ;
db . AddInParameter ( cmdUpdateInv , "@TAX" , DbType . Decimal , 0 ) ;
}
else
{
var tax = Math . Round ( AMOUNT / ( 1 + invlist . TAXRATE / 100 ) * ( invlist . TAXRATE / 100 ) , 2 , MidpointRounding . AwayFromZero ) ;
var amount = AMOUNT - tax ;
db . AddInParameter ( cmdUpdateInv , "@AMOUNT" , DbType . Decimal , invlist . AMOUNT - amount ) ;
db . AddInParameter ( cmdUpdateInv , "@TAXPRICE" , DbType . Decimal , ( ( invlist . AMOUNT - amount ) / invlist . PKGS ) * ( 1 + invlist . TAXRATE / 100 ) ) ;
db . AddInParameter ( cmdUpdateInv , "@PRICE" , DbType . Decimal , ( invlist . AMOUNT - amount ) / invlist . PKGS ) ;
db . AddInParameter ( cmdUpdateInv , "@TAX" , DbType . Decimal , invlist . TAX - tax ) ;
}
db . ExecuteNonQuery ( cmdUpdateInv , tran ) ;
}
result = new DBResult ( ) ;
result . Success = true ;
result . Message = "成功" ;
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "保存出现错误,请重试或联系系统管理员" ;
return result ;
}
}
result . Success = true ;
result . Message = "保存成功" ;
return result ;
}
public static int p_update_Amount ( string billno , string GID )
{
Database db = DatabaseFactory . CreateDatabase ( ) ;
var cmd = db . GetStoredProcCommand ( "p_update_invapplycation" ) ;
db . AddInParameter ( cmd , "@con_no" , DbType . String , billno ) ;
db . AddInParameter ( cmd , "@con_gid" , DbType . String , GID ) ;
db . ExecuteNonQuery ( cmd ) ;
return 0 ;
}
public static int p_update_AmountNew ( string billno , string GID , string deptname , string companyid )
{
Database db = DatabaseFactory . CreateDatabase ( ) ;
var cmd = db . GetStoredProcCommand ( "p_update_invapplycationNew" ) ;
db . AddInParameter ( cmd , "@con_no" , DbType . String , billno ) ;
db . AddInParameter ( cmd , "@con_gid" , DbType . String , GID ) ;
db . ExecuteNonQuery ( cmd ) ;
var headData = ChinvoiceapplicationDAL . GetData ( " BILLNO='" + billno + "'" ) ;
var dataList = ChinvoiceapplicationDAL . GetApplicationDetailList ( "LINKGID='" + headData . GID + "'" ) ;
decimal ttlinv = 0 ;
decimal ttlrmbinv = 0 ;
decimal ttlusdinv = 0 ;
T_ALL_DA T_ALL_DA = new EntityDA . T_ALL_DA ( ) ;
var GOODSNAME = T_ALL_DA . GetStrSQL ( "GOODSNAME" , "select top 1 GOODSNAME from SYS_DEPT_ARREARS where DEPT='" + deptname + "' AND OPLBNAME IN (select top 1 OPLBNAME from v_op_bill where BSNO IN (SELECT BSNO FROM CH_FEE_DO WHERE BILLNO='" + headData . BILLNO + "'))" ) ;
var bankList = MsInfoClientDAL . GetBankList ( " LINKID in (SELECT GID FROM INFO_CLIENT WHERE SHORTNAME='" + headData . CUSTOMERNAME + "' and CORPID='" + companyid + "')" , "0" ) ;
if ( dataList ! = null & & dataList . Count ! = 0 )
{
foreach ( var emv in dataList )
{
if ( emv . CURRENCY = = "USD" ) ttlusdinv = ttlusdinv + emv . AMOUNT ;
if ( emv . CURRENCY = = "RMB" ) ttlrmbinv = ttlrmbinv + emv . AMOUNT ;
}
}
if ( headData . INVTYPE = = "原币开票" )
{
if ( ttlusdinv ! = headData . OTCURRAMOUNT )
{
var isfind = false ;
if ( dataList ! = null & & dataList . Count ! = 0 )
{
foreach ( var emv in dataList )
{
if ( emv . CURRENCY = = "USD" )
{
emv . AMOUNT = emv . AMOUNT + ( headData . OTCURRAMOUNT - ttlusdinv ) ;
isfind = true ;
} ;
}
}
if ( ! isfind )
{
ChInvoiceapplicationDetail detail = new ChInvoiceapplicationDetail ( ) ;
detail . LINKGID = "*" ;
detail . INVOICECUSTNAME = headData . INVOICECUSTNAME ;
detail . CURRENCY = "USD" ;
detail . AMOUNT = headData . OTCURRAMOUNT ;
detail . CUSTRATENO = headData . CUSTRATENO ;
detail . CUSTTEL = GetTelephoneList ( headData . CUSTADDRTEL ) ;
if ( ! string . IsNullOrEmpty ( detail . CUSTTEL ) )
detail . CUSTADDR = headData . CUSTADDRTEL . Replace ( detail . CUSTTEL , "" ) ;
else detail . CUSTADDR = headData . CUSTADDRTEL ;
var bank = bankList . Find ( X = > X . CURRENCY = = "USD" & & X . ISINVDEF = = "1" ) ;
if ( bank ! = null ) detail . CUSTBANK = bank . BANKNAME_ACCOUNT ;
else
{
bank = bankList . Find ( X = > X . CURRENCY = = "USD" ) ;
if ( bank ! = null ) detail . CUSTBANK = bank . BANKNAME_ACCOUNT ;
else
detail . CUSTBANK = headData . CUSTBANK ;
}
detail . EMAIL = headData . PUSHEMAIL ;
detail . GOODSNAME = GOODSNAME ;
dataList . Add ( detail ) ;
}
}
if ( ttlrmbinv ! = headData . APPLYAMOUNT )
{
var isfind = false ;
if ( dataList ! = null & & dataList . Count ! = 0 )
{
foreach ( var emv in dataList )
{
if ( emv . CURRENCY = = "RMB" )
{
emv . AMOUNT = emv . AMOUNT + ( headData . APPLYAMOUNT - ttlrmbinv ) ;
isfind = true ;
} ;
}
}
if ( ! isfind )
{
ChInvoiceapplicationDetail detail = new ChInvoiceapplicationDetail ( ) ;
detail . LINKGID = "*" ;
detail . INVOICECUSTNAME = headData . INVOICECUSTNAME ;
detail . CURRENCY = "RMB" ;
detail . AMOUNT = headData . APPLYAMOUNT ;
detail . CUSTRATENO = headData . CUSTRATENO ;
detail . CUSTTEL = GetTelephoneList ( headData . CUSTADDRTEL ) ;
if ( ! string . IsNullOrEmpty ( detail . CUSTTEL ) )
detail . CUSTADDR = headData . CUSTADDRTEL . Replace ( detail . CUSTTEL , "" ) ;
else detail . CUSTADDR = headData . CUSTADDRTEL ;
var bank = bankList . Find ( X = > X . CURRENCY = = "RMB" & & X . ISINVDEF = = "1" ) ;
if ( bank ! = null ) detail . CUSTBANK = bank . BANKNAME_ACCOUNT ;
else
{
bank = bankList . Find ( X = > X . CURRENCY = = "RMB" ) ;
if ( bank ! = null ) detail . CUSTBANK = bank . BANKNAME_ACCOUNT ;
else
detail . CUSTBANK = headData . CUSTBANK ;
}
detail . EMAIL = headData . PUSHEMAIL ;
detail . GOODSNAME = GOODSNAME ;
dataList . Add ( detail ) ;
}
}
}
else if ( headData . INVTYPE = = "美元折人民币开票" )
{
if ( ttlrmbinv ! = headData . AMOUNT )
{
var isfind = false ;
if ( dataList ! = null & & dataList . Count ! = 0 )
{
foreach ( var emv in dataList )
{
if ( emv . CURRENCY = = "RMB" )
{
emv . AMOUNT = emv . AMOUNT + ( headData . AMOUNT - ttlrmbinv ) ;
isfind = true ;
} ;
}
}
if ( ! isfind )
{
ChInvoiceapplicationDetail detail = new ChInvoiceapplicationDetail ( ) ;
detail . LINKGID = "*" ;
detail . INVOICECUSTNAME = headData . INVOICECUSTNAME ;
detail . CURRENCY = "RMB" ;
detail . AMOUNT = headData . AMOUNT ;
detail . CUSTRATENO = headData . CUSTRATENO ;
detail . CUSTTEL = GetTelephoneList ( headData . CUSTADDRTEL ) ;
if ( ! string . IsNullOrEmpty ( detail . CUSTTEL ) )
detail . CUSTADDR = headData . CUSTADDRTEL . Replace ( detail . CUSTTEL , "" ) ;
else detail . CUSTADDR = headData . CUSTADDRTEL ;
var bank = bankList . Find ( X = > X . CURRENCY = = "RMB" & & X . ISINVDEF = = "1" ) ;
if ( bank ! = null ) detail . CUSTBANK = bank . BANKNAME_ACCOUNT ;
else
{
bank = bankList . Find ( X = > X . CURRENCY = = "RMB" ) ;
if ( bank ! = null ) detail . CUSTBANK = bank . BANKNAME_ACCOUNT ;
else
detail . CUSTBANK = headData . CUSTBANK ;
}
detail . EMAIL = headData . PUSHEMAIL ;
detail . GOODSNAME = GOODSNAME ;
dataList . Add ( detail ) ;
}
}
}
else if ( headData . INVTYPE = = "人民币折美元开票" )
{
if ( ttlusdinv ! = headData . AMOUNT )
{
var isfind = false ;
if ( dataList ! = null & & dataList . Count ! = 0 )
{
foreach ( var emv in dataList )
{
if ( emv . CURRENCY = = "USD" )
{
emv . AMOUNT = emv . AMOUNT + ( headData . AMOUNT - ttlusdinv ) ;
isfind = true ;
} ;
}
}
if ( ! isfind )
{
ChInvoiceapplicationDetail detail = new ChInvoiceapplicationDetail ( ) ;
detail . LINKGID = "*" ;
detail . INVOICECUSTNAME = headData . INVOICECUSTNAME ;
detail . CURRENCY = "USD" ;
detail . AMOUNT = headData . AMOUNT ;
detail . CUSTRATENO = headData . CUSTRATENO ;
detail . CUSTTEL = GetTelephoneList ( headData . CUSTADDRTEL ) ;
if ( ! string . IsNullOrEmpty ( detail . CUSTTEL ) )
detail . CUSTADDR = headData . CUSTADDRTEL . Replace ( detail . CUSTTEL , "" ) ;
else detail . CUSTADDR = headData . CUSTADDRTEL ;
var bank = bankList . Find ( X = > X . CURRENCY = = "USD" & & X . ISINVDEF = = "1" ) ;
if ( bank ! = null ) detail . CUSTBANK = bank . BANKNAME_ACCOUNT ;
else
{
bank = bankList . Find ( X = > X . CURRENCY = = "USD" ) ;
if ( bank ! = null ) detail . CUSTBANK = bank . BANKNAME_ACCOUNT ;
else
detail . CUSTBANK = headData . CUSTBANK ;
}
detail . EMAIL = headData . PUSHEMAIL ;
detail . GOODSNAME = GOODSNAME ;
dataList . Add ( detail ) ;
}
}
}
ChinvoiceapplicationDAL . SaveAppDetail ( headData , dataList ) ;
return 0 ;
}
public static string GetTelephoneList ( string input )
{
//集合存放提取出来的电话号码
//List<string> list = new List<string>();
/ *
* 正 则 表 达 式 提 取
* 分 为 五 种 格 式 , 能 兼 容 11 位 手 机 号 、 3 位 或 4 位 区 号 - 7 位 或 8 位 电 话 号 、 400 电 话 的 两 种 写 法 ( 400 - ddd - dddd 、 400d dddddd )
* /
Regex regex = new Regex ( @"(1[3|4|5|6|7|8|9]\d{9})|(0\d{2,3}-\d{7,8})|(400-\d{3}-\d{4})|(400\d{7})|(\d{4}-\d{8})|(\d{8})" ) ;
//Match集合, 匹配成功的字符串集合
MatchCollection collection = regex . Matches ( input ) ;
//遍历Match集合, 取出值
string telephone = "" ;
foreach ( System . Text . RegularExpressions . Match item in collection )
{
foreach ( Group group in item . Groups )
{
telephone = group . Value . Trim ( ) ;
if ( telephone . Length > 7 ) break ;
////偶尔会出现重复提取,所以加了去重判断
//if (!string.IsNullOrEmpty(telephone) && !list.Contains(telephone))
//{
// list.Add(telephone);
//}
}
}
return telephone ;
}
#region 提交审核和撤销审核
public static DBResult SubmitAudit ( String WorkFlowName , String USERID , String bill , string companyid )
{
var result = new DBResult ( ) ;
T_ALL_DA T_ALL_DA = new T_ALL_DA ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
var WorkFlowid = "" ;
if ( WorkFlowid = = "" )
{
string lsSQL = "select * FROM workflow WHERE COMPANYID='" + companyid + "' AND ISCONDITION=1 and [TYPE]=(SELECT TYPENO FROM workflow_type WHERE [NAME]='" + WorkFlowName + "') "
+ " and GID in (select workflowID from workflow_Userpath where userid ='" + USERID + "') order by SORTNO " ;
DataSet dsworkflow = T_ALL_DA . GetAllSQL ( lsSQL ) ;
if ( dsworkflow ! = null )
{
if ( dsworkflow . Tables [ 0 ] . Rows . Count > 0 )
{
foreach ( DataRow row in dsworkflow . Tables [ 0 ] . Rows )
{
var CONDITIONSQL = Convert . ToString ( row [ "CONDITIONSQL" ] ) ;
CONDITIONSQL = CONDITIONSQL . Replace ( "[业务编号]" , "'" + bill + "'" ) ;
var strCOUNT = T_ALL_DA . GetStrSQL ( "BLCT" , CONDITIONSQL ) ;
if ( strCOUNT ! = "0" )
{
WorkFlowid = Convert . ToString ( row [ "GID" ] ) ;
break ;
}
}
}
}
if ( WorkFlowid = = "" ) WorkFlowid = "no" ;
}
Resultmb WorkResult = WorkFlowDAL . WorkFlowStart ( WorkFlowName , bill , USERID , bill , bill , "" , WorkFlowid ) ;
if ( WorkResult . Success = = true )
{
var cmdupdate = db . GetSqlStringCommand ( "BILLNO=@BILLNO" ) ;
if ( WorkResult . islast = = true )
{
cmdupdate = db . GetSqlStringCommand ( "update ch_fee_invoiceapplication set BILLSTATUS=0,OPERATETIME=GETDATE() where BILLNO=@BILLNO" ) ;
}
else
{
cmdupdate = db . GetSqlStringCommand ( "update ch_fee_invoiceapplication set BILLSTATUS=2 where BILLNO=@BILLNO" ) ;
}
cmdupdate . Parameters . Clear ( ) ;
db . AddInParameter ( cmdupdate , "@BILLNO" , DbType . String , bill ) ;
db . ExecuteNonQuery ( cmdupdate , tran ) ;
result = new DBResult ( ) ;
result . Success = true ;
result . Message = "提交审核成功" ;
}
else
{
result . Success = false ;
result . Message = "提交审核错误!" ;
}
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "提交审核错误,请重试或联系系统管理员" ;
return result ;
}
}
return result ;
}
public static DBResult SubmitAuditList ( String WorkFlowName , String USERID , String bills )
{
var result = new DBResult ( ) ;
var billList = bills . Split ( ',' ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
foreach ( var bill in billList )
{
Resultmb WorkResult = WorkFlowDAL . WorkFlowStart ( WorkFlowName , bill , USERID , bill , bill , "" ) ;
if ( WorkResult . Success = = true )
{
var cmdupdate = db . GetSqlStringCommand ( "BILLNO=@BILLNO" ) ;
if ( WorkResult . islast = = true )
{
cmdupdate = db . GetSqlStringCommand ( "update ch_fee_invoiceapplication set BILLSTATUS=0 where BILLNO=@BILLNO" ) ;
}
else
{
cmdupdate = db . GetSqlStringCommand ( "update ch_fee_invoiceapplication set BILLSTATUS=2 where BILLNO=@BILLNO" ) ;
}
cmdupdate . Parameters . Clear ( ) ;
db . AddInParameter ( cmdupdate , "@BILLNO" , DbType . String , bill ) ;
db . ExecuteNonQuery ( cmdupdate , tran ) ;
result = new DBResult ( ) ;
result . Success = true ;
result . Message = "提交审核成功" ;
}
else
{
result . Success = false ;
result . Message = "提交审核错误!" ;
}
}
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "提交审核错误,请重试或联系系统管理员" ;
return result ;
}
}
return result ;
}
public static DBResult SubmitAuditBack ( String WorkFlowName , String USERID , String bill )
{
var result = new DBResult ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
Resultmb WorkResult = WorkFlowDAL . WorkFlowReset ( WorkFlowName , bill , USERID ) ;
if ( WorkResult . Success = = true )
{
var cmdupdate = db . GetSqlStringCommand ( "update ch_fee_invoiceapplication set BILLSTATUS=1 where BILLNO=@BILLNO" ) ;
cmdupdate . Parameters . Clear ( ) ;
db . AddInParameter ( cmdupdate , "@BILLNO" , DbType . String , bill ) ;
db . ExecuteNonQuery ( cmdupdate , tran ) ;
result = new DBResult ( ) ;
result . Success = true ;
result . Message = "撤销提交成功" ;
}
else
{
result = new DBResult ( ) ;
result . Success = false ;
result . Message = "已部分审核此业务,不允许撤回提交!" ;
}
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "撤销提交错误,请重试或联系系统管理员" ;
return result ;
}
}
return result ;
}
public static DBResult SubmitAuditBackList ( String WorkFlowName , String USERID , String bills )
{
var result = new DBResult ( ) ;
var billList = bills . Split ( ',' ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
foreach ( var bill in billList )
{
Resultmb WorkResult = WorkFlowDAL . WorkFlowReset ( WorkFlowName , bill , USERID ) ;
if ( WorkResult . Success = = true )
{
var cmdupdate = db . GetSqlStringCommand ( "update ch_fee_invoiceapplication set BILLSTATUS=1 where BILLNO=@BILLNO" ) ;
cmdupdate . Parameters . Clear ( ) ;
db . AddInParameter ( cmdupdate , "@BILLNO" , DbType . String , bill ) ;
db . ExecuteNonQuery ( cmdupdate , tran ) ;
result = new DBResult ( ) ;
result . Success = true ;
result . Message = "撤销提交成功" ;
}
else
{
result = new DBResult ( ) ;
result . Success = false ;
result . Message = "已部分审核此业务,不允许撤回提交!" ;
}
}
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "撤销提交错误,请重试或联系系统管理员" ;
return result ;
}
}
return result ;
}
# endregion
#region 审核或驳回
public static DBResult AuditList ( List < ChInvoiceapplication > boday , string PAYCOMPANYID , String USERID )
{
var result = new DBResult ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
if ( boday ! = null )
{
var cmdupdate = db . GetSqlStringCommand ( "update ch_fee_invoiceapplication set BILLSTATUS=0 where BILLNO=@BILLNO" ) ;
var cmdupdate2 = db . GetSqlStringCommand ( "update ch_fee_invoiceapplication set BILLSTATUS=0,PAYCOMPANYID=@PAYCOMPANYID where BILLNO=@BILLNO" ) ;
foreach ( var enumValue in boday )
{
if ( enumValue . BILLSTATUS = = 2 | | enumValue . BILLSTATUS = = 4 )
{
Resultmb WorkResult = WorkFlowDAL . InsertWorkFlowDo ( "InvAudit" , enumValue . BILLNO , USERID , tran , enumValue . BILLNO ) ;
if ( WorkResult . Success = = true & & WorkResult . islast = = true )
{
if ( boday . Count = = 1 )
{
cmdupdate2 . Parameters . Clear ( ) ;
db . AddInParameter ( cmdupdate2 , "@PAYCOMPANYID" , DbType . String , PAYCOMPANYID ) ;
db . AddInParameter ( cmdupdate2 , "@BILLNO" , DbType . String , enumValue . BILLNO ) ;
db . ExecuteNonQuery ( cmdupdate2 , tran ) ;
}
else
{
cmdupdate . Parameters . Clear ( ) ;
db . AddInParameter ( cmdupdate , "@BILLNO" , DbType . String , enumValue . BILLNO ) ;
db . ExecuteNonQuery ( cmdupdate , tran ) ;
}
}
}
}
}
result = new DBResult ( ) ;
result . Success = true ;
result . Message = "审核通过" ;
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "审核出现错误,请重试或联系系统管理员" ;
return result ;
}
}
result . Success = true ;
result . Message = "审核通过" ;
return result ;
}
public static DBResult AuditBackList ( List < ChInvoiceapplication > boday , String USERID , string reason )
{
var result = new DBResult ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
if ( boday ! = null )
{
var cmdupdate = db . GetSqlStringCommand ( "update ch_fee_invoiceapplication set BILLSTATUS=4,REASON='" + reason + "' where BILLNO=@BILLNO" ) ;
foreach ( var enumValue in boday )
{
if ( enumValue . BILLSTATUS = = 2 | | enumValue . BILLSTATUS = = 0 )
{
Resultmb WorkResult = WorkFlowDAL . DeleteWorkFlowDo ( "InvAudit" , enumValue . BILLNO , USERID , "" ) ;
if ( WorkResult . Success = = true )
{
cmdupdate . Parameters . Clear ( ) ;
db . AddInParameter ( cmdupdate , "@BILLNO" , DbType . String , enumValue . BILLNO ) ;
db . ExecuteNonQuery ( cmdupdate , tran ) ;
}
}
}
}
result = new DBResult ( ) ;
result . Success = true ;
result . Message = "完成驳回" ;
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "驳回出现错误,请重试或联系系统管理员" ;
return result ;
}
}
result . Success = true ;
result . Message = "完成驳回" ;
return result ;
}
# endregion
static public int GetRdCount ( string strCondition )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( "SELECT Count(GID) AS CT from ch_fee_invoiceapplication (NOLOCK) " ) ;
if ( strCondition . Trim ( ) ! = String . Empty )
{
strSql . Append ( " where " + strCondition ) ;
}
var ct = 0 ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
ct = Convert . ToInt16 ( reader [ "CT" ] ) ;
}
reader . Close ( ) ;
}
return ct ;
}
#region 发票审核列表
static public List < ChInvoiceapplication > GetAuditDataList ( string strCondition , string userid , string isaudit , string companyid , string sort = null )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " SELECT i.GID,i.BILLNO,i.BILLSTATUS,i.CUSTOMERNAME,i.ACTUALCUSTOMERNAME,i.CURRENCY,i.INVOICENO,i.INVOICECUSTNAME,i.INVOICECATEGORY " ) ;
strSql . Append ( " ,i.BSNO,i.MBLNO,i.VESSELVOYAGE,i.POL,i.POD,i.ETD,i.APPLYAMOUNT,i.INVAMOUNT,i.AMOUNTCAPITAL,i.OTCURRAMOUNT,i.AMOUNT" ) ;
strSql . Append ( " ,i.APPLICANT,i.APPLYTIME,i.ENTERTIME,i.OPERATOR,i.OPERATETIME,i.RECVCURR,i.FEEAMOUNT " ) ;
strSql . Append ( " ,i.REMARK,i.SHENREMARK,i.COMPANYID,i.ISAPPLY,i.CUSTRATENO,i.CUSTADDRTEL,i.CUSTBANK,i.RATE,'' INVOICENOREF,null INVDATE " ) ;
strSql . Append ( ",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97010 and EnumValueID=i.BILLSTATUS) as BILLSTATUSREF" ) ;
strSql . Append ( ",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97008 and EnumValueID=i.INVOICECATEGORY) as INVOICECATEGORYREF" ) ;
strSql . Append ( ",(select ShowName from [user] where GID=i.APPLICANT) as APPLICANTNAME" ) ;
strSql . Append ( ",(select DEPTNAME from [VW_user] where userid=i.APPLICANT) as APPLICANTDEPT" ) ;
strSql . Append ( ",i.PAYCOMPANYID,(select name from company where gid=i.PAYCOMPANYID) PAYCOMPANYREF,dbo.[GetUsingStep](wu.WORKFLOWID,wu.currentid,'" + userid + "',wu.stepno) as IsAudit,i.REASON,i.ISPRINT,i.PRINTCOUNT " ) ;
strSql . Append ( ",PUSHMODE,PUSHMOBILE,PUSHEMAIL,dbo.F_getEnumValue(0,80002,i.PUSHMODE) as PUSHMODEREF,'' as NOSTL,INVTYPE" ) ;
strSql . Append ( " FROM ch_fee_invoiceapplication i left join workflow_using wu on wu.bsno=i.billno where 1=1 " ) ;
if ( isaudit = = "1" )
strSql . Append ( " and i.BILLSTATUS=2 and dbo.[GetUsingStep](wu.WORKFLOWID,wu.currentid,'" + userid + "',wu.stepno)>0 " ) ;
else if ( isaudit = = "2" )
// strSql.Append(" and i.BILLSTATUS=0 AND I.BILLNO IN (select distinct billno from workflow_do where auditor='" + userid + "' ) ");
strSql . Append ( " and i.BILLSTATUS=0 " ) ;
else if ( isaudit = = "" )
{
var rangstr = GetRangDAListStr ( "" , userid , "" , companyid ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
strSql . Append ( " and " + rangstr ) ;
}
//strSql.Append(" and (dbo.[GetUsingStep](wu.WORKFLOWID,wu.currentid,'" + userid + "',wu.stepno)>0 ");
//strSql.Append(" or (I.BILLNO IN (select distinct billno from workflow_do where auditor='" + userid + "' ))) ");
}
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " and " + strCondition ) ;
}
var sortstring = DatasetSort . Getsortstring ( sort ) ;
if ( ! string . IsNullOrEmpty ( sortstring ) )
{
strSql . Append ( " order by " + sortstring ) ;
}
else
{
strSql . Append ( " order by APPLYTIME desc " ) ;
}
return SetData ( strSql ) ;
}
# endregion
public static DBResult GetPrint ( string bsno , string userid = "" , string usercode = "" , string orgcode = "" )
{
var AuditPrint = MsSysParamSetDAL . GetData ( "PARAMNAME='INVAPPPRINTAFTERAUDIT'" ) ;
var PrintOne = MsSysParamSetDAL . GetData ( "PARAMNAME='INVAPPONLYPRINTONE'" ) ;
var result = new DBResult ( ) ;
if ( AuditPrint . PARAMVALUE ! = "1" & & PrintOne . PARAMVALUE ! = "1" )
{
result = new DBResult ( ) ;
result . Success = true ;
result . Message = "成功" ;
}
var PAYBILL = GetData ( " cm.BILLNO='" + bsno + "'" , userid , usercode , orgcode ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
//var cmdupdatePrt = db.GetSqlStringCommand("update ch_fee_payapplication set ISPRINT='1' where BILLNO=@BILLNO");
//cmdupdatePrt.Parameters.Clear();
//db.AddInParameter(cmdupdatePrt, "@BILLNO", DbType.String, bsno);
//db.ExecuteNonQuery(cmdupdatePrt, tran);
if ( AuditPrint . PARAMVALUE = = "1" )
{
if ( PAYBILL . BILLSTATUS ! = 0 & & PAYBILL . BILLSTATUS ! = 4 & & PAYBILL . BILLSTATUS ! = 5 )
{
result . Success = false ;
result . Message = "此票发票申请未审核,请审核通过后再打印" ;
}
else
{
if ( PrintOne . PARAMVALUE = = "1" )
{
if ( PAYBILL . ISPRINT = = "1" )
{
result . Success = false ;
result . Message = "此票发票申请已打印过,不允许重复打印" ;
}
else
{
result = new DBResult ( ) ;
result . Success = true ;
result . Message = "成功" ;
}
}
else
{
result = new DBResult ( ) ;
result . Success = true ;
result . Message = "成功" ;
}
}
}
else
{
if ( PrintOne . PARAMVALUE = = "1" )
{
if ( PAYBILL . ISPRINT = = "1" )
{
result . Success = false ;
result . Message = "此票发票申请已打印过,不允许重复打印" ;
}
else
{
result = new DBResult ( ) ;
result . Success = true ;
result . Message = "成功" ;
}
}
else
{
result = new DBResult ( ) ;
result . Success = true ;
result . Message = "成功" ;
}
}
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "发生错误" ;
}
}
return result ;
}
#region 发票申请列表权限范围
public static string GetRangDAListStr ( string tb , string userid , string username , string companyid )
{
string str = "" ;
var strSql = new StringBuilder ( ) ;
strSql . Append ( "SELECT " ) ;
strSql . Append ( " VISIBLERANGE,OPERATERANGE,AUTHORITYID,VSSQL " ) ;
strSql . Append ( " from VW_User_Authority " ) ;
strSql . Append ( " where [NAME]='modInvoiceAppList' and USERID='" + userid + "' and ISDELETE=0" ) ;
string visiblerange = "4" ;
string operaterange = "4" ;
string AUTHORITYID = "" ;
string VSSQL = "" ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
visiblerange = Convert . ToString ( reader [ "VISIBLERANGE" ] ) ;
operaterange = Convert . ToString ( reader [ "OPERATERANGE" ] ) ;
AUTHORITYID = Convert . ToString ( reader [ "AUTHORITYID" ] ) ;
VSSQL = Convert . ToString ( reader [ "VSSQL" ] ) ;
break ;
}
reader . Close ( ) ;
}
if ( visiblerange = = "4" )
{
str = " (APPLICANT='" + userid + "')" ;
}
else if ( visiblerange = = "3" )
{
str = " (APPLICANT='" + userid + "')" ;
}
else if ( visiblerange = = "2" )
{
var rangeDa = new RangeDA ( ) ;
var deptname = rangeDa . GetDEPTNAME ( userid ) ;
str = " APPLICANT in (select USERID from user_company where COMPANYID='" + companyid + "') and APPLICANT in (select userid from user_baseinfo where DEPTNAME='" + deptname + "')" ;
}
else if ( visiblerange = = "5" )
{
var userstr = new StringBuilder ( ) ;
userstr . Append ( " select COMPANYID from user_authority_range_company where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1" ) ;
Database userdb = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = userdb . ExecuteReader ( CommandType . Text , userstr . ToString ( ) ) )
{
str = "" ;
while ( reader . Read ( ) )
{
if ( str = = "" )
{
str = " (APPLICANT in (select USERID from user_company where COMPANYID='" + companyid + "') " ;
}
else
{
str = str + " or APPLICANT in (select USERID from user_company where COMPANYID='" + companyid + "')" ;
} ;
}
str = str + ")" ;
reader . Close ( ) ;
}
}
else if ( visiblerange = = "6" )
{
var userstr = new StringBuilder ( ) ;
userstr . Append ( " select OPID,(select SHOWNAME from [user] where GID=user_authority_range_op.OPID) SHOWNAME from user_authority_range_op where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1" ) ;
Database userdb = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = userdb . ExecuteReader ( CommandType . Text , userstr . ToString ( ) ) )
{
str = "" ;
while ( reader . Read ( ) )
{
if ( str = = "" )
{
str = " (APPLICANT='" + Convert . ToString ( reader [ "OPID" ] ) + "' " ;
}
else
{
str = str + " or APPLICANT='" + Convert . ToString ( reader [ "OPID" ] ) + "'" ;
} ;
}
str = str + ")" ;
reader . Close ( ) ;
}
}
else if ( visiblerange = = "1" )
{
str = " COMPANYID='" + companyid + "' " ;
}
else if ( visiblerange = = "0" )
{
str = " 1=1 " ;
}
VSSQL = VSSQL . Trim ( ) ;
if ( ! string . IsNullOrEmpty ( VSSQL ) )
{
if ( ! string . IsNullOrEmpty ( str ) )
{
str = str + " and (" + VSSQL + ") " ;
}
else
{
str = " (" + VSSQL + ") " ;
}
}
return str ;
}
# endregion
#region 发票申请费用查询范围
public static string GetRangDAStr ( string tb , string userid , string username , string companyid )
{
string str = "" ;
var strSql = new StringBuilder ( ) ;
strSql . Append ( "SELECT " ) ;
strSql . Append ( " VISIBLERANGE,OPERATERANGE,AUTHORITYID,VSSQL " ) ;
strSql . Append ( " from VW_User_Authority " ) ;
strSql . Append ( " where [NAME]='modInvoiceAppSearch' and USERID='" + userid + "' and ISDELETE=0" ) ;
string visiblerange = "4" ;
string operaterange = "4" ;
string AUTHORITYID = "" ;
string VSSQL = "" ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
visiblerange = Convert . ToString ( reader [ "VISIBLERANGE" ] ) ;
operaterange = Convert . ToString ( reader [ "OPERATERANGE" ] ) ;
AUTHORITYID = Convert . ToString ( reader [ "AUTHORITYID" ] ) ;
VSSQL = Convert . ToString ( reader [ "VSSQL" ] ) ;
break ;
}
reader . Close ( ) ;
}
if ( visiblerange = = "4" )
{
str = " (OP='" + username + "' OR INPUTBY='" + username + "' OR SALE='" + username + "' OR CUSTSERVICE='" + username + "' OR DOC='" + username + "')" ;
}
else if ( visiblerange = = "3" )
{
str = " (OP='" + username + "' OR INPUTBY='" + username + "' OR SALE='" + username + "' OR CUSTSERVICE='" + username + "' OR DOC='" + username + "')" ;
}
else if ( visiblerange = = "2" )
{
var rangeDa = new RangeDA ( ) ;
var deptname = rangeDa . GetDEPTNAME ( userid ) ;
str = " (OP in (select showname from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "') and GID in (select userid from user_baseinfo where DEPTNAME='" + deptname + "'))"
+ " OR INPUTBY in (select showname from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "') and GID in (select userid from user_baseinfo where DEPTNAME='" + deptname + "'))"
+ " OR SALE in (select showname from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "') and GID in (select userid from user_baseinfo where DEPTNAME='" + deptname + "'))"
+ " OR DOC in (select showname from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "') and GID in (select userid from user_baseinfo where DEPTNAME='" + deptname + "'))"
+ " OR CUSTSERVICE in (select showname from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "') and GID in (select userid from user_baseinfo where DEPTNAME='" + deptname + "')))" ;
}
else if ( visiblerange = = "1" )
{
str = " (OP in (select showname from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "'))"
+ " OR INPUTBY in (select showname from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "'))"
+ " OR SALE in (select showname from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "'))"
+ " OR DOC in (select showname from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "'))"
+ " OR CUSTSERVICE in (select showname from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "')))" ;
}
else if ( visiblerange = = "5" )
{
var userstr = new StringBuilder ( ) ;
userstr . Append ( " select COMPANYID from user_authority_range_company where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1" ) ;
Database userdb = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = userdb . ExecuteReader ( CommandType . Text , userstr . ToString ( ) ) )
{
str = "" ;
while ( reader . Read ( ) )
{
if ( str = = "" )
{
str = " (b.Corpid='" + Convert . ToString ( reader [ "COMPANYID" ] ) + "'" ;
}
else
{
str = str + " or b.Corpid='" + Convert . ToString ( reader [ "COMPANYID" ] ) + "'" ;
} ;
}
str = str + ")" ;
reader . Close ( ) ;
}
}
else if ( visiblerange = = "6" )
{
var userstr = new StringBuilder ( ) ;
userstr . Append ( " select OPID,(select SHOWNAME from [user] where GID=user_authority_range_op.OPID) SHOWNAME from user_authority_range_op where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1" ) ;
Database userdb = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = userdb . ExecuteReader ( CommandType . Text , userstr . ToString ( ) ) )
{
str = "" ;
while ( reader . Read ( ) )
{
if ( str = = "" )
{
str = " (b.OP='" + Convert . ToString ( reader [ "SHOWNAME" ] ) + "' OR b.SALE='" + Convert . ToString ( reader [ "SHOWNAME" ] ) + "' OR b.CUSTSERVICE='" + Convert . ToString ( reader [ "SHOWNAME" ] ) + "' OR b.INPUTBY='" + Convert . ToString ( reader [ "SHOWNAME" ] ) + "' " ;
}
else
{
str = str + " or b.OP='" + Convert . ToString ( reader [ "SHOWNAME" ] ) + "' OR b.SALE='" + Convert . ToString ( reader [ "SHOWNAME" ] ) + "' OR b.CUSTSERVICE='" + Convert . ToString ( reader [ "SHOWNAME" ] ) + "' OR b.INPUTBY='" + Convert . ToString ( reader [ "SHOWNAME" ] ) + "' " ;
} ;
}
str = str + ")" ;
reader . Close ( ) ;
}
}
else if ( visiblerange = = "0" )
{
str = " 1=1 " ;
}
VSSQL = VSSQL . Trim ( ) ;
if ( ! string . IsNullOrEmpty ( VSSQL ) )
{
if ( ! string . IsNullOrEmpty ( str ) )
{
str = str + " and (" + VSSQL + ") " ;
}
else
{
str = " (" + VSSQL + ") " ;
}
}
return str ;
}
public static string GetRangAddFeeDAStr ( string userid , string username , string companyid )
{
string str = "" ;
string modustr = "MODINVAPPFEERANGE" ;
var strSql = new StringBuilder ( ) ;
strSql . Append ( "SELECT " ) ;
strSql . Append ( " VISIBLERANGE,OPERATERANGE,AUTHORITYID " ) ;
strSql . Append ( " from VW_User_Authority " ) ;
strSql . Append ( " where [NAME]='" + modustr + "' and USERID='" + userid + "' and ISDELETE=0" ) ;
string visiblerange = "4" ;
string operaterange = "4" ;
string AUTHORITYID = "" ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
visiblerange = Convert . ToString ( reader [ "VISIBLERANGE" ] ) ;
operaterange = Convert . ToString ( reader [ "OPERATERANGE" ] ) ;
AUTHORITYID = Convert . ToString ( reader [ "AUTHORITYID" ] ) ;
break ;
}
reader . Close ( ) ;
}
if ( visiblerange = = "4" )
{
str = " f.ENTEROPERATOR='" + userid + "'" ;
}
else if ( visiblerange = = "3" )
{
str = " f.ENTEROPERATOR='" + userid + "'" ;
}
else if ( visiblerange = = "2" )
{
var rangeDa = new RangeDA ( ) ;
var deptname = rangeDa . GetDEPTNAME ( userid ) ;
str = " f.ENTEROPERATOR in (select USERID from user_company where COMPANYID='" + companyid + "') and f.ENTEROPERATOR in (select userid from user_baseinfo where DEPTNAME='" + deptname + "')" ;
}
else if ( visiblerange = = "1" )
{
str = " f.ENTEROPERATOR in (select USERID from user_company where COMPANYID='" + companyid + "') " ;
}
else if ( visiblerange = = "5" )
{
var userstr = new StringBuilder ( ) ;
userstr . Append ( " select USERID FROM user_company WHERE COMPANYID IN (select COMPANYID from user_authority_range_company where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1)" ) ;
Database userdb = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = userdb . ExecuteReader ( CommandType . Text , userstr . ToString ( ) ) )
{
str = "" ;
while ( reader . Read ( ) )
{
if ( str = = "" )
{
str = " (f.ENTEROPERATOR='" + Convert . ToString ( reader [ "USERID" ] ) + "'" ;
}
else
{
str = str + " or f.ENTEROPERATOR='" + Convert . ToString ( reader [ "USERID" ] ) + "'" ;
} ;
}
str = str + ")" ;
reader . Close ( ) ;
}
}
else if ( visiblerange = = "6" )
{
var userstr = new StringBuilder ( ) ;
userstr . Append ( " select OPID,(select SHOWNAME from [user] where GID=user_authority_range_op.OPID) SHOWNAME from user_authority_range_op where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1" ) ;
Database userdb = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = userdb . ExecuteReader ( CommandType . Text , userstr . ToString ( ) ) )
{
str = "" ;
while ( reader . Read ( ) )
{
if ( str = = "" )
{
str = " (f.ENTEROPERATOR='" + Convert . ToString ( reader [ "OPID" ] ) + "' " ;
}
else
{
str = str + " or f.ENTEROPERATOR='" + Convert . ToString ( reader [ "OPID" ] ) + "' " ;
} ;
}
str = str + ")" ;
reader . Close ( ) ;
}
}
else if ( visiblerange = = "0" )
{
str = " 1=1 " ;
}
return str ;
}
public static DBResult PASSAUDITWithGID ( string ch_fee_invoiceapplicationGID )
{
var result = new DBResult ( ) ;
string sql = "update ch_fee_invoiceapplication set BILLSTATUS = 0 where GID = '" + ch_fee_invoiceapplicationGID + "'" ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
try
{
int rst = db . ExecuteNonQuery ( CommandType . Text , sql ) ;
result . Success = rst > 0 ;
result . Message = "操作成功!" ;
return result ;
}
catch ( Exception e )
{
result . Success = false ;
result . Message = e . Message ;
return result ;
throw ;
}
}
# endregion
}
}