ColdFusion 函数错误 (cfc)

ColdFusion Function Error (cfc)

我在使用不应该 return 任何东西的 cfc 时遇到了一些小问题。它的唯一功能是将信息插入到几个数据库表中。我收到一条通用消息,说明 "The value returned from the PutLocSalesRegisterInfo function is not of type boolean."。有没有人遇到过类似的问题并以某种方式解决了它?下面是我的函数。

<cffunction name="PutLocSalesRegisterInfo" access="public" output="false" returntype="boolean">
    <cfargument name="OrgID"                        required="yes" type="any">
    <cfargument name="LocID"                        required="yes" type="any">
    <cfargument name="RegNum"                       required="yes" type="any">
    <cfargument name="userID"                       required="yes" type="any">
    <cfargument name="firstName"                    required="yes" type="any" default="">
    <cfargument name="LastName"                     required="yes" type="any" default="">
    <cfargument name="effectiveDate"                required="yes" type="any" default="">
    <cfargument name="VisaAmount"                   required="no" type="any" default="0.00">
    <cfargument name="VisaCount"                    required="no" type="any" default="0">
    <cfargument name="discoverCount"                required="no" type="any" default="0">
    <cfargument name="discoverAmount"               required="no" type="any" default="0.00">
    <cfargument name="MasterCardCount"              required="no" type="any" default="0">
    <cfargument name="MasterCardAmount"             required="no" type="any" default="0.00">
    <cfargument name="debitCount"                   required="no" type="any" default="0">
    <cfargument name="debitAmount"                  required="no" type="any" default="0.00">
    <cfargument name="AmericanExpressCount"         required="no" type="any" default="0">
    <cfargument name="AmericanExpressAmount"        required="no" type="any" default="0.00">
    <cfargument name="ccCountTotal"                 required="no" type="any" default="0">
    <cfargument name="ccAmtTotal"                   required="no" type="any" default="0.00">
    <cfargument name="CheckCount"                   required="no" type="any" default="0">
    <cfargument name="CheckAmount"                  required="no" type="any" default="0.00">
    <cfargument name="CreditIssuedCount"            required="no" type="any" default="0">
    <cfargument name="CreditIssuedAmount"           required="no" type="any" default="0.00">
    <cfargument name="eChecksCount"                 required="no" type="any" default="0">
    <cfargument name="eChecksAmount"                required="no" type="any" default="0.00">
    <cfargument name="CreditRedeemedCount"          required="no" type="any" default="0">
    <cfargument name="CreditRedeemedAmount"         required="no" type="any" default="0.00">
    <cfargument name="GiftCertIssuedCount"          required="no" type="any" default="0">
    <cfargument name="GiftCertIssuedAmount"         required="no" type="any" default="0.00">
    <cfargument name="GiftCardIssuedCount"          required="no" type="any" default="0">
    <cfargument name="GiftCardIssuedAmount"         required="no" type="any" default="0.00">
    <cfargument name="GiftCertRedeemedCount"        required="no" type="any" default="0">
    <cfargument name="GiftCertRedeemedAmount"       required="no" type="any" default="0.00">
    <cfargument name="GiftCardRedeemedCount"        required="no" type="any" default="0">
    <cfargument name="GiftCardRedeemedAmount"       required="no" type="any" default="0.00">
    <cfargument name="VouchersCount"                required="no" type="any" default="0">
    <cfargument name="VouchersAmount"               required="no" type="any" default="0.00">
    <cfargument name="cashDonationsCount"           required="no" type="any" default="0">
    <cfargument name="cashDonationsAmount"          required="no" type="any" default="0.00">
    <cfargument name="ChangeRndUpCount"             required="no" type="any" default="0">
    <cfargument name="ChangeRndUpAmount"            required="no" type="any" default="0.00">
    <cfargument name="ExpectedCashfromRegister"     required="no" type="any" default="0.00">
    <cfargument name="ExpectedCashFromDrawer"       required="no" type="any" default="0.00">
    <cfargument name="CashTotal"                    required="no" type="any" default="0.00">
    <cfargument name="CashTotalAmountEntered"       required="no" type="any" default="0.00">
    <cfargument name="Cashadjust"                   required="no" type="any" default="0.00">
    <cfargument name="ActualCashMinusChangeStock"   required="no" type="any" default="0.00">
    <cfargument name="transactions"                 required="no" type="any" default="0">
    <!--- <cfargument name="totalSalesandTax"           required="no" type="any" default="0.00"/> --->
    <cfargument name="salesTaxadjustment"           required="no" type="any" default="0.00">
    <cfargument name="salesTax"                     required="no" type="any" default="0.00">
    <cfargument name="totalSales"                   required="no" type="any" default="0.00">
    <cfargument name="taxExemptSales"               required="no" type="any" default="0.00">
    <!--- <cfargument name="commercialGoods"                required="no" type="any" default="0.00"/> --->
    <cfargument name="changeStock"                  required="no" type="any" default="0.00">
    <cfargument name="overshort"                    required="no" type="any" default="0.00">
            <!--- local empty variables --->
            <cfset var PutRegSalesInfo ="">
            <cfset var PutRegisterBalanceDetail ="">
            <cfset var PutSalesCategories ="">
            <cfset var PutCCDetail ="">
            <!--- Strip commas and dollar signs from the argument --->
            <cfset OverShort = ReplaceNoCase(ReplaceNoCase(Arguments.overshort,',','','ALL'),'$','','ALL')>
            <cfset ActualCashMinusChangeStock = ReplaceNoCase(ReplaceNoCase(Arguments.ActualCashMinusChangeStock,',','','ALL'),'$','','ALL')>
            <cfset cashTotal = ReplaceNoCase(ReplaceNoCase(Arguments.cashTotal,',','','ALL'),'$','','ALL')>
            <cfset totalSales = ReplaceNoCase(ReplaceNoCase(Arguments.totalSales,',','','ALL'),'$','','ALL')>
            <cfset ExpectedCashFromDrawer = ReplaceNoCase(ReplaceNoCase(Arguments.ExpectedCashFromDrawer,',','','ALL'),'$','','ALL')>

                <cftry>
                    <cftransaction>
                        <cfquery name="PutRegSalesInfo" datasource="#application.dsn.name#">
                            INSERT INTO Data_Org_Location_Register_Totals
                               (
                               nOrganizationID
                               ,nLocationID
                               ,nRegisterNumber
                               ,cCashierFirstName
                               ,cCashierLastName
                               ,dTotalActualCash
                               ,dTotalActualCashLessChangeStock
                               ,nCountCreditCardTransactions
                               ,dTotalCreditCards
                               ,nCountChecks
                               ,dTotalChecks
                               ,nCountEChecks
                               ,dTotalEChecks
                               ,nCountCreditIssued
                               ,dTotalCreditIssued
                               ,nCountCreditRedeemed
                               ,dTotalCreditRedeemed
                               ,nCountGiftCertIssued
                               ,dTotalGiftCertIssued
                               ,nCountGiftCertRedeemed
                               ,dTotalGiftCertRedeemed
                               ,nCountGiftCardIssued
                               ,dTotalGiftCardIssued
                               ,nCountGiftCardRedeemed
                               ,dTotalGiftCardRedeemed
                               ,nCountVouchers
                               ,dTotalVouchers
                               ,nCountCashDonations
                               ,dTotalCashDonations
                               ,dTotalTaxExemptSales
                               ,nCountTransactions
                               ,dTotalSales
                               ,dSalesTax
                               ,dSalesTaxAdjustment
                               ,tEffectiveDate
                               ,nAvailable
                               ,tCreationDate
                               ,nActive
                               ,tLastUpdate
                               ,cChangedBy
                               )
                             VALUES(
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.OrgID#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.LocID#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.RegNum#"/>,
                               <cfqueryparam cfsqltype="cf_sql_varchar" value="#Arguments.firstName#"/>,
                               <cfqueryparam cfsqltype="cf_sql_varchar" value="#Arguments.LastName#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(cashTotal)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(ActualCashMinusChangeStock)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.ccCountTotal#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.ccAmtTotal)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.CheckCount#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.CheckAmount)#">,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.eChecksCount#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.eChecksAmount)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.CreditIssuedCount#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.CreditIssuedAmount)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.CreditRedeemedCount#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.CreditRedeemedAmount)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.GiftCertIssuedCount#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.GiftCertIssuedAmount)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.GiftCertRedeemedCount#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.GiftCertRedeemedAmount)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.GiftCardIssuedCount#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.GiftCardIssuedAmount)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.GiftCardRedeemedCount#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.GiftCardRedeemedAmount)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.VouchersCount#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.VouchersAmount)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.CashDonationsCount#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.CashDonationsAmount)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.taxExemptSales)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.Transactions#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(totalSales)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.salesTax)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.salesTaxadjustment)#"/>,
                               <cfqueryparam cfsqltype="cf_sql_date" value="#DateFormat(CreateODBCDateTime(Arguments.effectiveDate), 'dd/mm/yyyy')#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#val(1)#"/>,
                               GetDate(),
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#val(1)#"/>,
                               GetDate(),
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.userID#"/>
                               )
                              SELECT SCOPE_IDENTITY() AS New_PutRegSalesInfo_ID
                        </cfquery>

                    <!--- Create random unique Ref number (dont know why this is needed if there is a PK)--->
                        <cfset local.random_part = Randomize(PutRegSalesInfo.New_PutRegSalesInfo_ID, "SHA1PRNG")>
                        <cfset local.UserRefToHash = Now() & "ref" & PutRegSalesInfo.New_PutRegSalesInfo_ID & ":" & local.random_part>
                        <cfset local.NewSalesInfoRefID = Hash(local.UserRefToHash, 'sha-256', 'iso-8859-1')>

                        <cfquery datasource="#application.dsn.name#" name="UpdateRegisterTotalsRef">
                            update  Data_Org_Location_Register_Totals
                            set     cRegisterTotalsRefID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#local.NewSalesInfoRefID#"/>
                            where   nID = <cfqueryparam cfsqltype="cf_sql_integer" value="#PutRegSalesInfo.New_PutRegSalesInfo_ID#"/>
                        </cfquery>

                        <cfquery datasource="#application.dsn.name#" name="PutRegisterBalanceDetail">
                            Insert into Data_Org_Location_Register_BalanceDetail (
                                nRegisterTotalsID,
                                nOrganizationID,
                                nLocationID,
                                dExpectedCashFromRegister,
                                dCashAdjustments,
                                dAdjustedExpectedCashFromRegister,
                                dChangeStock,
                                dOverShort,
                                tCreationDate,
                                nActive,
                                tLastUpdate,
                                cChangedBy
                                )
                            values (
                                <cfqueryparam cfsqltype="cf_sql_integer" value="#PutRegSalesInfo.New_PutRegSalesInfo_ID#"/>,
                                <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.OrgID#"/>,
                                <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.LocID#"/>,
                                <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.ExpectedCashFromRegister)#"/>,
                                <cfqueryparam cfsqltype="cf_sql_decimal" value="#Arguments.CashAdjust#"/>,
                                <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(ExpectedCashFromDrawer)#"/>,
                                <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.ChangeStock)#"/>,
                                <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(OverShort)#"/>,
                                GetDate(),
                                <cfqueryparam cfsqltype="cf_sql_integer" value="#val(1)#"/>,
                                GetDate(),
                                <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.UserID#"/>
                        )
                    </cfquery>
                    <!--- Get the number of CategoryIDs from the list then loop that many times--->
                     <cfloop index="i" from="1" to="#ListLen(Arguments.CategoryList)#"><!--- loop through the category form fields --->

                        <cfquery name="PutSalesCategories" datasource="#application.dsn.name#">
                            INSERT INTO Data_Org_Location_Register_CategorySales
                               (nOrganizationID
                               ,nLocationID
                               ,nRegisterTotalsID
                               ,nOrgCategoryID
                               ,nCount
                               ,dAmount
                               ,dAdjustment
                               ,dTotal
                               ,nAvailable
                               ,tCreationDate
                               ,nActive
                               ,tLastUpdate
                               ,cChangedBy
                               )
                            VALUES(
                                <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.OrgID#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.LocID#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#PutRegSalesInfo.New_PutRegSalesInfo_ID#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.categoryID[i]#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.categoryCount[i]#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.Amount[i])#"/>,
                               <cfqueryparam cfsqltype="cf_sql_varchar" value="#Arguments.Adjustment[i]#"/>,
                               <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.total[i])#"/>,
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#val(1)#"/>,
                               GetDate(),
                               <cfqueryparam cfsqltype="cf_sql_integer" value="#val(1)#"/>,
                               GetDate(),
                               <cfqueryparam cfsqltype="cf_sql_interger" value="#Arguments.UserID#"/>
                               )
                        </cfquery>
                        <cfset i =  i + 1>
                    </cfloop>
                    <cfquery datasource="#application.dsn.name#" name="PutCCDetail">
                        INSERT INTO Data_Org_Location_Register_CreditCardDetail
                           (
                           nRegisterTotalsID
                           ,nOrganizationID
                           ,nLocationID
                           ,nCountVisa
                           ,dTotalVisa
                           ,nCountMasterCard
                           ,dTotalMasterCard
                           ,nCountAmericanExpress
                           ,dTotalAmericanExpress
                           ,nCountDiscover
                           ,dTotalDiscover
                           ,nCountDebit
                           ,dTotalDebit
                           ,nAvailable
                           ,tCreationDate
                           ,nActive
                           ,tLastUpdate
                           ,cChangedBy
                           )
                        VALUES(
                            <cfqueryparam cfsqltype="cf_sql_integer" value="#PutRegSalesInfo.New_PutRegSalesInfo_ID#"/>,
                            <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.OrgID#"/>,
                            <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.LocID#"/>,
                            <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.VisaCount#"/>,
                            <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.VisaAmount)#"/>,
                            <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.MasterCardCount#"/>,
                            <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.MasterCardAmount)#"/>,
                            <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.AmericanExpressCount#"/>,
                            <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.AmericanExpressAmount)#"/>,
                            <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.DiscoverCount#"/>,
                            <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.DiscoverAmount)#"/>,
                            <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.DebitCount#"/>,
                            <cfqueryparam cfsqltype="cf_sql_decimal" value="#DecimalFormat(Arguments.DebitAmount)#"/>,
                            <cfqueryparam cfsqltype="cf_sql_integer" value="#val(1)#"/>,
                            GetDate(),
                            <cfqueryparam cfsqltype="cf_sql_integer" value="#val(1)#"/>,
                            GetDate(),
                            <cfqueryparam cfsqltype="cf_sql_interger" value="#Arguments.UserID#"/>
                           )
                    </cfquery>
            </cftransaction>
        <cfreturn true>
        <cfcatch>
            <cfinvoke method="errorHandler" argumentcollection="#ARGUMENTS#" />
        </cfcatch>
    </cftry>
</cffunction>

如果你的 catch 块被执行,就不会有 return。 也许您想将 return false 作为 cfcatch 的最后一行。 否则将 cfreturn true 作为函数的最后一行。 你能确认 catch 块没有被执行吗?