def get_where_clause_value(self, value, param, error=False):

		if value:
			if isinstance(value, basestring):
				a = ["'%s'" % frappe.utils.strip(t) for t in value.split(",")]
			else:
				a = ["'%s'" % unicode(t) for t in value]
		else:
			"""
			get default value for id
			"""
			value = utils.get_default_param_value(param, error=error)
			if isinstance(value, basestring):
				a = ["'%s'" % frappe.utils.strip(t) for t in value.split(",")]
			elif value is not None:
				a = ["'%s'" % unicode(t) for t in list(value)]
			else:
				"""
				If there is no default value for id then return. Probably there is one in the sended parameters
				The Administrator need to set the parameter type to Ask` ad remove his default values
				"""
				return

		value = "where name %s (%s)" % (param.param_expression, ",".join(a))
		return value
Ejemplo n.º 2
0
	def get_where_clause_value(self, value, param, error=False):

		if value:
			if isinstance(value, basestring):
				a = ["'%s'" % frappe.utils.strip(t) for t in value.split(",")]
			else:
				a = ["'%s'" % unicode(t) for t in value]
		else:
			"""
			get default value for id
			"""
			value = utils.get_default_param_value(param, error=error)
			if isinstance(value, basestring):
				a = ["'%s'" % frappe.utils.strip(t) for t in value.split(",")]
			elif value is not None:
				a = ["'%s'" % unicode(t) for t in list(value)]
			else:
				"""
				If there is no default value for id then return. Probably there is one in the sended parameters
				The Administrator need to set the parameter type to Ask` ad remove his default values
				"""
				return

		value = "where name %s (%s)" % (param.param_expression, ",".join(a))
		return value
	def do_params(self, data, params, pformat):
		pram = []
		copies = {}
		pram_server = []
		#used_ids = False

		for param in params:
			is_copy = param.is_copy.lower()
			p = param.jasper_param_name
			value = ""
			if is_copy == "is for where clause":
				value = self.get_where_clause_value(data.get('ids', []), param)
				if not value:
					"""
					Check if the ids was sended by asked parameters
					"""
					value = self.get_where_clause_value(data.get("params", {}).get(p), param, error=True)
				value = [value]
			elif is_copy == "is for copies" and pformat=="pdf":
				#set the number of copies
				#indicate the index of param is for copies
				copies["pram_copy_index"] = len(pram)
				values = utils.get_default_param_value(param, error=False) or ""
				value = self.get_param_values(values)

			elif is_copy == "is for page number" and pformat=="pdf":
				copies["pram_copy_page_index"] = len(pram)

			elif is_copy == "is for server hook":#_("is for server hook"):
				#don't do server hook here. Get first all defaults values
				#if not value:
					#if not data then get default first
				value = utils.get_default_param_value(param, error=False)
				pram_server.append({"name":p, 'value': value, "attrs": param})
				continue
			else:
				#value sent take precedence from value in doctype jasper_param_value
				values = data.get("params", {}).get(p) or param.jasper_param_value or ""
				value = self.get_param_values(values)

			pram.append({"name":p, 'value':value})

		return (pram, pram_server, copies)
