<cfcomponent extends="components.common.formObject">
	<cfset variables.idSalesClientUnitReject=0>
	<cfset variables.idSalesClient=0>
	<cfset variables.salesClient="">
	<cfset variables.idSalesClientUnit=0>
	<cfset variables.salesClientUnit="">
	<cfset variables.idSalesRejectOption=0>
	<cfset variables.SalesRejectOption="">
	<cfset variables.dateRegistration=LSDateFormat(Now(), "dd/mm/yyyy") & " " & LSTimeFormat(Now(), "HH:mm:ss")>
	<cfset variables.description="">
	<cfset module.list.orderBy="dateRegistration">
	
	<cffunction name="init" access="public" output="false">
		<cfset variables.idSalesClientUnitReject=0>
		<cfset variables.idSalesClient=0>
		<cfset variables.salesClient="">
		<cfset variables.idSalesClientUnit=0>
		<cfset variables.salesClientUnit="">
		<cfset variables.idSalesRejectOption=0>
		<cfset variables.SalesRejectOption="">
		<cfset variables.dateRegistration=LSDateFormat(Now(), "dd/mm/yyyy") & " " & LSTimeFormat(Now(), "HH:mm:ss")>
		<cfset variables.description="">
		<cfset module.list.orderBy="dateRegistration">
	</cffunction>
	
	<cffunction name="getFormObjectId" access="public" output="false" returntype="numeric">
		<cfreturn getIdSalesClientUnitReject()>
	</cffunction>
	
	<cffunction name="setFormObjectId" access="public" output="false">
		<cfargument name="objectId" type="numeric" required="yes">
		<cfset setIdSalesClientUnitReject(arguments.objectId)>
	</cffunction>

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

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

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

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

	<cffunction name="getSalesClient" access="public" returntype="components.corporate.salesClient" output="false">
		<cfif not IsObject("variables.salesClient")><cfset variables.salesClient=CreateObject("component", "components.corporate.salesClient")></cfif>
		<cfif (Compare(module.form.pageAction, "add") and not variables.salesClient.isRetrievedFromDB()) or variables.salesClient.getIdSalesClient() neq variables.idSalesClient>
			<cfset variables.salesClient=CreateObject("component", "components.corporate.salesClient")>
			<cfset variables.salesClient.setIdSalesClient(variables.idSalesClient)>
			<cfset variables.salesClient.get()>
		</cfif>
		<cfreturn variables.salesClient>
	</cffunction>

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

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

	<cffunction name="getSalesClientUnit" access="public" returntype="components.corporate.salesClientUnit" output="false">
		<cfif not IsObject("variables.salesClientUnit")><cfset variables.salesClientUnit=CreateObject("component", "components.corporate.salesClientUnit")></cfif>
		<cfif (Compare(module.form.pageAction, "add") and not variables.salesClientUnit.isRetrievedFromDB()) or variables.salesClientUnit.getIdSalesClient() neq variables.idSalesClientUnit>
			<cfset variables.salesClientUnit=CreateObject("component", "components.corporate.salesClientUnit")>
			<cfset variables.salesClientUnit.setIdSalesClient(variables.idSalesClientUnit)>
			<cfset variables.salesClientUnit.get()>
		</cfif>
		<cfreturn variables.salesClientUnit>
	</cffunction>

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

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

	<cffunction name="getSalesRejectOption" access="public" returntype="components.corporate.salesRejectOption" output="false">
		<cfif not IsObject("variables.salesRejectOption")><cfset variables.salesRejectOption=CreateObject("component", "components.corporate.salesRejectOption")></cfif>
		<cfif (Compare(module.form.pageAction, "add") and not variables.salesRejectOption.isRetrievedFromDB()) or variables.salesRejectOption.getIdSalesRejectOption() neq variables.idSalesRejectOption>
			<cfset variables.salesRejectOption=CreateObject("component", "components.corporate.salesClientUnit")>
			<cfset variables.salesRejectOption.setIdSalesRejectOption(variables.idSalesRejectOption)>
			<cfset variables.salesRejectOption.get()>
		</cfif>
		<cfreturn variables.salesRejectOption>
	</cffunction>

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

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

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

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

	<cffunction name="setVariablesFromQuery" access="private" output="false">
		<cfargument name="getQuery" type="query" required="yes">
		<cfif getQuery.recordcount gt 0>
			<cfset variables.idSalesClientUnitReject=getQuery.idSalesClientUnitReject>
			<cfset variables.idSalesClient=getQuery.idSalesClient>
			<cfset variables.idSalesClientUnit=getQuery.idSalesClientUnit>
			<cfset variables.idSalesRejectOption=getQuery.idSalesRejectOption>
			<cfif Len(getQuery.dateRegistration)><cfset variables.dateRegistration=LSDateFormat(getQuery.dateRegistration, "dd/mm/yyyy") & " " & LSTimeFormat(getQuery.dateRegistration, "HH:mm:ss")><cfelse><cfset variables.dateRegistration=""></cfif>
			<cfset variables.description=ToString(getQuery.description)>
		</cfif>
	</cffunction>
	
	<cffunction name="get" access="public" output="false">
		<cfquery name="getQuery" datasource="#application.datasource#">
			SELECT 
				#getQueryString()#
			WHERE
				salesClientUnitReject.idSalesClientUnitReject=<cfqueryparam value="#variables.idSalesClientUnitReject#" 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="idSalesClient">
		<cfquery name="getListQuery" datasource="#application.datasource#">
			SELECT 
				#getQueryString()#
			WHERE
				salesClientUnitReject.idSalesClient=<cfqueryparam value="#variables.idSalesClient#" cfsqltype="cf_sql_integer">
			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="
				salesClientUnitReject.idSalesClientUnitReject,
				salesClientUnitReject.idSalesClient, 
				CONCAT(TRIM(CONCAT(salesClient.nameFirst, ' ', salesClient.nameFirst1)), ' ', TRIM(CONCAT(salesClient.nameLast, ' ', salesClient.nameLast1))) as salesClient,
				salesClientUnitReject.idSalesClientUnit, salesUnit.number as salesClientUnit, 
				salesClientUnitReject.idSalesRejectOption, salesRejectOption.name as salesRejectOption,
				salesClientUnitReject.dateRegistration, 
				salesClientUnitReject.description 
			FROM 
				salesClientUnitReject 
				LEFT JOIN salesClient ON salesClientUnitReject.idSalesClient=salesClient.idSalesClient
				LEFT JOIN salesClientUnit ON salesClientUnitReject.idSalesClientUnit=salesClientUnit.idSalesClientUnit
				LEFT JOIN salesRejectOption ON salesClientUnitReject.idSalesRejectOption=salesRejectOption.idSalesRejectOption
				LEFT JOIN salesUnit ON salesClientUnit.idSalesUnit=salesUnit.idSalesUnit 
			">
		<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 
				idSalesClientUnitReject
			FROM 
				salesClientUnitReject 
			WHERE 
				salesClientUnitReject.idSalesClient=<cfqueryparam value="#variables.idSalesClient#" cfsqltype="cf_sql_integer"> AND
				salesClientUnitReject.idSalesClientUnit=<cfqueryparam value="#variables.idSalesClientUnit#" cfsqltype="cf_sql_integer"> AND
				salesClientUnitReject.idSalesRejectOption=<cfqueryparam value="#variables.idSalesRejectOption#" cfsqltype="cf_sql_integer">
				<cfif variables.idSalesClientUnitReject gt 0>
				AND salesClientUnitReject.idSalesClientUnitReject != <cfqueryparam value="#variables.idSalesClientUnitReject#" cfsqltype="cf_sql_integer">
				</cfif>
		</cfquery>
		<cfif getIdQuery.recordcount gt 0>
			<cfset result.id=getIdQuery.idSalesClientUnitReject>
		</cfif>
		<cfreturn result>
	</cffunction>

	<cffunction name="create" access="public" returntype="struct" output="false">
		<cfset var result=StructNew()>
		<cfset result.id=0>
		<cfset result.message="">
		<cfset result=getId()>
		<!--- check parameters --->
		<cfif result.id gt 0>
			<cfset result.message="Departamento cone esos datos ya existe">
			<cfreturn result>
		</cfif>
		<cftry>
			<cfquery name="createQuery" datasource="#application.datasource#">
				INSERT INTO salesClientUnitReject
					(
					idSalesClient,
					idSalesClientUnit,
					idSalesRejectOption,
					dateRegistration,
					description
					) 
				VALUES 
					(
					<cfqueryparam value="#variables.idSalesClient#" cfsqltype="cf_sql_integer">, 
					<cfqueryparam value="#variables.idSalesClientUnit#" cfsqltype="cf_sql_integer">, 
					<cfqueryparam value="#variables.idSalesRejectOption#" cfsqltype="cf_sql_integer">, 
					<cfqueryparam value="#parseDate(variables.dateRegistration)#" cfsqltype="cf_sql_date">,
					<cfqueryparam value="#variables.description#" cfsqltype="cf_sql_clob">
					)
			</cfquery>
			<cfset result=getId()>
			<!--- catch any error --->
			<cfcatch type="any">
				<cfset result.id=-1>
				<cfset result.message="Error [SalesClient.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 --->
		<cfset result=getId()>
		<cfif result.id gt 0>
			<cfset result.message="Departamento cone esos datos ya existe">
			<cfreturn result>
		</cfif>
		<cftry>
			<cfquery name="updateQuery" datasource="#application.datasource#">
				UPDATE salesClientUnitReject SET
					idSalesClient=<cfqueryparam value="#variables.idSalesClient#" cfsqltype="cf_sql_integer">, 
					idSalesClientUnit=<cfqueryparam value="#variables.idSalesClientUnit#" cfsqltype="cf_sql_integer">, 
					idSalesRejectOption=<cfqueryparam value="#variables.idSalesRejectOption#" cfsqltype="cf_sql_integer">, 
					dateRegistration=<cfqueryparam value="#parseDate(variables.dateRegistration)#" cfsqltype="cf_sql_date">,
					description=<cfqueryparam value="#variables.description#" cfsqltype="cf_sql_clob">
				WHERE
					salesClientUnitReject.idSalesClientUnitReject=<cfqueryparam value="#variables.idSalesClientUnitReject#" cfsqltype="cf_sql_integer"> 
			</cfquery>
			<cfset result.id=variables.idSalesClientUnitReject>
			<!--- catch any error --->
			<cfcatch type="any">
				<cfset result.id=-1>
				<cfset result.message="Error [SalesClient.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 salesClientUnitReject
				WHERE 
					salesClientUnitReject.idSalesClientUnitReject=<cfqueryparam value="#variables.idSalesClientUnitReject#" 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 [SalesClient.delete()]: " & cfcatch.Message & "<br>Details: " & cfcatch.Detail>
			</cfcatch>
		</cftry>
		<cfreturn result>
	</cffunction>
	
</cfcomponent>