<cfcomponent extends="proventas31.common.formObject">
	<cfset variables.idSalesClientUnit=0>
	<cfset variables.salesClientUnit="">
	<cfset variables.idSalesClientState=0>
	<cfset variables.salesClientState="">
	<cfset variables.idEmployee=0>
	<cfset variables.employee="">
	<cfset variables.dateRegistration=LSDateFormat(Now(), "dd/mm/yyyy") & " " & LSTimeFormat(Now(), "HH:mm:ss")>

	<cfset module.list.orderBy="name">

	<cffunction name="init" access="public" output="false">
		<cfset variables.idSalesClientState=0>
		<cfset variables.name="">
	</cffunction>
	
	<cffunction name="getFormObjectId" access="public" output="false" returntype="numeric">
		<cfreturn getIdSalesClientUnit()>
	</cffunction>
	
	<cffunction name="setFormObjectId" access="public" output="false">
		<cfargument name="objectId" type="numeric" required="yes">
		<cfset setIdSalesClientUnit(arguments.objectId)>
	</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="proventas31.corporate.salesClientUnit" output="false">
		<cfif not IsObject("variables.salesClientUnit")><cfset variables.salesClientUnit=CreateObject("component", "proventas31.corporate.salesClientUnit")></cfif>
		<cfif (Compare(module.form.pageAction, "add") and not variables.salesClientUnit.isRetrievedFromDB()) or variables.salesClientUnit.getIdSalesClientUnit() neq variables.idSalesClientUnit>
			<cfset variables.salesClientUnit=CreateObject("component", "proventas31.corporate.salesClientUnit")>
			<cfset variables.salesClientUnit.setIdSalesClientUnit(variables.idSalesClientUnit)>
			<cfset variables.salesClientUnit.get()>
		</cfif>
		<cfreturn variables.salesClientUnit>
	</cffunction>

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

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

	<cffunction name="getSalesClientState" access="public" returntype="proventas31.corporate.salesClientState" output="false">
		<cfif not IsObject("variables.salesClientState")><cfset variables.salesClientState=CreateObject("component", "proventas31.corporate.salesClientState")></cfif>
		<cfif (Compare(module.form.pageAction, "add") and not variables.salesClientState.isRetrievedFromDB()) or variables.salesClientState.getIdSalesClientState() neq variables.idSalesClientState>
			<cfset variables.salesClientState=CreateObject("component", "proventas31.corporate.salesClientState")>
			<cfset variables.salesClientState.setIdSalesClientState(variables.idSalesClientState)>
			<cfset variables.salesClientState.get()>
		</cfif>
		<cfreturn variables.salesClientState>
	</cffunction>

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

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

	<cffunction name="getEmployee" access="public" returntype="proventas31.corporate.employee" output="false">
		<cfif not IsObject("variables.employee")><cfset variables.employee=CreateObject("component", "proventas31.corporate.employee")></cfif>
		<cfif (Compare(module.form.pageAction, "add") and not variables.employee.isRetrievedFromDB()) or variables.employee.getIdEmployee() neq variables.idEmployee>
			<cfset variables.employee=CreateObject("component", "proventas31.corporate.employee")>
			<cfset variables.employee.setIdEmployee(variables.idEmployee)>
			<cfset variables.employee.get()>
		</cfif>
		<cfreturn variables.employee>
	</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="create" access="public" returntype="struct" output="false">
		<cfset var result=StructNew()>
		<cfset result.id=0>
		<cfset result.message="">
		<!--- variables ok --->
		<cftry>
			<cfquery name="createQuery" datasource="#application.datasource#">
				INSERT INTO salesClientUnitStateHistory
					(
					idSalesClientUnit, idSalesClientState, idEmployee, dateRegistration
					) 
				VALUES 
					(
					<cfqueryparam value="#variables.idSalesClientUnit#" cfsqltype="cf_sql_integer">, 
					<cfqueryparam value="#variables.idSalesClientState#" cfsqltype="cf_sql_integer">, 
					<cfqueryparam value="#variables.idEmployee#" cfsqltype="cf_sql_integer">, 
					<cfqueryparam value="#Now()#" cfsqltype="cf_sql_timestamp">
					)
				ON DUPLICATE KEY UPDATE
					dateRegistration=<cfqueryparam value="#Now()#" cfsqltype="cf_sql_timestamp">
			</cfquery>
			<cfset result.id=variables.idSalesClientUnit>
			<!--- catch any error --->
			<cfcatch type="any">
				<cfset result.id=-1>
				<cfset result.message="Error [salesClientUnitStateHistory.create()]: " & cfcatch.Message & "<br>Details: " & cfcatch.Detail>
			</cfcatch>
		</cftry>
		<cfreturn result>
	</cffunction>
	
	<cffunction name="getList" access="public" returntype="query" output="false">
		<cfquery name="getListQuery" datasource="#application.datasource#">
			SELECT 
				salesClientUnitStateHistory.idSalesClientUnit, 
				salesClientUnitStateHistory.idSalesClientState, salesClientState.name AS salesClientState,
				salesClientUnitStateHistory.idEmployee, CONCAT(TRIM(CONCAT(employee.nameFirst, ' ', employee.nameFirst1)), ' ', TRIM(CONCAT(employee.nameLast, ' ', employee.nameLast1))) AS employee,
				salesClientUnitStateHistory.dateRegistration
			FROM 
				salesClientUnitStateHistory
			LEFT JOIN salesClientState ON salesClientUnitStateHistory.idSalesClientState=salesClientState.idSalesClientState
			LEFT JOIN employee ON salesClientUnitStateHistory.idEmployee=employee.idEmployee
			WHERE 
				salesClientUnitStateHistory.idSalesClientUnit=<cfqueryparam value="#variables.idSalesClientUnit#" cfsqltype="cf_sql_integer">
				AND salesClientUnitStateHistory.idSalesClientState=<cfqueryparam value="#variables.idSalesClientState#" cfsqltype="cf_sql_integer">
			ORDER BY salesClientUnitStateHistory.dateRegistration DESC
			LIMIT 0,1
		</cfquery>
		<cfreturn getListQuery>
	</cffunction>
</cfcomponent>