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
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)
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)
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)
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