<cfcomponent extends="proventas31.common.formObject">
	<cfset variables.idSalesUnitType_FD=0>
	<cfset variables.idSalesUnitType=0>
	<cfset variables.salesUnitType="">
	<cfset variables.idFieldType=0>
	<cfset variables.fieldType="">
	<cfset variables.fieldName="">
	<cfset variables.isObligatory="N">
	<cfset variables.showInList="N">
	<cfset module.list.orderBy="fieldName">

	<cffunction name="init" access="public" output="false">
		<cfset variables.idSalesUnitType_FD=0>
		<cfset variables.idSalesUnitType=0>
		<cfset variables.salesUnitType="">
		<cfset variables.idFieldType=0>
		<cfset variables.fieldType="">
		<cfset variables.fieldName="">
		<cfset variables.isObligatory="N">
		<cfset variables.showInList="N">
		<cfset module.list.orderBy="fieldName">
	</cffunction>
	
	<cffunction name="getFormObjectId" access="public" output="false" returntype="numeric">
		<cfreturn getidSalesUnitType_FD()>
	</cffunction>
	
	<cffunction name="setFormObjectId" access="public" output="false">
		<cfargument name="objectId" type="numeric" required="yes">
		<cfset setidSalesUnitType_FD(arguments.objectId)>
	</cffunction>

	<cffunction name="setIdSalesUnitType_FD" access="public" output="false">
		<cfargument name="idSalesUnitType_FD" type="numeric" required="yes" default="0">
		<cfset variables.idSalesUnitType_FD=arguments.idSalesUnitType_FD>
	</cffunction>

	<cffunction name="getIdSalesUnitType_FD" access="public" returntype="numeric" output="false">
		<cfreturn variables.idSalesUnitType_FD>
	</cffunction>
	
	<cffunction name="setIdSalesUnitType" access="public" output="false">
		<cfargument name="idSalesUnitType" type="numeric" required="yes" default="0">
		<cfset variables.idSalesUnitType=arguments.idSalesUnitType>
	</cffunction>

	<cffunction name="getIdSalesUnitType" access="public" returntype="numeric" output="false">
		<cfreturn variables.idSalesUnitType>
	</cffunction>

	<cffunction name="getSalesUnitType" access="public" returntype="proventas31.corporate.salesUnitType" output="false">
		<cfif not IsObject("variables.salesUnitType")><cfset variables.salesUnitType=CreateObject("component", "proventas31.corporate.salesUnitType")></cfif>
		<cfif (Compare(module.form.pageAction, "add") and not variables.salesUnitType.isRetrievedFromDB()) or variables.salesUnitType.getidSalesUnitType() neq variables.idSalesUnitType>
			<cfset variables.salesUnitType=CreateObject("component", "proventas31.corporate.salesUnitType")>
			<cfset variables.salesUnitType.setidSalesUnitType(variables.idSalesUnitType)>
			<cfset variables.salesUnitType.get()>
		</cfif>
		<cfreturn variables.salesUnitType>
	</cffunction>

	<cffunction name="setIdFieldType" access="public" output="false">
		<cfargument name="idFieldType" type="numeric" required="yes" default="0">
		<cfset variables.idFieldType=arguments.idFieldType>
	</cffunction>

	<cffunction name="getIdFieldType" access="public" returntype="numeric" output="false">
		<cfreturn variables.idFieldType>
	</cffunction>

	<cffunction name="getFieldType" access="public" returntype="proventas31.corporate.fieldType" output="false">
		<cfif not IsObject("variables.fieldType")><cfset variables.fieldType=CreateObject("component", "proventas31.corporate.fieldType")></cfif>
		<cfif (Compare(module.form.pageAction, "add") and not variables.fieldType.isRetrievedFromDB()) or variables.fieldType.getidfieldType() neq variables.idfieldType>
			<cfset variables.fieldType=CreateObject("component", "proventas31.corporate.fieldType")>
			<cfset variables.fieldType.setidfieldType(variables.idfieldType)>
			<cfset variables.fieldType.get()>
		</cfif>
		<cfreturn variables.fieldType>
	</cffunction>

	<cffunction name="setFieldName" access="public" output="false">
		<cfargument name="fieldName" type="string" required="yes" default="">
		<cfset variables.fieldName=arguments.fieldName>
	</cffunction>

	<cffunction name="getFieldName" access="public" returntype="string" output="false">
		<cfreturn variables.fieldName>
	</cffunction>

	<cffunction name="setIsObligatory" access="public" output="false">
		<cfargument name="isObligatory" type="string" required="yes" default="">
		<cfset variables.isObligatory=arguments.isObligatory>
	</cffunction>

	<cffunction name="getIsObligatory" access="public" returntype="string" output="false">
		<cfreturn variables.isObligatory>
	</cffunction>

	<cffunction name="setShowInList" access="public" output="false">
		<cfargument name="showInList" type="string" required="yes" default="">
		<cfset variables.showInList=arguments.showInList>
	</cffunction>

	<cffunction name="getShowInList" access="public" returntype="string" output="false">
		<cfreturn variables.showInList>
	</cffunction>

	<cffunction name="setVariablesFromQuery" access="private" output="false">
		<cfargument name="query" type="query" required="yes">
		<cfif query.recordcount gt 0>
			<cfset variables.idSalesUnitType_FD=query.idSalesUnitType_FD>
			<cfset variables.idSalesUnitType=query.idSalesUnitType>
			<cfset variables.idFieldType=query.idFieldType>
			<cfset variables.fieldName=query.fieldName>
			<cfset variables.isObligatory=query.isObligatory>
			<cfset variables.showInList=query.showInList>
		</cfif>
	</cffunction>

	<cffunction name="get" access="public" output="false">
		<cfquery name="getQuery" datasource="#application.datasource#">
			SELECT 
				#getQueryString()#
			WHERE
				salesUnitType_FD.idSalesUnitType_FD=<cfqueryparam value="#variables.idSalesUnitType_FD#" cfsqltype="cf_sql_integer">
		</cfquery>
		<cfif getQuery.recordcount gt 0>
			<cfset setVariablesFromQuery(getQuery)>
		</cfif>
		<cfset module.retrievedFromDB=true>
	</cffunction>

	<cffunction name="getList" access="public" output="false" returntype="query">
		<cfargument name="orderBy" required="no" type="string" default="">

		<cfquery name="getListQuery" datasource="#application.datasource#">
			SELECT 
				#getQueryString()#
			ORDER BY <cfif Len(arguments.orderBy)>#arguments.orderBy#<cfelse>#module.list.orderBy#</cfif>
		</cfquery>
		<cfreturn getListQuery>
	</cffunction>
	
	<cffunction name="getQueryString" access="private" output="false" returntype="string">
		<cfset var result="
				salesUnitType_FD.idSalesUnitType_FD,
				salesUnitType_FD.idSalesUnitType, salesUnitType.name AS salesUnitType,
				salesUnitType_FD.idFieldType, fieldType.name AS fieldType,
				salesUnitType_FD.fieldName,
				salesUnitType_FD.isObligatory,
				salesUnitType_FD.showInList
			FROM 
				salesUnitType_FD
				LEFT JOIN salesUnitType ON salesUnitType_FD.idSalesUnitType=salesUnitType.idSalesUnitType
				LEFT JOIN fieldType ON salesUnitType_FD.idFieldType=fieldType.idFieldType
				">
		<cfreturn result>
	</cffunction>

	<cffunction name="createOptions" access="public" returntype="numeric" output="true">
		<cfargument name="selected" required="yes" type="numeric" default="0">
		<cfset var list=getList("salesUnitType_FD.idSalesUnitType_FD")>
		<cfset var result=0>
		<cfif list.idSalesUnitType_FD gt 0><cfset result=list.idSalesUnitType_FD></cfif>
		<cfloop query="list">
			<cfif list.idSalesUnitType_FD eq arguments.selected><cfset _selected=" selected"><cfset result=list.idSalesUnitType_FD><cfelse><cfset _selected=""></cfif>
			<cfoutput><option value="#list.idSalesUnitType_FD#"#_selected#>#list.name#</option></cfoutput>
		</cfloop>
		<cfreturn result>
	</cffunction>
	
	<cffunction name="getId" access="public" returntype="struct" output="false">
		<cfset var result=StructNew()>
		<cfset result.id=0>
		<cfset result.message="">
		<cfquery name="getIdQuery" datasource="#application.datasource#">
			SELECT 
				idSalesUnitType_FD 
			FROM 
				salesUnitType_FD 
			WHERE 
				fieldName=<cfqueryparam value="#variables.fieldName#" cfsqltype="cf_sql_varchar" maxlength="255">
				<cfif variables.idSalesUnitType gt 0>
				AND idSalesUnitType=<cfqueryparam value="#variables.idSalesUnitType#" cfsqltype="cf_sql_integer">
				</cfif>
				<cfif variables.idFieldType gt 0>
				AND idFieldType=<cfqueryparam value="#variables.idFieldType#" cfsqltype="cf_sql_integer">
				</cfif>
				<cfif variables.idSalesUnitType_FD gt 0>
				AND idSalesUnitType_FD != <cfqueryparam value="#variables.idSalesUnitType_FD#" cfsqltype="cf_sql_integer">
				</cfif>
		</cfquery>
		<cfif getIdQuery.recordcount gt 0>
			<cfset result.id=getIdQuery.idSalesUnitType_FD>
		</cfif>
		<cfreturn result>
	</cffunction>
	
	<cffunction name="create" access="public" returntype="struct" output="false">
		<cfset var result=StructNew()>
		<cfset result.id=0>
		<cfset result.message="">
		<!--- check parameters --->
		<cfif not Len(variables.fieldName)>
			<cfset result.message="fieldName es un campo obligatorio">
			<cfreturn result>
		</cfif>
		<cfif not idSalesUnitType>
			<cfset result.message="idSalesUnitType es un campo obligatorio">
			<cfreturn result>
		</cfif>
		<cfif not idFieldType>
			<cfset result.message="idFieldType es un campo obligatorio">
			<cfreturn result>
		</cfif>
		<cfset result=getId()>
		<cfif result.id gt 0>
			<cfset result.message="Provedor con ese nombre ya existe">
			<cfreturn result>
		</cfif>
		<!--- variables ok --->
		<cfif variables.isObligatory eq "on"><cfset variables.isObligatory="Y"><cfelse><cfset variables.isObligatory="N"></cfif>
		<cfif variables.showInList eq "on"><cfset variables.showInList="Y"><cfelse><cfset variables.showInList="N"></cfif>
		<cftry>
			<cfquery name="createQuery" datasource="#application.datasource#">
				INSERT INTO salesUnitType_FD
					(
						idSalesUnitType, 
						idFieldType,
						fieldName, 
						isObligatory, 
						showInList
					) 
				VALUES 
					(
					<cfqueryparam value="#variables.idSalesUnitType#" cfsqltype="cf_sql_integer">, 
					<cfqueryparam value="#variables.idFieldType#" cfsqltype="cf_sql_integer">, 
					<cfqueryparam value="#variables.fieldName#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#UCase(variables.isObligatory)#" cfsqltype="cf_sql_char" maxlength="1">,
					<cfqueryparam value="#UCase(variables.showInList)#" cfsqltype="cf_sql_char" maxlength="1">
					)
			</cfquery>
			<cfset result=getId()>
			<cfset variables.idSalesUnitType_FD=result.id>
			<!--- catch any error --->
			<cfcatch type="any">
				<cfset result.id=-1>
				<cfset result.message="Error [salesUnitType_FD.create()]: " & cfcatch.Message & "<br>Details: " & cfcatch.Detail>
			</cfcatch>
		</cftry>
		<cfreturn result>
	</cffunction>

	<cffunction name="update" access="public" returntype="struct" output="false">
		<cfset var result=StructNew()>
		<cfset result.id=0>
		<cfset result.message="">
		<!--- check parameters --->
		<cfif not Len(variables.fieldName)>
			<cfset result.message="fieldName es un campo obligatorio">
			<cfreturn result>
		</cfif>
		<cfif not idSalesUnitType>
			<cfset result.message="idSalesUnitType es un campo obligatorio">
			<cfreturn result>
		</cfif>
		<cfif not idFieldType>
			<cfset result.message="idFieldType es un campo obligatorio">
			<cfreturn result>
		</cfif>
		<cfset result=getId()>
		<cfif result.id gt 0>
			<cfset result.message="Provedor con ese nombre ya existe">
			<cfreturn result>
		</cfif>
		<!--- variables ok --->
		<cfif variables.isObligatory eq "on"><cfset variables.isObligatory="Y"><cfelse><cfset variables.isObligatory="N"></cfif>
		<cfif variables.showInList eq "on"><cfset variables.showInList="Y"><cfelse><cfset variables.showInList="N"></cfif>
		<cftry>
			<cfquery name="updateQuery" datasource="#application.datasource#">
				UPDATE salesUnitType_FD
				SET 
					idSalesUnitType=<cfqueryparam value="#variables.idSalesUnitType#" cfsqltype="cf_sql_integer">,
					idFieldType=<cfqueryparam value="#variables.idFieldType#" cfsqltype="cf_sql_integer">, 
					fieldName=<cfqueryparam value="#variables.fieldName#" cfsqltype="cf_sql_varchar" maxlength="255">,
					isObligatory=<cfqueryparam value="#UCase(variables.isObligatory)#" cfsqltype="cf_sql_char" maxlength="1">,
					showInList=<cfqueryparam value="#UCase(variables.showInList)#" cfsqltype="cf_sql_char" maxlength="1">
				WHERE 
					idSalesUnitType_FD=<cfqueryparam value="#variables.idSalesUnitType_FD#" cfsqltype="cf_sql_integer">
			</cfquery>
			<cfset result.id=variables.idSalesUnitType_FD>
			<!--- catch any error --->
			<cfcatch type="any">
				<cfset result.id=-1>
				<cfset result.message="Error [salesUnitType_FD.update()]: " & cfcatch.Message & "<br>Details: " & cfcatch.Detail>
			</cfcatch>
		</cftry>
		<cfreturn result>
	</cffunction>

	<cffunction name="delete" access="public" returntype="struct" output="false">
		<cfset var result=StructNew()>
		<cfset result.id=0>
		<cfset result.message="">
		<!--- check parameters --->
		<cftry>
			<cfquery name="deleteQuery" datasource="#application.datasource#">
				DELETE FROM salesUnitType_FD
				WHERE 
					idSalesUnitType_FD=<cfqueryparam value="#variables.idSalesUnitType_FD#" cfsqltype="cf_sql_integer">
			</cfquery>
			<cfset result.id=0>
			<cfset init()>
			<!--- catch any error --->
			<cfcatch type="any">
				<cfset result.id=-1>
				<cfset result.message="Error [salesUnitType_FD.delete()]: " & cfcatch.Message & "<br>Details: " & cfcatch.Detail>
			</cfcatch>
		</cftry>
		<cfreturn result>
	</cffunction>
</cfcomponent>