;*******************************************************************************
;* Rotina de Digitacao Dados do Item                                           *
;*******************************************************************************
Proc Pega_Dados_Item(Origem) 
Private Item_ok, Origem

Item_ok=False
Switch
  Case Origem="Codigo_Barras":
      If Dados_Item=CODBAR_ANT And SYS_CODIGO_CLIENTE<>"0239"
         Then
              REG_ITEMOF["Item da OF"]=[Item da OF]
              REG_ITEMOF["Quantidade"]=Dados_QTD
              CopyFromArray REG_ITEMOF

              Echo Off
              Return True
         Else
              Moveto [Codigo do Item]
              Ativa_Lookup()
              Switch
                Case SYS_CODIGO_CLIENTE="0304":
                      Moveto [Codigo de Barras]
                      Locate IndexOrder by "cod_barras" CODIGO_BARRA
                OtherWise:
                      If Len(CODIGO_BARRA)<=10
                        Then Moveto [Codigo do Item]
                             Locate ALINHM(CODIGO_BARRA,10)
                        Else Moveto [Codigo de Barras]
                             Locate IndexOrder by "cod_barras" CODIGO_BARRA
                      EndIf
              EndSwitch
          EndIf
  OtherWise:
      Moveto [Codigo do Item]
      Ativa_Lookup()
      Localizar_Item_Por()
