Perguntas Programa que calcula os impostos

Mais
3 anos 8 meses atrás #32984 por msaabo
Olá caros,

Estou com uma dúvida de como criar um programa para calcular os impostos de um produto ao ser inserido num browser.

A ideia seria no final realizar um programa com o pré calculo para a área de vendas. (Pré calculo é algo interno das empresas, mas gostaria de um exemplo ou que calculasse os impostos.Pois adicionaria a regra de negócios.

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 8 meses atrás #32985 por admin
Respondido por admin no tópico Programa que calcula os impostos
Cara boa tarde, isso seria uma tarefa bem complicada hein, porque as funções que efetuam os calculos de impostos no sistema efetuam apenas com base em campos pré-determinados, como orçamento de vendas tabela SCK, ou Orçamento Call Center tabela SUB ou itens do pedido de vendas tabela SC6, agora efetuar os calculos em um browse com uma tabela customizada eu nunca vi alguém utilizar.

Infelizmente desconheço.

abaixo um exemplo de calculos baseado na tabela sub, tenta ver se funciona com sua tabela customizada.

MAFISSAVE
MAFISEND
MAFISINI
MAFISADD
MAFISRET
MAFISEND

MaFisSave()//Renato Ikeda - 03/02/2014 - inicializa função fiscal
	MaFisEnd() //Renato Ikeda - 03/02/2014 - inicializa função fiscal
	
	IF SUA->UA_CLIPROS == '1' 
   		MaFisIni(cCodCli,cLojCli,"C","N",cTipCli,MaFisRelImp("MTR700",{"SUA","SUB"}),,,"SB1","MTR700",,,)
	ElseIf SUA->UA_CLIPROS == '2' 
   		MaFisIni('','',"C","N",cTipCli,MaFisRelImp("MTR700",{"SUA","SUB"}),,,"SB1","MTR700",,,cCodCli+cLojCli,)
   	Endif

    While !Eof() .And. SUB->UB_FILIAL = xFilial("SUB") .And. SUB->UB_NUM == SUA->UA_NUM
			
	  //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
	  //³ Verifica se havera salto de formulario                       ³
	  //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
	  If li > 2000
		  nOrdem++
		  ImpRodape()			// Imprime rodape do formulario e salta para a proxima folha
		  ImpCabec()
		  li  := 960
	  Endif
			
	  li:=li+60
			
      oPrint:Say( li, 0050, UPPER(SUB->UB_PRODUTO),oFont9,100 )
      
			MaFisAdd(SUB->UB_PRODUTO,;   	   // 1-Codigo do Produto ( Obrigatorio )
					SUB->UB_TES,;		       // 2-Codigo do TES ( Opcional )
					SUB->UB_QUANT,;		   // 3-Quantidade ( Obrigatorio )
					SUB->UB_VRUNIT,;	       // 4-Preco Unitario ( Obrigatorio )
					Iif(nDesconto>0,nDesconto/nNritem,0),;                // 5-Valor do Desconto ( Opcional )
					nil,;		               // 6-Numero da NF Original ( Devolucao/Benef )
					nil,;		               // 7-Serie da NF Original ( Devolucao/Benef )
					nil,;			       	   // 8-RecNo da NF Original no arq SD1/SD2
					SUA->UA_FRETE/nNritem,;	   // 9-Valor do Frete do Item ( Opcional )
					SUA->UA_DESPESA/nNritem,;  // 10-Valor da Despesa do item ( Opcional )
					0,;   // 11-Valor do Seguro do item ( Opcional )
					0,;						   // 12-Valor do Frete Autonomo ( Opcional )
					SUB->UB_VLRITEM+Iif(nDesconto>0,nDesconto/nNritem,0),;  // 13-Valor da Mercadoria ( Obrigatorio )
					0,;						   // 14-Valor da Embalagem ( Opcional )
					0,;		     			   // 15-RecNo do SB1
					0) 	           	           // 16-RecNo do SF4     

				//_nValIcm  := MaFisRet(1,"IT_VALICM" )
				//_nBaseIcm := MaFisRet(1,"IT_BASEICM")
				//_nValIpi  := MaFisRet(1,"IT_VALIPI" )
				//_nBaseIpi := MaFisRet(1,"IT_BASEICM")
				//_nValMerc := MaFisRet(1,"IT_VALMERC")
				//_nValSol  := MaFisRet(1,"IT_VALSOL" )
				//_nValDesc := MaFisRet(1,"IT_DESCONTO" )
				//_nPrVen   := MaFisRet(1,"IT_PRCUNI")

      nIPI        := MaFisRet(nItem,"IT_ALIQIPI")
      nICM        := MaFisRet(nItem,"IT_ALIQICM")
      nICMDIF     := Iif(GetEnvServer()$"VALIDACAO",20,0)

/*      If SUA->UA_CLIENTE=='011404'
	      nIPI        := 0
    	  nICM        := 0
      	  MaFisAlt("IT_ALIQIPI",0,nItem)
      	  MaFisAlt("IT_ALIQICM",0,nItem)
      Endif         */
      
      nValIcm     	:= MaFisRet(nItem,"IT_VALICM")	           
      nValIpi     	:= MaFisRet(nItem,"IT_VALIPI")
      nValDzf		:= MaFisRet(nItem,"IT_DESCZF")	      
      nTotIpi	  	:= MaFisRet(,'NF_VALIPI')
      nTotIcms		:= MaFisRet(,'NF_VALICM')        
      nTotDesp 		:= MaFisRet(,'NF_DESPESA')
      nTotFrete		:= MaFisRet(,'NF_FRETE')
      nTotDzf 		:= MaFisRet(,'NF_DESCZF')
      nTotalNF 		:= MaFisRet(,'NF_TOTAL')
      nTotDesc 		:= MaFisRet(,'NF_DESCONTO')
      nTotSeguro  	:= MaFisRet(,'NF_SEGURO')
      aValIVA     	:= MaFisRet(,"NF_VALIMP")
      nTotMerc    	:= MaFisRet(,"NF_TOTAL")
      nTotIcmSol  	:= MaFisRet(nItem,'NF_VALSOL')
      
	  ImpProd()

      oPrint:Box( li+30, 0050, li+30,2350)

	  dbSelectArea("SUB")
					
      SUB->(DbSkip())  
      nItem++
   EndDo 
   MaFisEnd()//Termino
		

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.070 segundos
Joomla templates by a4joomla