Esempio n. 1
0
def validate(doc, method):

    print "+VALIDAR SALES INVOICE+"
    print "+VALIDAR SALES INVOICE+"
    print "+VALIDAR SALES INVOICE+"
    print "+VALIDAR SALES INVOICE+"
    print "+VALIDAR SALES INVOICE+"

    taxavenda = cambios("BNA")
    lista_retencoes = get_lista_retencoes()
    lista_retencao = get_taxa_retencao()
    lista_impostos = get_taxa_ipc()

    lista_iva = get_taxa_iva()

    temretencao = False
    temimpostoconsumo = False
    retencaofonte = 0
    retencaopercentagem = 0
    totalpararetencao = 0
    totalgeralimpostoconsumo = 0
    totalgeralretencaofonte = 0
    totalbaseretencaofonte = 0
    retencaofonteDESC = ""
    totalservicos_retencaofonte = 0
    totaldespesas_noretencaofonte = 0
    totaldescontos_linha = 0

    impostoselotransit = []
    totalimpostoselotrans = 0
    impostoselotranspercentagem = 0
    metadedovalor = False

    percentagem = 0

    percentagemiva = 0
    totalgeraliva = 0

    ii = 0

    numISelo = 0  #contador Imposto de Selo

    for x in lista_retencoes:
        if x.descricao.upper() == 'Retencao na Fonte'.upper():
            print('pertagem ', x.percentagem)
            retencaopercentagem = x.percentagem
        elif (x.descricao.upper()
              == 'IPC'.upper()) or (x.descricao.upper()
                                    == 'Imposto de Consumo'.upper()):
            print('IPC % ', x.percentagem)
            percentagem = x.percentagem
        elif ('Imposto de Selo'.upper() in x.descricao.upper()):

            print('Imposto de Selo % ', x.percentagem)
            print(x.descricao)
            print('metade '), x.metade_do_valor
            impostoselotransit.append(
                [x.descricao, x.percentagem, x.metade_do_valor])

            #impostoselotranspercentagem = x.percentagem
            #if (x.metade_do_valor):
            #	metadedovalor = True

        elif (x.descricao.upper() == 'IVA'.upper()) or (
                "Imposto Valor Acrescentado".upper() == x.descricao.upper()
                or 'Acrescentado'.upper() in x.descricao.upper()):
            print('IVA % ', x.percentagem)
            percentagemiva = x.percentagem

    for i in doc.get("items"):
        if i.item_code != None:
            prod = frappe.db.sql(
                """SELECT item_code,imposto_de_consumo,retencao_na_fonte,imposto_de_selo,que_imposto_de_selo FROM `tabItem` WHERE item_code = %s """,
                i.item_code,
                as_dict=True)
            if prod[0].imposto_de_consumo == 1:
                print("IMPOSTO CONSUMO")
                if percentagem == 0:
                    i.imposto_de_consumo = (i.amount * 5) / 100
                else:
                    i.imposto_de_consumo = (i.amount * percentagem) / 100

            if prod[0].retencao_na_fonte == 1:
                print("RETENCAO FONTE")
                i.retencao_na_fonte = (i.amount * retencaopercentagem) / 100
                totalbaseretencaofonte += i.amount
                totalservicos_retencaofonte += totalbaseretencaofonte
            else:
                totaldespesas_noretencaofonte += i.amount

            if prod[0].imposto_de_selo == 1:
                print("IMPOSTO DE SELO TRANS")
                print("IMPOSTO DE SELO TRANS")
                for x1 in impostoselotransit:
                    print 'loop no imposto selo'
                    print x1
                    print x1[0]
                    print x1[1]
                    print x1[2]
                    if x1[0] == prod[0].que_imposto_de_selo:
                        print 'Imposto CORRETO!!!!!'
                        print 'Imposto CORRETO!!!!!'
                        print 'Imposto CORRETO!!!!!'

                        if x1[2] == 1:  #metade do valor TRUE
                            print 'METADE DO VALOR!!!'
                            metadedovalor = True
                        else:
                            metadedovalor = False

                        impostoselotranspercentagem = x1[1]

                        print(flt(i.amount) * x1[1])
                        print('Selo % ',
                              ((i.amount * impostoselotranspercentagem) / 100))
                        break
                print 'continua....'
                print metadedovalor
                #i.retencao_na_fonte = (i.amount * retencaopercentagem) / 100
                if (metadedovalor):
                    totalimpostoselotrans += (
                        (i.amount / 2) * impostoselotranspercentagem) / 100
                    i.imposto_de_selo_trans = (
                        (i.amount / 2) * impostoselotranspercentagem) / 100
                else:
                    totalimpostoselotrans += (
                        i.amount * impostoselotranspercentagem) / 100
                    i.imposto_de_selo_trans = (
                        i.amount * impostoselotranspercentagem) / 100
                print totalimpostoselotrans

            if prod[0].iva_isencao == 0:  #TEM IVA
                print "IVA IVA"
                print "IVA IVA"

            totalgeralimpostoconsumo += i.imposto_de_consumo
            totalgeralretencaofonte += i.retencao_na_fonte

            #BATCH Qty
            if i.warehouse and i.item_code and i.batch_no:
                print 'BATCH NO verifica a QTD'
                print i.batch_no
                print i.warehouse
                print i.item_code
                print('qtd atual ', i.actual_qty)
                print get_batch_qty(i.batch_no, i.warehouse,
                                    i.item_code)['actual_batch_qty']
                #print get_batch_qty(i.warehouse,i.item_code)['actual_batch_qty']
                #for xx in get_batch_qty(i.batch_no,i.warehouse,i.item_code)['actual_batch_qty']:
                #	print "LISTA BATCHES....."
                #	print xx

                i.actual_batch_qty = get_batch_qty(
                    i.batch_no, i.warehouse, i.item_code)['actual_batch_qty']
                if i.actual_qty == 0:
                    print 'ACTUAL QTY ZEROOOOOOOO'
                    #i.actual_qty = get_batch_qty(i.batch_no,i.warehouse,i.item_code)['actual_batch_qty']

            #Total Desconto Linha
            if i.margin_type == "Percentage":
                totaldescontos_linha += i.amount

    #Save retencao na INVoice
    doc.total_retencao_na_fonte = totalgeralretencaofonte
    doc.base_retencao_fonte = totalbaseretencaofonte

    #Save Descontos linha
    doc.total_desconto_linha = totaldescontos_linha

    #Save Imposto de Selo Trans
    doc.total_imposto_selo_trans = totalimpostoselotrans

    #Calcula_despesas Ticked

    iii = 0
    print("Despesas")
    for ai in doc.get("taxes"):
        if ai.parent == doc.name and ai.charge_type != "":
            if ai.calcula_despesas:
                totalgeralimpostoconsumo = 0
                if totaldespesas_noretencaofonte == 0:
                    #recalcula
                    print("RECALCULA")
                    print("RECALCULA")
                    print("RECALCULA")
                    if (ai.rate == 0) and (percentagem == 0):
                        percentagem = 5
                    else:
                        percentagem = ai.rate

                    for aii in doc.get("items"):
                        if aii.parent == doc.name:
                            prod = frappe.db.sql(
                                """SELECT item_code,imposto_de_consumo,retencao_na_fonte FROM `tabItem` WHERE item_code = %s """,
                                aii.item_code,
                                as_dict=True)

                            #if (iii==0){iii=0}

                            if prod[0].imposto_de_consumo == 1:

                                if aii.imposto_de_consumo == 0:
                                    print ""

                                if aii.retencao_na_fonte == 1:

                                    totalgeralretencaofonte += (
                                        aii.amount * retencaopercentagem) / 100
                                    totalbaseretencaofonte += aii.amount
                                    totalservicos_retencaofonte += totalbaseretencaofonte

                                totalgeralimpostoconsumo += aii.imposto_de_consumo

                                despesas = (
                                    percentagem *
                                    totaldespesas_noretencaofonte) / 100
                                print percentagem
                                print totaldespesas_noretencaofonte
                                print despesas
                                print totalgeralimpostoconsumo
                                print ai.account_head

                                ai.charge_type = "Actual"
                                #ai.tax_amount=despesas
                                ai.tax_amount = despesas  #totalgeralimpostoconsumo
                            else:
                                ai.tax_amount = 0

                else:
                    print("CALCULA DESPESAS")
                    print("CALCULA DESPESAS")
                    print("CALCULA DESPESAS")
                    if (ai.rate == 0) and (percentagem == 0):
                        percentagem = 5
                    else:
                        percentagem = ai.rate

                    despesas = (ai.rate * totaldespesas_noretencaofonte) / 100

                    print percentagem
                    print totaldespesas_noretencaofonte
                    print despesas

                    print totalgeralimpostoconsumo
                    if despesas != totalgeralimpostoconsumo:

                        ai.charge_type = "Actual"
                        ai.tax_amount = totalgeralimpostoconsumo

                    else:
                        ai.charge_type = "Actual"
                        ai.tax_amount = despesas
            elif "34220000" in ai.account_head:  #IVA
                print "TEM IVA......"
                print "TEM IVA......"
                print "TEM IVA......"
                print "TEM IVA......"

                for aii in doc.get("items"):
                    if aii.parent == doc.name:
                        prod = frappe.db.sql(
                            """SELECT item_code,imposto_de_consumo,retencao_na_fonte,iva_isencao FROM `tabItem` WHERE item_code = %s """,
                            aii.item_code,
                            as_dict=True)

                        #if (iii==0){iii=0}
                        '''
						if prod[0].iva_isencao == 0:	#Has IVA

							if aii.imposto_de_consumo == 0:
								print ""
							'''
                        #	if aii.retencao_na_fonte == 1:

                        #		totalgeralretencaofonte +=  (aii.amount * retencaopercentagem) / 100
                        #		totalbaseretencaofonte += aii.amount
                        #		totalservicos_retencaofonte += totalbaseretencaofonte
                        '''
						totalgeralimpostoconsumo += aii.imposto_de_consumo					


						despesas = (percentagem * totaldespesas_noretencaofonte)/100
						print percentagem
						print totaldespesas_noretencaofonte
						print despesas
						print totalgeralimpostoconsumo
						print ai.account_head

						ai.charge_type="Actual"
						#ai.tax_amount=despesas
						ai.tax_amount = despesas #totalgeralimpostoconsumo 
						'''
                        if prod[0].iva_isencao == 1:  #NO NO IVA
                            print "sem iva ", prod[0].item_code
                            ai.charge_type = "Actual"
                            ai.tax_amount = totalgeraliva
                            ai.total = totalgeraliva + doc.net_total

                        elif prod[0].iva_isencao == 0:  #IVA
                            print "IVA"
                            print "IVA ", aii.item_code
                            print aii.amount
                            print percentagemiva
                            totalgeraliva += (aii.amount *
                                              percentagemiva) / 100
                            if ai.charge_type == "Actual":
                                ai.tax_amount = totalgeraliva
                                ai.total = totalgeraliva + doc.net_total

                        else:
                            ai.tax_amount = 0

            else:
                print "SEM DESPESAS MAS CALCULA IPC"
                print "SEM DESPESAS MAS CALCULA IPC"
                ai.charge_type = "Actual"
                ai.tax_amount = totalgeralimpostoconsumo
                ai.total = totalgeralimpostoconsumo + doc.net_total

    print "VALOR POR EXTENSO"

    print totalgeralimpostoconsumo

    #Save Total Taxes and Charges if IPC exists
    if totalgeralimpostoconsumo:
        if doc.currency == "KZ":
            doc.base_total_taxes_and_charges = totalgeralimpostoconsumo
            doc.total_taxes_and_charges = totalgeralimpostoconsumo
        if not doc.additional_discount_percentage:
            doc.grand_total = totalgeralimpostoconsumo + doc.net_total
            doc.rounded_total = doc.grand_total
            doc.base_grand_total = doc.grand_total
            doc.base_rounded_total = doc.grand_total
            doc.outstanding_amount = doc.grand_total
    elif totalgeraliva:
        #IVA
        print "iva nos TOTAIS"
        if doc.currency == "KZ":
            doc.base_total_taxes_and_charges = totalgeraliva
            doc.total_taxes_and_charges = totalgeraliva
            print 'totalgeraliva ', totalgeraliva
        if not doc.additional_discount_percentage:
            doc.grand_total = totalgeraliva + doc.net_total
            print 'totalgeraliva + net total ', totalgeraliva + doc.net_total
            doc.rounded_total = doc.grand_total
            print 'Grand total ', doc.grand_total
            doc.base_grand_total = doc.grand_total
            doc.base_rounded_total = doc.grand_total
            doc.outstanding_amount = doc.grand_total

        print "Rouding ....."
        print "Rouding ....."
        print doc.base_rounding_adjustment
        #print 'tem centimos ',str(doc.base_rounding_adjustment).find('.')
        #if str(doc.base_rounding_adjustment).find('.'):
        #	doc.base_rounding_adjustment = round(doc.base_rounding_adjustment)

    company_currency = erpnext.get_company_currency(doc.company)
    print company_currency
    if (company_currency == 'KZ'):
        doc.in_words = num2words(doc.rounded_total,
                                 lang='pt_BR').title() + ' Kwanzas.'
    else:
        doc.in_words = money_in_words(doc.rounded_total, company_currency)

    ultimodoc = frappe.db.sql(
        """ select max(name),creation,docstatus,hash_erp,hashcontrol_erp from `tabSales Invoice` where (docstatus = 1 or docstatus = 2)  and hash_erp <> '' """,
        as_dict=True)
    print 'VALIDARrrrrrrrrrrrrrrrrrr'
    print ultimodoc
    global ultimoreghash
    ultimoreghash = ultimodoc