EndSwitch
If RetVal
  Then CopyToArray REG_BUSCA_LOOKUP
       KeyPress "ESC"

       While True
         VSD_I_Referencia =REG_BUSCA_LOOKUP["Referencia"]
         VSD_I_Codigo_Item=REG_BUSCA_LOOKUP["Codigo do Item"]
         FAMILIA          =REG_BUSCA_LOOKUP["Codigo da Familia"]         

         If REG_BUSCA_LOOKUP["Inativo"]="S"
            Then Mensagem("Este item://"+REG_BUSCA_LOOKUP["Codigo do Item"]+" "+
                           REG_BUSCA_LOOKUP["Descricao do Item"]+"//"+"Referˆncia: "+
                           REG_BUSCA_LOOKUP["Referencia"]+"//"+
                          "Fornecedor: "+REG_BUSCA_LOOKUP["Codigo Fornecedor"]+"// // esta inativo !")
                 QuitLoop
        EndIf    

        If Origem="Codigo_Barras"
           Then 
                 ;----- Brasil Textil ---------------------------------------------------------------------        
                 NLANCPC=BlankNum()
                 If SYS_CODIGO_CLIENTE="0239"
                   Then [Quantidade]=NumVal(SubStr(CODIGO_BARRA,26,10))/100
                        NLANCPC     =NumVal(SubStr(CODIGO_BARRA,15,10))
                        VSD_I_Codigo_Item=SubStr(CODIGO_BARRA,4,10)
                        
                 			 If [FaturaC->Tipo Movimento Estoque]="S"
                 			    Then
                 			         ETIQOk=False
                               Moveto "\\Sistemas\\Estoque\\PecasMov"
                               Moveto [Numero do Lancamento]
                               Locate NLANCPC
                               If Not RetVal
                                  Then Mensagem("Lan‡amento de etiqueta n„o encontrado !")
                                  Else If Not IsBlank([Sistema Destino])
                											    Then Mensagem("Etiqueta j  foi faturada !")
                											    Else If [Tipo Movimento]="S" And [Tipo Lancamento]="CORTE NA PECA"
                											            Then ETIQOk=True
                															    Else Mensagem("Etiqueta n„o se refere a um CORTE de SAIDA !")
                			                         EndIf        
                                       EndIf        
                               EndIf
                
                               Moveto "FaturaI"
                							 If ETIQOK And
                					        ([\Sistemas\Estoque\PecasMov->Codigo do Item]<>VSD_I_Codigo_Item or
                					         [\Sistemas\Estoque\PecasMov->Quantidade    ]<>[Quantidade])
                					        Then Mensagem("Lan‡amento encontrado n„o confere com dados da etiqueta !")
                			                 ETIQOk=False
                               EndIf
                
                							 If Not ETIQOK
                							    Then Item_Ok=False 
                                       QuitLoop
                							 EndIf
                	     EndIf
                EndIf      
         EndIf
         
         [Codigo do Item] =VSD_I_Codigo_Item
         Pega_Preco("Novo")
         If Origem="Codigo_Barras"
            Then If [Preco Unitario]<=0
                   Then Mensagem("Item sem tabela de pre‡o !")
                        QuitLoop
                 EndIf
         EndIf               

         If [Tipo do Item]="C" ; Servi‡o
            Then 
                 [Aliquota de ICMS      ]=BlankNum()
                 [Aliquota de IPI       ]=BlankNum()

                 If TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB"
                    Then 
                        [PIS_CST        ]="99"
                        [PIS_Aliquota   ]=BlankNum()

                        [COFINS_CST     ]="99"
                        [COFINS_Aliquota]=BlankNum()
                 EndIf        
                         
            Else
                 Switch
                   Case (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB"):
        
                         Switch
                           Case (Search("MOSTR",[FaturaC->Descricao da Destinacao])>0  Or
                                 Search("DEVOL",[FaturaC->Descricao da Destinacao])>0  Or
                                 Search("BRIND",[FaturaC->Descricao da Destinacao])>0) And
                                SYS_CLIENTE_CONFEC<>"":
                                [CSOSN]="400"

                           Case ( [FaturaC->Tipo Movimento Estoque]="S" And
                                  (Search("VEND",[FaturaC->Descricao da Destinacao])>0 And
                                   [FaturaC->Tipo Pessoa]="FISICA") )
                                  Or 
                                ( [FaturaC->Tipo Movimento Estoque]="E" Or
                                  Search("VEND",[FaturaC->Descricao da Destinacao])=0 Or
                                  [FaturaC->Tipo Pessoa]="FISICA" ):  
                                 Switch
                                   Case [CSOSN]="101": [CSOSN]="102" 
                                   Case [CSOSN]="201": [CSOSN]="202" 
                                 EndSwitch

                         EndSwitch
        
                         Switch
                           Case [CSOSN]="101" Or [CSOSN]="900":
                                [ICMS_CREDSN_Aliquota]=ALIQUOTA_CREDITO_ICMS_NOSN
                                 If OPCAO_RED_BCICMS="1"
                                    Then [Aliquota Reduzida BCICMS]=BlankNum()
                                 EndIf
                                [MVA                 ]=BlankNum()
                                [ICMS_ST_Aliquota    ]=BlankNum()
        
                           Case [CSOSN]="201":
                                [ICMS_CREDSN_Aliquota]=ALIQUOTA_CREDITO_ICMS_NOSN
                                 If OPCAO_RED_BCICMS="1"
                                    Then [Aliquota Reduzida BCICMS]=BlankNum()
                                 EndIf
                                 [ICMS_ST_Aliquota]=UF_ALIQUOTA_ICMS_INTERNA
                                 Checa_MVA([Tributacao de ICMS],[Codigo MVA])
        
                           Case [CSOSN]="202" Or [CSOSN]="203":
                                [ICMS_CREDSN_Aliquota]=BlankNum()
                                 If OPCAO_RED_BCICMS="1"
                                    Then [Aliquota Reduzida BCICMS]=BlankNum()
                                 EndIf
                                 [ICMS_ST_Aliquota]=UF_ALIQUOTA_ICMS_INTERNA
                                 Checa_MVA([Tributacao de ICMS],[Codigo MVA])
        
                           Case [CSOSN]="500" And Search("DEVOL",[FaturaC->Descricao da Destinacao])>0 And [FaturaC->Tipo Movimento Estoque]="E": 
                                [ICMS_CREDSN_Aliquota]=BlankNum()
                                 If OPCAO_RED_BCICMS="1"
                                    Then [Aliquota Reduzida BCICMS]=BlankNum()
                                 EndIf
                                 [ICMS_ST_Aliquota]=UF_ALIQUOTA_ICMS_INTERNA
                                 Checa_MVA([Tributacao de ICMS],[Codigo MVA])

                           OtherWise:
                                [ICMS_CREDSN_Aliquota]=BlankNum()
                                [MVA                 ]=BlankNum()
                                [ICMS_ST_Aliquota    ]=BlankNum()
                         EndSwitch

                         [Tributacao de Icms]=Pega_TipoTributacao("CSOSN",[CSOSN])
                         
                   OtherWise:
        
                         TribCST=SubStr([Tipo Tributacao],2,2)
                         Switch
                           Case (TribCST="00" And TRIB_ICMS="D" And UF_ALIQUOTA_ICMS>0) Or
                                (TribCST="10" And TRIB_ICMS="D" And UF_ALIQUOTA_ICMS>0) Or
                                (TribCST="20" And TRIB_ICMS="D" And UF_ALIQUOTA_ICMS>0) Or
                                (TribCST="70" And TRIB_ICMS="D" And UF_ALIQUOTA_ICMS>0):
                                [Aliquota de ICMS  ]=UF_ALIQUOTA_ICMS
                                 If OPCAO_RED_BCICMS="1"
                                    Then [Aliquota Reduzida BCICMS]=BlankNum()
                                 EndIf
                
                           Case (TribCST="10" And TRIB_ICMS="S" And UF_ALIQUOTA_ICMS>0) Or
                                (TribCST="70" And TRIB_ICMS="S" And UF_ALIQUOTA_ICMS>0):
                                [Aliquota de ICMS  ]=UF_ALIQUOTA_ICMS
                                 If OPCAO_RED_BCICMS="1"
                                    Then [Aliquota Reduzida BCICMS]=BlankNum()
                                 EndIf
                
                           Case (TribCST="00" Or TribCST="10" Or TribCST="20" Or TribCST="70") And
                                TRIB_ICMS<>"D" And TRIB_ICMS<>"S":
                                [Tributacao de Icms]=TRIB_ICMS
                                [Aliquota de ICMS  ]=BlankNum()
                                Switch
                                 Case [Tributacao de Icms]="O": [Tipo Tributacao]=SubStr([Tipo Tributacao],1,1)+"90"                
                                 Case [Tributacao de Icms]="I": [Tipo Tributacao]=SubStr([Tipo Tributacao],1,1)+"40"                                
                                 Case [Tributacao de Icms]="N": [Tipo Tributacao]=SubStr([Tipo Tributacao],1,1)+"41"                                
                							 EndSwitch
                         EndSwitch
        
                         [CSOSN               ]="900"
                         [ICMS_CREDSN_Aliquota]=BlankNum()
        
                         Switch
                           Case (TribCST="10" Or TribCST="30" Or TribCST="70"):
                                [ICMS_ST_Aliquota]=UF_ALIQUOTA_ICMS_INTERNA
                                Checa_MVA([Tributacao de ICMS],[Codigo MVA])
                           Case TribCST="60" And Search("DEVOL",[FaturaC->Descricao da Destinacao])>0 And [FaturaC->Tipo Movimento Estoque]="E":
                                [ICMS_ST_Aliquota]=UF_ALIQUOTA_ICMS_INTERNA
                                Checa_MVA([Tributacao de ICMS],[Codigo MVA])
                           OtherWise:     
                                [MVA             ]=BlankNum()
                                [ICMS_ST_Aliquota]=BlankNum()
                         EndSwitch

                         [Tributacao de ISSQN     ]="N"
                         [Aliquota de ISSQN       ]=BlankNum()
        
                 EndSwitch
                 
         EndIf   

         ;* Seta Variaveis PegaCFOP
         Checa_CFOP      =[FaturaC->Tipo Movimento Estoque]
         CFO_C           =[FaturaC->CFO      ]
         CFOP_TPITEM     =[Tipo do Item      ]
         CFOP_TRIBICMS   =[Tributacao de ICMS]
         CFOP_TPTRIB     =[Tipo Tributacao   ]
         CFOP_EMPRESA    =[FaturaC->Codigo da Empresa ]
         CFOP_ATIVEMPRESA=ATIVEMPR
         Play "\\Sistemas\\Exporta\\PegaCFOP"        
         [CFO            ]=CFO_C
         [Tipo Tributacao]=CFOP_TPTRIB

         If [Tipo do Item]="C" ; Servi‡o
            Then If SYS_CODIGO_CLIENTE="0296"
                    Then [ISSQN_Municipio]=3122306
                         [ISSQN_UF       ]="MG"
                         Switch
                           Case Substr([FaturaC->CFO],1,1)="5" : [CFO]="5933"
                           Case Substr([FaturaC->CFO],1,1)="6" : [CFO]="6933"
                         EndSwitch  
                 EndIf
         EndIf

         If Search("VENDA",[FaturaC->Descricao da Destinacao])=0 And [FaturaC->Tipo Movimento Estoque]<>"S"
            Then [PIS_CST        ]  ="99"
                 [PIS_ALIQUOTA   ]=BlankNum() 
                 [COFINS_CST     ]  ="99"
                 [COFINS_ALIQUOTA]=BlankNum() 
         EndIf   

         Item_Ok=True

         If Origem="Codigo_Barras"
            Then CODBAR_ANT=Dados_Item
                 CopyToArray REG_ITEMOF
         EndIf        

         QuitLoop
       EndWhile
  Else KeyPress "ESC"
       Mensagem("Item n„o Cadastrado !")
EndIf

Echo Off
Return Item_ok
EndProc

