예제 #1
0
	def calculate_item_values(self):
		def _set_base(item, print_field, base_field):
			"""set values in base currency"""
			item.fields[base_field] = flt((flt(item.fields[print_field],
				self.precision.item[print_field]) * self.doc.conversion_rate),
				self.precision.item[base_field])

		for item in self.item_doclist:
			round_floats_in_doc(item, self.precision.item)

			if item.discount == 100:
				if not item.import_ref_rate:
					item.import_ref_rate = item.import_rate
				item.import_rate = 0
			else:
				if item.import_ref_rate:
					item.import_rate = flt(item.import_ref_rate *
						(1.0 - (item.discount_rate / 100.0)),
						self.precision.item.import_rate)
				else:
					# assume that print rate and discount are specified
					item.import_ref_rate = flt(item.import_rate / 
						(1.0 - (item.discount_rate / 100.0)),
						self.precision.item.import_ref_rate)

			item.import_amount = flt(item.import_rate * item.qty,
				self.precision.item.import_amount)

			_set_base(item, "import_ref_rate", "purchase_ref_rate")
			_set_base(item, "import_rate", "rate")
			_set_base(item, "import_amount", "amount")
예제 #2
0
	def initialize_taxes(self):
		for tax in self.tax_doclist:
			# initialize totals to 0
			tax.tax_amount = tax.total = 0.0
			
			# temporary fields
			tax.tax_amount_for_current_item = tax.grand_total_for_current_item = 0.0
			
			tax.item_wise_tax_detail = {}
			
			self.validate_on_previous_row(tax)
			
			round_floats_in_doc(tax, self.precision.tax)
예제 #3
0
    def initialize_taxes(self):
        for tax in self.tax_doclist:
            # initialize totals to 0
            tax.tax_amount = tax.total = 0.0

            # temporary fields
            tax.tax_amount_for_current_item = tax.grand_total_for_current_item = 0.0

            tax.item_wise_tax_detail = {}

            self.validate_on_previous_row(tax)

            round_floats_in_doc(tax, self.precision.tax)
예제 #4
0
    def initialize_taxes(self):
        for tax in self.tax_doclist:
            # initialize totals to 0
            tax.tax_amount = tax.total = tax.total_print = 0
            tax.grand_total_for_current_item = tax.tax_amount_for_current_item = 0

            # for actual type, user can mention actual tax amount in tax.tax_amount_print
            if tax.charge_type != "Actual" or tax.rate:
                tax.tax_amount_print = 0

            self.validate_on_previous_row(tax)
            self.validate_included_tax(tax)

            # round relevant values
            round_floats_in_doc(tax, self.precision.tax)
예제 #5
0
	def initialize_taxes(self):
		for tax in self.tax_doclist:
			# initialize totals to 0
			tax.tax_amount = tax.total = tax.total_print = 0
			tax.grand_total_for_current_item = tax.tax_amount_for_current_item = 0
			
			# for actual type, user can mention actual tax amount in tax.tax_amount_print
			if tax.charge_type != "Actual" or tax.rate:
				tax.tax_amount_print = 0
			
			self.validate_on_previous_row(tax)
			self.validate_included_tax(tax)
			
			# round relevant values
			round_floats_in_doc(tax, self.precision.tax)
예제 #6
0
    def calculate_item_values(self):
        def _set_base(item, print_field, base_field):
            """set values in base currency"""
            item.fields[base_field] = flt((flt(
                item.fields[print_field], self.precision.item[print_field]) *
                                           self.doc.conversion_rate),
                                          self.precision.item[base_field])

        for item in self.item_doclist:
            round_floats_in_doc(item, self.precision.item)

            # hack! - cleaned up in _cleanup()
            if self.doc.doctype != "Purchase Invoice":
                item.rate = item.purchase_rate
                self.precision.item.rate = self.precision.item.purchase_rate

                item.discount = item.discount_rate
                self.precision.item.discount = self.precision.item.discount_rate

            if item.discount == 100:
                if not item.import_ref_rate:
                    item.import_ref_rate = item.import_rate
                item.import_rate = 0
            else:
                if item.import_ref_rate:
                    item.import_rate = flt(
                        item.import_ref_rate * (1.0 -
                                                (item.discount_rate / 100.0)),
                        self.precision.item.import_rate)
                else:
                    # assume that print rate and discount are specified
                    item.import_ref_rate = flt(
                        item.import_rate / (1.0 -
                                            (item.discount_rate / 100.0)),
                        self.precision.item.import_ref_rate)

            item.import_amount = flt(item.import_rate * item.qty,
                                     self.precision.item.import_amount)

            _set_base(item, "import_ref_rate", "purchase_ref_rate")
            _set_base(item, "import_rate", "rate")
            _set_base(item, "import_amount", "amount")
