<cfcomponent extends="components.common.formObject">
	<cfset variables.idSalesUnit=0>
	<cfset variables.salesUnit="">
	<cfset variables.recamaras="">
	<cfset variables.banos="">
	<cfset variables.estudio="">
	<cfset variables.dobleAltura="">
	<cfset variables.niveles="">
	<cfset variables.m2interiores=0>
	<cfset variables.m2patio=0>
	<cfset variables.m2terraza=0>
	<cfset variables.cajones="">
	<cfset variables.bodega="">
	<cfset variables.cuartoServicio="">
	<cfset variables.tvRoom="">
	<cfset variables.descripcion="">
	<cfset module.list.orderBy="number">

	<cffunction name="init" access="public" output="false">
		<cfset variables.idSalesUnit=0>
		<cfset variables.salesUnit="">
		<cfset variables.recamaras="">
		<cfset variables.banos="">
		<cfset variables.estudio="">
		<cfset variables.dobleAltura="">
		<cfset variables.niveles="">
		<cfset variables.m2interiores=0>
		<cfset variables.m2patio=0>
		<cfset variables.m2terraza=0>
		<cfset variables.cajones="">
		<cfset variables.bodega="">
		<cfset variables.cuartoServicio="">
		<cfset variables.tvRoom="">
		<cfset variables.descripcion="">
	</cffunction>
	
	<cffunction name="getFormObjectId" access="public" output="false" returntype="numeric">
		<cfreturn getIdSalesUnit()>
	</cffunction>
	
	<cffunction name="setFormObjectId" access="public" output="false">
		<cfargument name="objectId" type="numeric" required="yes">
		<cfset setIdSalesUnit(arguments.objectId)>
	</cffunction>

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

	<cffunction name="getIdSalesUnit" access="public" returntype="numeric" output="false">
		<cfreturn variables.idSalesUnit>
	</cffunction>
	
	<cffunction name="getSalesUnit" access="public" returntype="components.corporate.salesUnit" output="false">
		<cfif not IsObject("variables.salesUnit")><cfset variables.salesUnit=CreateObject("component", "components.corporate.salesUnit")></cfif>
		<cfif (Compare(module.form.pageAction, "add") and not variables.salesUnit.isRetrievedFromDB()) or variables.salesUnit.getIdSalesUnit() neq variables.idSalesUnit>
			<cfset variables.salesUnit=CreateObject("component", "components.corporate.salesUnit")>
			<cfset variables.salesUnit.setIdSalesUnit(variables.idSalesUnit)>
			<cfset variables.salesUnit.get()>
		</cfif>
		<cfreturn variables.salesUnit>
	</cffunction>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	<cffunction name="setVariablesFromQuery" access="private" output="false">
		<cfargument name="getQuery" type="query" required="yes">
		<cfif getQuery.recordcount gt 0>
			<cfset variables.recamaras=getQuery.recamaras>
			<cfset variables.banos=getQuery.banos>
			<cfset variables.estudio=getQuery.estudio>
			<cfset variables.dobleAltura=getQuery.dobleAltura>
			<cfset variables.niveles=getQuery.niveles>
			<cfset variables.m2interiores=getQuery.m2interiores>
			<cfset variables.m2patio=getQuery.m2patio>
			<cfset variables.m2terraza=getQuery.m2terraza>
			<cfset variables.cajones=getQuery.cajones>
			<cfset variables.bodega=getQuery.bodega>
			<cfset variables.cuartoServicio=getQuery.cuartoServicio>
			<cfset variables.tvRoom=getQuery.tvRoom>
			<cfset variables.descripcion=ToString(getQuery.descripcion)>
		</cfif>
	</cffunction>

	<cffunction name="get" access="public" output="false">
		<cfquery name="getQuery" datasource="#application.datasource#">
			SELECT 
				#getQueryString()#
			WHERE
				hys_salesUnit1.idSalesUnit=<cfqueryparam value="#variables.idSalesUnit#" 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()#
			WHERE 
				1=1
				<cfif variables.idProject gt 0>
				AND hys_salesUnit1.idProject=<cfqueryparam value="#variables.idProject#" cfsqltype="cf_sql_integer">
				</cfif>
			ORDER BY <cfif Len(arguments.orderBy)>#arguments.orderBy#<cfelse>#module.list.orderBy#</cfif>
		</cfquery>
		<cfreturn getListQuery>
	</cffunction>
	
	<cffunction name="getSelect" access="public" returntype="string" output="false">
		<cfset var result="
			hys_salesUnit1.recamaras,
			hys_salesUnit1.banos,
			hys_salesUnit1.estudio,
			hys_salesUnit1.dobleAltura,
			hys_salesUnit1.niveles,
			hys_salesUnit1.m2interiores,
			hys_salesUnit1.m2patio,
			hys_salesUnit1.m2terraza,
			hys_salesUnit1.cajones,
			hys_salesUnit1.bodega,
			hys_salesUnit1.cuartoServicio,
			hys_salesUnit1.tvRoom,
			hys_salesUnit1.descripcion
		">
		<cfreturn result>
	</cffunction>

	<cffunction name="getFrom" access="public" returntype="string" output="false">
		<cfset var result="
			FROM hys_salesUnit1
		">
		<cfreturn result>
	</cffunction>
	
	<cffunction name="getQueryString" access="public" output="false" returntype="string">
		<cfset var result=getSelect() & getFrom()>
		<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 variables.idSalesUnit lt 1>
			<cfset result.message="Numero de la unidad es un campo obligatorio">
			<cfreturn result>
		</cfif>
		<!--- variables ok --->
		<cftry>
			<cfquery name="createQuery" datasource="#application.datasource#">
				INSERT INTO hys_salesUnit1
					(
						idSalesUnit,
						recamaras,
						banos,
						estudio,
						dobleAltura,
						niveles,
						m2interiores,
						m2patio,
						m2terraza,
						cajones,
						bodega,
						cuartoServicio,
						tvRoom,
						descripcion
					) 
				VALUES 
					(
					<cfqueryparam value="#variables.idSalesUnit#" cfsqltype="cf_sql_integer">, 
					<cfqueryparam value="#variables.recamaras#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#variables.banos#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#variables.estudio#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#variables.dobleAltura#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#variables.niveles#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#variables.m2interiores#" cfsqltype="cf_sql_integer">,
					<cfqueryparam value="#variables.m2patio#" cfsqltype="cf_sql_integer">,
					<cfqueryparam value="#variables.m2terraza#" cfsqltype="cf_sql_integer">,
					<cfqueryparam value="#variables.cajones#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#variables.bodega#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#variables.cuartoServicio#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#variables.tvRoom#" cfsqltype="cf_sql_varchar" maxlength="255">,
					<cfqueryparam value="#variables.descripcion#" cfsqltype="cf_sql_clob">
					)
				ON DUPLICATE KEY UPDATE
					recamaras=<cfqueryparam value="#variables.recamaras#" cfsqltype="cf_sql_varchar" maxlength="255">,
					banos=<cfqueryparam value="#variables.banos#" cfsqltype="cf_sql_varchar" maxlength="255">,
					estudio=<cfqueryparam value="#variables.estudio#" cfsqltype="cf_sql_varchar" maxlength="255">,
					dobleAltura=<cfqueryparam value="#variables.dobleAltura#" cfsqltype="cf_sql_varchar" maxlength="255">,
					niveles=<cfqueryparam value="#variables.niveles#" cfsqltype="cf_sql_varchar" maxlength="255">,
					m2interiores=<cfqueryparam value="#variables.m2interiores#" cfsqltype="cf_sql_integer">,
					m2patio=<cfqueryparam value="#variables.m2patio#" cfsqltype="cf_sql_integer">,
					m2terraza=<cfqueryparam value="#variables.m2terraza#" cfsqltype="cf_sql_integer">,
					cajones=<cfqueryparam value="#variables.cajones#" cfsqltype="cf_sql_varchar" maxlength="255">,
					bodega=<cfqueryparam value="#variables.bodega#" cfsqltype="cf_sql_varchar" maxlength="255">,
					cuartoServicio=<cfqueryparam value="#variables.cuartoServicio#" cfsqltype="cf_sql_varchar" maxlength="255">,
					tvRoom=<cfqueryparam value="#variables.tvRoom#" cfsqltype="cf_sql_varchar" maxlength="255">,
					descripcion=<cfqueryparam value="#variables.descripcion#" cfsqltype="cf_sql_clob">
			</cfquery>
			<cfset result.id=variables.idSalesUnit>
			<!--- catch any error --->
			<cfcatch type="any">
				<cfset result.id=-1>
				<cfset result.message="Error [salesUnit.create()]: " & cfcatch.Message & "<br>Details: " & cfcatch.Detail>
			</cfcatch>
		</cftry>
		<cfreturn result>
	</cffunction>

	<cffunction name="update" access="public" returntype="struct" output="false">
		<cfreturn create()>
	</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 hys_salesUnit1
				WHERE 
					idSalesUnit=<cfqueryparam value="#variables.idSalesUnit#" 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 [salesUnit.delete()]: " & cfcatch.Message & "<br>Details: " & cfcatch.Detail>
			</cfcatch>
		</cftry>
		<cfreturn result>
	</cffunction>
</cfcomponent>