Esempio n. 2
0
def validate(doc,method):

	taxavenda= cambios("BNA")
	lista_retencoes = get_lista_retencoes()
	lista_retencao = get_taxa_retencao()
	lista_impostos = get_taxa_ipc()

	temretencao = False 
	temimpostoconsumo = False 
	retencaofonte =0
	retencaopercentagem =0
	totalpararetencao = 0
	totalgeralimpostoconsumo = 0
	totalgeralretencaofonte = 0
	totalbaseretencaofonte = 0
	retencaofonteDESC = ""
	totalservicos_retencaofonte =0
	totaldespesas_noretencaofonte =0

	
	
	ii=0

	for x in lista_retencoes:
		if x.descricao =='Retencao na Fonte':
			print ('pertagem ', x.percentagem)
			retencaopercentagem = x.percentagem

	for i in doc.get("items"):			

		prod = frappe.db.sql("""SELECT item_code,imposto_de_consumo,retencao_na_fonte FROM `tabItem` WHERE item_code = %s """, i.item_code , as_dict=True)
		if prod[0].imposto_de_consumo ==1:
			print ("IMPOSTO CONSUMO")
			if i.imposto_de_consumo == 0:
				i.imposto_de_consumo = (i.amount * 10) / 100
				
		if prod[0].retencao_na_fonte ==1:
			print ("RETENCAO FONTE")
			i.retencao_na_fonte = (i.amount * retencaopercentagem) / 100
			totalbaseretencaofonte += i.amount
			totalservicos_retencaofonte += totalbaseretencaofonte
		else:
			totaldespesas_noretencaofonte += i.amount		

		totalgeralimpostoconsumo += i.imposto_de_consumo					
		totalgeralretencaofonte +=  i.retencao_na_fonte

	#Save retencao na INVoice 
	doc.total_retencao_na_fonte = totalgeralretencaofonte
	doc.base_retencao_fonte = totalbaseretencaofonte

	#Calcula_despesas Ticked
	iii=0
	print ("Despesas")
	for ai in doc.get("taxes"):
		if ai.parent == doc.name and ai.charge_type !="":
			if ai.calcula_despesas:
				if totaldespesas_noretencaofonte ==0:
					#recalcula
					print ("RECALCULA")
					percentagem=ai.rate 
					for aii in doc.get("items"):
						if aii.parent == doc.name:
							prod = frappe.db.sql("""SELECT item_code,imposto_de_consumo,retencao_na_fonte FROM `tabItem` WHERE item_code = %s """, aii.item_code , as_dict=True)					

							#if (iii==0){iii=0}
							
							if prod[0].imposto_de_consumo == 1:

								if aii.imposto_de_consumo == 0:
									print ""
								
								if aii.retencao_na_fonte == 1:
										
									totalgeralretencaofonte +=  (aii.amount * retencaopercentagem) / 100
									totalbaseretencaofonte += aii.amount
									totalservicos_retencaofonte += totalbaseretencaofonte

								totalgeralimpostoconsumo += aii.imposto_de_consumo					


								despesas = (percentagem * totaldespesas_noretencaofonte)/100
								ai.charge_type="Actual"
								ai.tax_amount=despesas



				else:
					print ("CALCULA DESPESAS")
					despesas = (ai.rate * totaldespesas_noretencaofonte)/100

					ai.charge_type = "Actual"
					ai.tax_amount = despesas




	#Check if Lead is Converted or Not, if the lead is converted 
	#then don't allow it to be selected without linked customer
	if doc.lead:
		link = frappe.db.sql("""SELECT name FROM `tabCustomer` 
			WHERE lead_name = '%s'"""%(doc.lead), as_list=1)
		if doc.customer is None and link:
			frappe.throw(("Lead {0} is Linked to Customer {1} so kindly make quotation for \
				Customer and not Lead").format(doc.lead, link[0][0]))
		elif doc.customer:
			if doc.customer != link[0][0]:
				frappe.throw(("Customer {0} is not linked to Lead {1} hence cannot be set\
				in the Quotation").format(doc.customer, doc.lead))


	print "VALOR POR EXTENSO"

	company_currency = erpnext.get_company_currency(doc.company)
	print company_currency
	if (company_currency =='KZ'):
		doc.in_words = num2words(doc.rounded_total, lang='pt_BR').title() + ' Kwanzas.'	
	else:
		doc.in_words = money_in_words(doc.rounded_total, company_currency)