Ejemplo n.º 4
0
	def do_params(self, data, params, pformat):
		pram = []
		copies = {}
		pram_server = []
		#used_ids = False

		for param in params:
			is_copy = param.is_copy.lower()
			p = param.jasper_param_name
			value = ""
			if is_copy == "is for where clause":
				value = self.get_where_clause_value(data.get('ids', []), param)
				if not value:
					"""
					Check if the ids was sended by asked parameters
					"""
					value = self.get_where_clause_value(data.get("params", {}).get(p), param, error=True)
				value = [value]
			elif is_copy == "is for copies" and pformat=="pdf":
				#set the number of copies
				#indicate the index of param is for copies
				copies["pram_copy_index"] = len(pram)
				values = utils.get_default_param_value(param, error=False) or ""
				value = self.get_param_values(values)

			elif is_copy == "is for page number" and pformat=="pdf":
				copies["pram_copy_page_index"] = len(pram)

			elif is_copy == "is for server hook":#_("is for server hook"):
				#don't do server hook here. Get first all defaults values
				#if not value:
					#if not data then get default first
				value = utils.get_default_param_value(param, error=False)
				pram_server.append({"name":p, 'value': value, "attrs": param})
				continue
			else:
				#value sent take precedence from value in doctype jasper_param_value
				values = data.get("params", {}).get(p) or param.jasper_param_value or ""
				value = self.get_param_values(values)

			pram.append({"name":p, 'value':value})

		return (pram, pram_server, copies)
    def do_params(self, data, params, pformat, doc):
        pram = []
        copies = {}
        pram_server = []
        #used_ids = False

        for param in params:
            is_copy = param.is_copy.lower()
            p = param.jasper_param_name
            value = ""
            if is_copy == "is for where clause":
                value = self.get_where_clause_value(data.get('ids', []), param)
                if not value:
                    """
					Check if the ids was sended by asked parameters
					"""
                    value = self.get_where_clause_value(data.get("params",
                                                                 {}).get(p),
                                                        param,
                                                        error=True)
                value = [value]
            elif is_copy == "is for copies" and pformat == "pdf":
                #set the number of copies
                #indicate the index of param is for copies
                copies["pram_copy_index"] = len(pram)
                values = utils.get_default_param_value(param,
                                                       error=False) or ""
                value = self.get_param_values(values)

            elif is_copy == "is for page number" and pformat == "pdf":
                copies["pram_copy_page_index"] = len(pram)

            elif is_copy == "is for server hook":  #_("is for server hook"):
                #don't do server hook here. Get first all defaults values
                #if not value:
                #if not data then get default first
                value = utils.get_default_param_value(param, error=False)
                pram_server.append({"name": p, 'value': value, "attrs": param})
                continue
            elif is_copy == "is doctype id":
                values = data.get("params",
                                  {}).get(p) or param.jasper_param_value or ""
                if not values or (isinstance(values, basestring)
                                  and len(values.split(":")) > 1):
                    field_name = values or param.jasper_field_doctype.strip()
                    f = field_name.split(":")
                    if len(f) > 2:
                        doctype = f[0]
                        docname = f[1]
                        field = f[2]
                    elif len(f) > 1:
                        doctype = f[0]
                        field = f[1]
                        docname = data.get('ids', [])[0]
                    else:
                        doctype = doc.jasper_doctype
                        docname = data.get('ids', [])[0]
                        field = f[0]
                    frappe_doc = frappe.get_doc(doctype, docname)
                    values = getattr(frappe_doc, field)

                value = self.get_param_values(values)
                print "value do_params %s" % value

            else:
                #value sent take precedence from value in doctype jasper_param_value
                values = data.get("params",
                                  {}).get(p) or param.jasper_param_value or ""
                value = self.get_param_values(values)

            if param.jasper_param_type != "String":
                for idx, val in enumerate(value):
                    value[idx] = str(val)
            """
			if param.jasper_param_type == "Int":
				from jasper_erpnext_report.jasper_reports import Integer
				for idx, val in enumerate(value):
					value[idx] = Integer(val)
			"""

            pram.append({"name": p, 'value': value})

        return (pram, pram_server, copies)
	def do_params(self, data, params, pformat, doc):
		pram = []
		copies = {}
		pram_server = []
		#used_ids = False

		for param in params:
			is_copy = param.is_copy.lower()
			p = param.jasper_param_name
			value = ""
			if is_copy == "is for where clause":
				value = self.get_where_clause_value(data.get('ids', []), param)
				if not value:
					"""
					Check if the ids was sended by asked parameters
					"""
					value = self.get_where_clause_value(data.get("params", {}).get(p), param, error=True)
				value = [value]
			elif is_copy == "is for copies" and pformat=="pdf":
				#set the number of copies
				#indicate the index of param is for copies
				copies["pram_copy_index"] = len(pram)
				values = utils.get_default_param_value(param, error=False) or ""
				value = self.get_param_values(values)

			elif is_copy == "is for page number" and pformat=="pdf":
				copies["pram_copy_page_index"] = len(pram)

			elif is_copy == "is for server hook":#_("is for server hook"):
				#don't do server hook here. Get first all defaults values
				#if not value:
					#if not data then get default first
				value = utils.get_default_param_value(param, error=False)
				pram_server.append({"name":p, 'value': value, "attrs": param})
				continue
			elif is_copy == "is doctype id":
				values = data.get("params", {}).get(p) or param.jasper_param_value or ""
				if not values or (isinstance(values, basestring) and len(values.split(":")) > 1):
					field_name = values or param.jasper_field_doctype.strip()
					f = field_name.split(":")
					if len(f) > 2:
						doctype = f[0]
						docname = f[1]
						field = f[2]
					elif len(f) > 1:
						doctype = f[0]
						field = f[1]
						docname = data.get('ids', [])[0]
					else:
						doctype = doc.jasper_doctype
						docname = data.get('ids', [])[0]
						field = f[0]
					frappe_doc = frappe.get_doc(doctype, docname)
					values = getattr(frappe_doc, field)

				value = self.get_param_values(values)
				print "value do_params %s" % value

			else:
				#value sent take precedence from value in doctype jasper_param_value
				values = data.get("params", {}).get(p) or param.jasper_param_value or ""
				value = self.get_param_values(values)


			if param.jasper_param_type != "String":
				for idx, val in enumerate(value):
					value[idx] = str(val)
			"""
			if param.jasper_param_type == "Int":
				from jasper_erpnext_report.jasper_reports import Integer
				for idx, val in enumerate(value):
					value[idx] = Integer(val)
			"""

			pram.append({"name":p, 'value':value})

		return (pram, pram_server, copies)