예제 #7
0
    def calculate_item_values(self):
        def _set_base(item, print_field, base_field):
            """set values in base currency"""
            item.fields[base_field] = flt((flt(item.fields[print_field],
             self.precision.item[print_field]) * \
             self.doc.fields.get(self.fmap.exchange_rate)),
             self.precision.item[base_field])

        for item in self.item_doclist:
            round_floats_in_doc(item, self.precision.item)

            if item.fields.get(self.fmap.discount) == 100:
                if not item.fields.get(self.fmap.print_ref_rate):
                    item.fields[self.fmap.print_ref_rate] = \
                     item.fields.get(self.fmap.print_rate)
                item.fields[self.fmap.print_rate] = 0
            else:
                if item.fields.get(self.fmap.print_ref_rate):
                    item.fields[self.fmap.print_rate] = \
                     flt(item.fields.get(self.fmap.print_ref_rate) *
                     (1.0 - (item.fields.get(self.fmap.discount) / 100.0)),
                     self.precision.item[self.fmap.print_rate])
                else:
                    # assume that print rate and discount are specified
                    item.fields[self.fmap.print_ref_rate] = \
                     flt(item.fields.get(self.fmap.print_rate) /
                     (1.0 - (item.fields.get(self.fmap.discount) / 100.0)),
                     self.precision.item[self.fmap.print_ref_rate])

            item.fields[self.fmap.print_amount] = \
             flt(item.fields.get(self.fmap.print_rate) * \
             item.fields.get("qty"),
             self.precision.item[self.fmap.print_amount])

            _set_base(item, self.fmap.print_ref_rate, self.fmap.ref_rate)
            _set_base(item, self.fmap.print_rate, self.fmap.rate)
            _set_base(item, self.fmap.print_amount, "amount")
예제 #8
0
	def calculate_item_values(self):
		def _set_base(item, print_field, base_field):
			"""set values in base currency"""
			item.fields[base_field] = flt((flt(item.fields[print_field],
				self.precision.item[print_field]) * \
				self.doc.fields.get(self.fmap.exchange_rate)),
				self.precision.item[base_field])
		
		for item in self.item_doclist:
			round_floats_in_doc(item, self.precision.item)
			
			if item.fields.get(self.fmap.discount) == 100:
				if not item.fields.get(self.fmap.print_ref_rate):
					item.fields[self.fmap.print_ref_rate] = \
						item.fields.get(self.fmap.print_rate)
				item.fields[self.fmap.print_rate] = 0
			else:
				if item.fields.get(self.fmap.print_ref_rate):
					item.fields[self.fmap.print_rate] = \
						flt(item.fields.get(self.fmap.print_ref_rate) *
						(1.0 - (item.fields.get(self.fmap.discount) / 100.0)),
						self.precision.item[self.fmap.print_rate])
				else:
					# assume that print rate and discount are specified
					item.fields[self.fmap.print_ref_rate] = \
						flt(item.fields.get(self.fmap.print_rate) / 
						(1.0 - (item.fields.get(self.fmap.discount) / 100.0)),
						self.precision.item[self.fmap.print_ref_rate])
						
			item.fields[self.fmap.print_amount] = \
				flt(item.fields.get(self.fmap.print_rate) * \
				item.fields.get("qty"),
				self.precision.item[self.fmap.print_amount])
				
			_set_base(item, self.fmap.print_ref_rate, self.fmap.ref_rate)
			_set_base(item, self.fmap.print_rate, self.fmap.rate)
			_set_base(item, self.fmap.print_amount, "amount")