Esempio n. 3
0
def validate(doc, method):

    print "+VALIDAR SALES INVOICE+"
    print "+VALIDAR SALES INVOICE+"
    print "+VALIDAR SALES INVOICE+"
    print "+VALIDAR SALES INVOICE+"
    print "+VALIDAR SALES INVOICE+"

    taxavenda = cambios("BNA")
    lista_retencoes = get_lista_retencoes()
    lista_retencao = get_taxa_retencao()
    lista_impostos = get_taxa_ipc()

    lista_iva = get_taxa_iva()

    temretencao = False
    temimpostoconsumo = False
    retencaofonte = 0
    retencaopercentagem = 0
    totalpararetencao = 0
    totalgeralimpostoconsumo = 0
    totalgeralretencaofonte = 0
    totalbaseretencaofonte = 0
    retencaofonteDESC = ""
    totalservicos_retencaofonte = 0
    totaldespesas_noretencaofonte = 0
    totaldescontos_linha = 0

    impostoselotransit = []
    totalimpostoselotrans = 0
    impostoselotranspercentagem = 0
    metadedovalor = False

    percentagem = 0

    ii = 0

    numISelo = 0  #contador Imposto de Selo

    for x in lista_retencoes:
        if x.descricao == 'Retencao na Fonte':
            print('pertagem ', x.percentagem)
            retencaopercentagem = x.percentagem
        elif (x.descricao == 'IPC') or (x.descricao == 'Imposto de Consumo'):
            print('IPC % ', x.percentagem)
            percentagem = x.percentagem
        elif ('Imposto de Selo' in x.descricao):

            print('Imposto de Selo % ', x.percentagem)
            print(x.descricao)
            print('metade '), x.metade_do_valor
            impostoselotransit.append(
                [x.descricao, x.percentagem, x.metade_do_valor])

            #impostoselotranspercentagem = x.percentagem
            #if (x.metade_do_valor):
            #	metadedovalor = True
        elif (x.descricao.upper() == 'IVA'.upper()) or (
                "Imposto Valor Acrescentado".upper() == x.descricao.upper()
                or 'Acrescentado'.upper() in x.descricao.upper()):
            print('IVA % ', x.percentagem)
            percentagem = x.percentagem

    for i in doc.get("items"):
        if i.item_code != None:
            prod = frappe.db.sql(
                """SELECT item_code,imposto_de_consumo,retencao_na_fonte,imposto_de_selo,que_imposto_de_selo FROM `tabItem` WHERE item_code = %s """,
                i.item_code,
                as_dict=True)
            if prod[0].imposto_de_consumo == 1:
                print("IMPOSTO CONSUMO")
                if percentagem == 0:
                    i.imposto_de_consumo = (i.amount * 5) / 100
                else:
                    i.imposto_de_consumo = (i.amount * percentagem) / 100

            if prod[0].retencao_na_fonte == 1:
                print("RETENCAO FONTE")
                i.retencao_na_fonte = (i.amount * retencaopercentagem) / 100
                totalbaseretencaofonte += i.amount
                totalservicos_retencaofonte += totalbaseretencaofonte
            else:
                totaldespesas_noretencaofonte += i.amount

            if prod[0].imposto_de_selo == 1:
                print("IMPOSTO DE SELO TRANS")
                print("IMPOSTO DE SELO TRANS")
                for x1 in impostoselotransit:
                    print 'loop no imposto selo'
                    print x1
                    print x1[0]
                    print x1[1]
                    print x1[2]
                    if x1[0] == prod[0].que_imposto_de_selo:
                        print 'Imposto CORRETO!!!!!'
                        print 'Imposto CORRETO!!!!!'
                        print 'Imposto CORRETO!!!!!'

                        if x1[2] == 1:  #metade do valor TRUE
                            print 'METADE DO VALOR!!!'
                            metadedovalor = True
                        else:
                            metadedovalor = False

                        impostoselotranspercentagem = x1[1]

                        print(flt(i.amount) * x1[1])
                        print('Selo % ',
                              ((i.amount * impostoselotranspercentagem) / 100))
                        break
                print 'continua....'
                print metadedovalor
                #i.retencao_na_fonte = (i.amount * retencaopercentagem) / 100
                if (metadedovalor):
                    totalimpostoselotrans += (
                        (i.amount / 2) * impostoselotranspercentagem) / 100
                    i.imposto_de_selo_trans = (
                        (i.amount / 2) * impostoselotranspercentagem) / 100
                else:
                    totalimpostoselotrans += (
                        i.amount * impostoselotranspercentagem) / 100
                    i.imposto_de_selo_trans = (
                        i.amount * impostoselotranspercentagem) / 100
                print totalimpostoselotrans

            totalgeralimpostoconsumo += i.imposto_de_consumo
            totalgeralretencaofonte += i.retencao_na_fonte

            #Total Desconto Linha
            if i.margin_type == "Percentage":
                totaldescontos_linha += i.amount

    #Save retencao na INVoice
    doc.total_retencao_na_fonte = totalgeralretencaofonte
    doc.base_retencao_fonte = totalbaseretencaofonte

    #Save Descontos linha
    doc.total_desconto_linha = totaldescontos_linha

    #Save Imposto de Selo Trans
    doc.total_imposto_selo_trans = totalimpostoselotrans

    #Calcula_despesas Ticked

    iii = 0
    print("Despesas")
    for ai in doc.get("taxes"):
        if ai.parent == doc.name and ai.charge_type != "":
            if ai.calcula_despesas:
                totalgeralimpostoconsumo = 0
                if totaldespesas_noretencaofonte == 0:
                    #recalcula
                    print("RECALCULA")
                    if (ai.rate == 0) and (percentagem == 0):
                        percentagem = 5
                    else:
                        percentagem = ai.rate

                    for aii in doc.get("items"):
                        if aii.parent == doc.name:
                            prod = frappe.db.sql(
                                """SELECT item_code,imposto_de_consumo,retencao_na_fonte FROM `tabItem` WHERE item_code = %s """,
                                aii.item_code,
                                as_dict=True)

                            #if (iii==0){iii=0}

                            if prod[0].imposto_de_consumo == 1:

                                if aii.imposto_de_consumo == 0:
                                    print ""

                                if aii.retencao_na_fonte == 1:

                                    totalgeralretencaofonte += (
                                        aii.amount * retencaopercentagem) / 100
                                    totalbaseretencaofonte += aii.amount
                                    totalservicos_retencaofonte += totalbaseretencaofonte

                                totalgeralimpostoconsumo += aii.imposto_de_consumo

                                despesas = (
                                    percentagem *
                                    totaldespesas_noretencaofonte) / 100
                                print percentagem
                                print totaldespesas_noretencaofonte
                                print despesas
                                print totalgeralimpostoconsumo
                                print ai.account_head

                                ai.charge_type = "Actual"
                                #ai.tax_amount=despesas
                                ai.tax_amount = despesas  #totalgeralimpostoconsumo
                            else:
                                ai.tax_amount = 0

                else:
                    print("CALCULA DESPESAS")
                    if (ai.rate == 0) and (percentagem == 0):
                        percentagem = 5
                    else:
                        percentagem = ai.rate

                    despesas = (ai.rate * totaldespesas_noretencaofonte) / 100

                    print percentagem
                    print totaldespesas_noretencaofonte
                    print despesas

                    print totalgeralimpostoconsumo
                    if despesas != totalgeralimpostoconsumo:

                        ai.charge_type = "Actual"
                        ai.tax_amount = totalgeralimpostoconsumo

                    else:
                        ai.charge_type = "Actual"
                        ai.tax_amount = despesas
            elif "34220000" in ai.account_head:  #IVA
                print "TEM IVA......"
                print "TEM IVA......"
                print "TEM IVA......"
                print "TEM IVA......"

            else:
                print "SEM DESPESAS MAS CALCULA IPC"
                print "SEM DESPESAS MAS CALCULA IPC"
                ai.charge_type = "Actual"
                ai.tax_amount = totalgeralimpostoconsumo
                ai.total = totalgeralimpostoconsumo + doc.net_total

    print "VALOR POR EXTENSO"

    print totalgeralimpostoconsumo

    #Save Total Taxes and Charges if IPC exists
    if totalgeralimpostoconsumo:
        doc.base_total_taxes_and_charges = totalgeralimpostoconsumo
        doc.total_taxes_and_charges = totalgeralimpostoconsumo

        doc.grand_total = totalgeralimpostoconsumo + doc.net_total
        doc.rounded_total = doc.grand_total
        doc.base_grand_total = doc.grand_total
        doc.base_rounded_total = doc.grand_total
        doc.outstanding_amount = doc.grand_total

    company_currency = erpnext.get_company_currency(doc.company)
    print company_currency
    if (company_currency == 'KZ'):
        doc.in_words = num2words(doc.rounded_total,
                                 lang='pt_BR').title() + ' Kwanzas.'
    else:
        doc.in_words = money_in_words(doc.rounded_total, company_currency)
