<cfcomponent extends="proerp.common.formObject">
	<cfset variables.idCompany=0>
	<cfset variables.company="">
	<cfset variables.ownerName="">
	<cfset variables.ownerPhone="">
	<cfset variables.salesChiefName="">
	<cfset variables.salesChiefPhone="">
	<cfset variables.numberOfSellers="0">

	<cffunction name="init" access="public" output="false">
		<cfset variables.idCompany=0>
		<cfset variables.company="">
		<cfset variables.ownerName="">
		<cfset variables.ownerPhone="">
		<cfset variables.salesChiefName="">
		<cfset variables.salesChiefPhone="">
		<cfset variables.numberOfSellers="0">
	</cffunction>
	
	<cffunction name="getFormObjectId" access="public" output="false" returntype="numeric">
		<cfreturn getIdCompany()>
	</cffunction>
	
	<cffunction name="setFormObjectId" access="public" output="false">
		<cfargument name="objectId" type="numeric" required="yes">
		<cfset setIdCompany(arguments.objectId)>
	</cffunction>

	<cffunction name="setIdCompany" access="public" output="false">
		<cfargument name="idCompany" type="numeric" required="yes" default="0">
		<cfset variables.idCompany=arguments.idCompany>
	</cffunction>

	<cffunction name="getIdCompany" access="public" returntype="numeric" output="false">
		<cfreturn variables.idCompany>
	</cffunction>

	<cffunction name="getCompany" access="public" returntype="proerp.corporate.company" output="false">
		<cfif not IsObject("variables.company")><cfset variables.company=CreateObject("component", "proerp.corporate.company")></cfif>
		<cfif (Compare(module.form.pageAction, "add") and not variables.company.isRetrievedFromDB()) or variables.company.getIdCompany() neq variables.idCompany>
			<cfset variables.company=CreateObject("component", "proerp.corporate.company")>
			<cfset variables.company.setIdCompany(variables.idCompany)>
			<cfset variables.company.get()>
		</cfif>
		<cfreturn variables.company>
	</cffunction>

	<cffunction name="setOwnerName" access="remote" output="false">
		<cfargument name="ownerName" type="numeric" required="yes" default="">
		<cfset variables.ownerName=arguments.ownerName>
	</cffunction>

	<cffunction name="getOwnerName" access="remote" returntype="string" output="false">
		<cfreturn variables.ownerName>
	</cffunction>
	
	<cffunction name="setOwnerPhone" access="remote" output="false">
		<cfargument name="ownerPhone" type="numeric" required="yes" default="">
		<cfset variables.ownerPhone=arguments.ownerPhone>
	</cffunction>

	<cffunction name="getOwnerPhone" access="remote" returntype="string" output="false">
		<cfreturn variables.ownerPhone>
	</cffunction>

	<cffunction name="setSalesChiefName" access="remote" output="false">
		<cfargument name="salesChiefName" type="numeric" required="yes" default="">
		<cfset variables.salesChiefName=arguments.salesChiefName>
	</cffunction>

	<cffunction name="getSalesChiefName" access="remote" returntype="string" output="false">
		<cfreturn variables.salesChiefName>
	</cffunction>

	<cffunction name="setSalesChiefPhone" access="remote" output="false">
		<cfargument name="salesChiefPhone" type="numeric" required="yes" default="">
		<cfset variables.salesChiefPhone=arguments.salesChiefPhone>
	</cffunction>

	<cffunction name="getSalesChiefPhone" access="remote" returntype="string" output="false">
		<cfreturn variables.salesChiefPhone>
	</cffunction>

	<cffunction name="setNumberOfSellers" access="public" output="false">
		<cfargument name="numberOfSellers" type="numeric" required="yes" default="0">
		<cfset variables.numberOfSellers=arguments.numberOfSellers>
	</cffunction>

	<cffunction name="getNumberOfSellers" access="public" returntype="numeric" output="false">
		<cfreturn variables.numberOfSellers>
	</cffunction>
	
	<cffunction name="setVariablesFromQuery" access="private" output="false">
		<cfargument name="getQuery" type="query" required="yes">
		<cfif getQuery.recordcount gt 0>
			<cfset variables.idCompany=getQuery.idCompany>
			<cfset variables.company=getQuery.company>
			<cfset variables.ownerName=getQuery.ownerName>
			<cfset variables.ownerPhone=getQuery.ownerPhone>
			<cfset variables.salesChiefName=getQuery.salesChiefName>
			<cfset variables.salesChiefPhone=getQuery.salesChiefPhone>
			<cfset variables.numberOfSellers=getQuery.numberOfSellers>
		</cfif>
	</cffunction>
	
	<cffunction name="get" access="remote" output="false">
		<cfquery name="getQuery" datasource="#application.datasource#">
			SELECT 
				#getQueryString()#
			WHERE
				companyInfo.idCompany=<cfqueryparam value="#variables.idCompany#" cfsqltype="cf_sql_integer">
		</cfquery>
		<cfif getQuery.recordcount gt 0>
			<cfset setVariablesFromQuery(getQuery)>
		</cfif>
		<cfset module.retrievedFromDB=true>
	</cffunction>

	<cffunction name="getList" access="remote" 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)>#URLDecode(arguments.orderBy)#<cfelse>#URLDecode(module.list.orderBy)#</cfif>
		</cfquery>
		<cfreturn getListQuery>
	</cffunction>
	
	<cffunction name="getQueryString" access="private" output="false" returntype="string">
		<cfset var result="
				companyInfo.idCompany, 
				company.name as company, 
				companyInfo.ownerName,
				companyInfo.ownerPhone,
				companyInfo.salesChiefName,
				companyInfo.salesChiefPhone,
				companyInfo.numberOfSellers
			FROM 
				companyInfo 
			LEFT JOIN company ON companyInfo.idCompany=company.idCompany
				">
		<cfreturn result>
	</cffunction>

	<cffunction name="create" access="remote" returntype="struct" output="false">
		<cfset var result=StructNew()>
		<cfset result.id=0>
		<cfset result.message="">
		
		<!--- check parameters --->
		<cftry>
			<cfquery name="createQuery" datasource="#application.datasource#">
				INSERT INTO companyInfo
					(
					idCompany, 
					ownerName,
					ownerPhone,
					salesChiefName,
					salesChiefPhone, 
					numberOfSellers 
					) 
				VALUES 
					(
					<cfqueryparam value="#variables.idCompany#" cfsqltype="cf_sql_integer">, 
					<cfqueryparam value="#variables.ownerName#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#variables.ownerPhone#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#variables.salesChiefName#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#variables.salesChiefPhone#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfif variables.numberOfSellers gt 0><cfqueryparam value="#variables.numberOfSellers#" cfsqltype="cf_sql_integer"><cfelse>NULL</cfif>
					)
				ON DUPLICATE KEY UPDATE 
					ownerName=<cfqueryparam value="#variables.ownerName#" cfsqltype="cf_sql_varchar" maxlength="255">,
					ownerPhone=<cfqueryparam value="#variables.ownerPhone#" cfsqltype="cf_sql_varchar" maxlength="255">,
					salesChiefName=<cfqueryparam value="#variables.salesChiefName#" cfsqltype="cf_sql_varchar" maxlength="255">,
					salesChiefPhone=<cfqueryparam value="#variables.salesChiefPhone#" cfsqltype="cf_sql_varchar" maxlength="255">,
					numberOfSellers=<cfif variables.numberOfSellers gt 0><cfqueryparam value="#variables.numberOfSellers#" cfsqltype="cf_sql_integer"><cfelse>NULL</cfif>
			</cfquery>
			<cfset result.id=variables.idCompany>
			<!--- catch any error --->
			<cfcatch type="any">
				<cfset result.id=-1>
				<cfset result.message="Error [companyInfo.create()]: " & cfcatch.Message & "<br>Details: " & cfcatch.Detail>
			</cfcatch>
		</cftry>
		<cfreturn result>
	</cffunction>

	<cffunction name="update" access="remote" returntype="struct" output="false">
		<cfreturn create()>
	</cffunction>

	<cffunction name="delete" access="remote" 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 companyInfo
				WHERE 
					idCompany=<cfqueryparam value="#variables.idCompany#" 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 [companyInfo.delete()]: " & cfcatch.Message & "<br>Details: " & cfcatch.Detail>
			</cfcatch>
		</cftry>
		<cfreturn result>
	</cffunction>
	
</cfcomponent>