Esempio n. 4
0
def validate(doc, method):

    taxavenda = cambios("BNA")
    lista_retencoes = get_lista_retencoes()
    lista_retencao = get_taxa_retencao()
    lista_impostos = get_taxa_ipc()

    temretencao = False
    temimpostoconsumo = False
    retencaofonte = 0
    retencaopercentagem = 0
    totalpararetencao = 0
    totalgeralimpostoconsumo = 0
    totalgeralretencaofonte = 0
    totalbaseretencaofonte = 0
    retencaofonteDESC = ""
    totalservicos_retencaofonte = 0
    totaldespesas_noretencaofonte = 0

    ii = 0

    for x in lista_retencoes:
        if x.descricao == 'Retencao na Fonte':
            print('pertagem ', x.percentagem)
            retencaopercentagem = x.percentagem

    for i in doc.get("items"):

        prod = frappe.db.sql(
            """SELECT item_code,imposto_de_consumo,retencao_na_fonte FROM `tabItem` WHERE item_code = %s """,
            i.item_code,
            as_dict=True)
        if prod[0].imposto_de_consumo == 1:
            print("IMPOSTO CONSUMO")
            if i.imposto_de_consumo == 0:
                i.imposto_de_consumo = (i.amount * 10) / 100

        if prod[0].retencao_na_fonte == 1:
            print("RETENCAO FONTE")
            i.retencao_na_fonte = (i.amount * retencaopercentagem) / 100
            totalbaseretencaofonte += i.amount
            totalservicos_retencaofonte += totalbaseretencaofonte
        else:
            totaldespesas_noretencaofonte += i.amount

        totalgeralimpostoconsumo += i.imposto_de_consumo
        totalgeralretencaofonte += i.retencao_na_fonte

        #BATCH Qty
        if i.warehouse and i.item_code and i.batch_no:
            print 'BATCH NO verifica a QTD'
            print get_batch_qty(i.batch_no, i.warehouse,
                                i.item_code)['actual_batch_qty']
            i.actual_batch_qty = get_batch_qty(i.batch_no, i.warehouse,
                                               i.item_code)['actual_batch_qty']

    #Save retencao na INVoice
    doc.total_retencao_na_fonte = totalgeralretencaofonte
    doc.base_retencao_fonte = totalbaseretencaofonte

    #Calcula_despesas Ticked
    iii = 0
    print("Despesas")
    for ai in doc.get("taxes"):
        if ai.parent == doc.name and ai.charge_type != "":
            if ai.calcula_despesas:
                if totaldespesas_noretencaofonte == 0:
                    #recalcula
                    print("RECALCULA")
                    percentagem = ai.rate
                    for aii in doc.get("items"):
                        if aii.parent == doc.name:
                            prod = frappe.db.sql(
                                """SELECT item_code,imposto_de_consumo,retencao_na_fonte FROM `tabItem` WHERE item_code = %s """,
                                aii.item_code,
                                as_dict=True)

                            #if (iii==0){iii=0}

                            if prod[0].imposto_de_consumo == 1:

                                if aii.imposto_de_consumo == 0:
                                    print ""

                                if aii.retencao_na_fonte == 1:

                                    totalgeralretencaofonte += (
                                        aii.amount * retencaopercentagem) / 100
                                    totalbaseretencaofonte += aii.amount
                                    totalservicos_retencaofonte += totalbaseretencaofonte

                                totalgeralimpostoconsumo += aii.imposto_de_consumo

                                despesas = (
                                    percentagem *
                                    totaldespesas_noretencaofonte) / 100
                                ai.charge_type = "Actual"
                                ai.tax_amount = despesas

                else:
                    print("CALCULA DESPESAS")
                    despesas = (ai.rate * totaldespesas_noretencaofonte) / 100

                    ai.charge_type = "Actual"
                    ai.tax_amount = despesas

    print "VALOR POR EXTENSO"

    company_currency = erpnext.get_company_currency(doc.company)
    print company_currency
    if (company_currency == 'KZ'):
        doc.in_words = num2words(doc.rounded_total,
                                 lang='pt_BR').title() + ' Kwanzas.'
    else:
        doc.in_words = money_in_words(doc.rounded_total, company_currency)
Esempio n. 5
0
def validate(doc,method):

	taxavenda= cambios("BNA")
	lista_retencoes = get_lista_retencoes()
	lista_retencao = get_taxa_retencao()
	lista_impostos = get_taxa_ipc()

	lista_iva = get_taxa_iva()

	temretencao = False 
	temimpostoconsumo = False 
	retencaofonte = 0
	retencaopercentagem = 0
	totalpararetencao = 0
	totalgeralimpostoconsumo = 0
	totalgeralretencaofonte = 0
	totalbaseretencaofonte = 0
	retencaofonteDESC = ""
	totalservicos_retencaofonte = 0
	totaldespesas_noretencaofonte = 0
	
	percentagem = 0

	
	
	ii=0

	for x in lista_retencoes:
		if x.descricao =='Retencao na Fonte':
			print ('pertagem ', x.percentagem)
			retencaopercentagem = x.percentagem
		elif (x.descricao =='IPC') or (x.descricao =='Imposto de Consumo'):
			print ('IPC % ', x.percentagem)
			percentagem = x.percentagem
		elif (x.descricao.upper() =='IVA'.upper()) or ("Imposto Valor Acrescentado".upper() == x.descricao.upper() or 'Acrescentado'.upper() in x.descricao.upper()):
			print ('IVA % ', x.percentagem)
			percentagem = x.percentagem


	for i in doc.get("items"):			
		print "ITEMS IMPOSTOS +++++++"
		prod = frappe.db.sql("""SELECT item_code,imposto_de_consumo,retencao_na_fonte FROM `tabItem` WHERE item_code = %s """, i.item_code , as_dict=True)
		if prod[0].imposto_de_consumo ==1:
			print ("IMPOSTO CONSUMO")
			#if i.imposto_de_consumo == 0:
			print i.amount

			if percentagem == 0:
				i.imposto_de_consumo = (i.amount * 5) / 100
			else:
				i.imposto_de_consumo = (i.amount * percentagem) / 100

		if prod[0].retencao_na_fonte ==1:
			print ("RETENCAO FONTE")
			i.retencao_na_fonte = (i.amount * retencaopercentagem) / 100
			totalbaseretencaofonte += i.amount
			totalservicos_retencaofonte += totalbaseretencaofonte
		else:
			totaldespesas_noretencaofonte += i.amount		

		totalgeralimpostoconsumo += i.imposto_de_consumo					
		totalgeralretencaofonte +=  i.retencao_na_fonte

	#Save retencao na INVoice 
	doc.total_retencao_na_fonte = totalgeralretencaofonte
	doc.base_retencao_fonte = totalbaseretencaofonte
	print "ANTES DESPESAS"
	print totalgeralimpostoconsumo
	#Calcula_despesas Ticked
	
	iii=0
	print ("Despesas")
	for ai in doc.get("taxes"):
		if ai.parent == doc.name and ai.charge_type !="":
			if ai.calcula_despesas:
				totalgeralimpostoconsumo = 0
				if totaldespesas_noretencaofonte ==0:
					#recalcula
					print ("RECALCULA")

					if (ai.rate == 0) and (percentagem == 0) :
						percentagem = 5
					else:
						percentagem = ai.rate
				
					for aii in doc.get("items"):
						if aii.parent == doc.name:
							print 'Dentro do ITem'
							prod = frappe.db.sql("""SELECT item_code,imposto_de_consumo,retencao_na_fonte FROM `tabItem` WHERE item_code = %s """, aii.item_code , as_dict=True)					

							#if (iii==0){iii=0}
							
							if prod[0].imposto_de_consumo == 1:
								print 'IMPOSTO TEM'
								if aii.imposto_de_consumo == 0:
									print "valor imp ", aii.imposto_de_consumo
								
								if aii.retencao_na_fonte == 1:
										
									totalgeralretencaofonte +=  (aii.amount * retencaopercentagem) / 100
									totalbaseretencaofonte += aii.amount
									totalservicos_retencaofonte += totalbaseretencaofonte

								totalgeralimpostoconsumo += aii.imposto_de_consumo					


								despesas = (percentagem * totaldespesas_noretencaofonte)/100
								print percentagem
								print totaldespesas_noretencaofonte
								print despesas
								print totalgeralimpostoconsumo
								print ai.account_head
								ai.charge_type = "Actual"
								ai.tax_amount = despesas #totalgeralimpostoconsumo 
							else:
								ai.tax_amount = 0

				else:
					print ("CALCULA DESPESAS")
					if (ai.rate == 0) and (percentagem == 0) :
						percentagem = 5
					else:
						percentagem = ai.rate

					despesas = (percentagem * totaldespesas_noretencaofonte)/100

					print percentagem
					print totaldespesas_noretencaofonte
					print despesas

					print totalgeralimpostoconsumo
					if despesas != totalgeralimpostoconsumo:

						ai.charge_type = "Actual"
						ai.tax_amount = totalgeralimpostoconsumo

					else:
						ai.charge_type = "Actual"
						ai.tax_amount = despesas
			elif "34220000" in ai.account_head: #IVA
				print "TEM IVA......"
				print "TEM IVA......"
				print "TEM IVA......"
				print "TEM IVA......"

			else:
				print "SEM DESPESAS MAS CALCULA IPC"
				print "SEM DESPESAS MAS CALCULA IPC"
				ai.charge_type = "Actual"
				ai.tax_amount = totalgeralimpostoconsumo





	#Check if Lead is Converted or Not, if the lead is converted 
	#then don't allow it to be selected without linked customer
	if doc.lead:
		link = frappe.db.sql("""SELECT name FROM `tabCustomer` 
			WHERE lead_name = '%s'"""%(doc.lead), as_list=1)
		if doc.customer is None and link:
			frappe.throw(("Lead {0} is Linked to Customer {1} so kindly make quotation for \
				Customer and not Lead").format(doc.lead, link[0][0]))
		elif doc.customer:
			if doc.customer != link[0][0]:
				frappe.throw(("Customer {0} is not linked to Lead {1} hence cannot be set\
				in the Quotation").format(doc.customer, doc.lead))


	print "VALOR POR EXTENSO"

	company_currency = erpnext.get_company_currency(doc.company)
	print company_currency
	if (company_currency =='KZ'):
		doc.in_words = num2words(doc.rounded_total, lang='pt_BR').title() + ' Kwanzas.'	
	else:
		doc.in_words = money_in_words(doc.rounded_total, company_currency)

	
	ultimodoc = frappe.db.sql(""" select max(name),creation,docstatus,hash_erp,hashcontrol_erp from `tabSales Invoice` where (docstatus = 1 or docstatus = 2)  and hash_erp <> '' """,as_dict=True)
	print 'VALIDARrrrrrrrrrrrrrrrrrr'
	print ultimodoc
	global ultimoreghash
	ultimoreghash = ultimodoc