;** RM_0010T *******************************************************************
;*  Ficha de Formulas - Baseado no Pre‡o de Venda                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 08/04/2021 por Bruno Carvalho
;Ultima Alteracao: 27/04/2021 por Bruno Carvalho 
;Motivo Alteracao: Ajustes p/ buscar o PRECO_PRATICADO da item "pai" quando nÆo for encontrado no item "filho"  

;*******************************************************************************
;* Pegar maior custo da referˆncia                                             *
;*******************************************************************************
Proc RM_0010T_Pega_Referencia_MaiorCusto()
Private TabelaTemp

TabelaTemp=Cria_Temp(PrivDir())
Copy "Answer" TabelaTemp
  
{Ask} TypeIn TabelaTemp Enter
Moveto [PACodigo do Produto]       TypeIn "_Prod"
{Ask} {FormulaC}
Moveto [Codigo do Produto  ]       TypeIn "_Prod, Calc Max as Codigo do Produto"
Moveto [Referencia         ] Check    
Moveto [Custo Unitario     ]       TypeIn ">0, Calc Max"
Do_it!
ClearAll

{Ask} TypeIn TabelaTemp Enter Check
Moveto [PACodigo do Produto]       TypeIn "_Prod"
{Ask} {Answer}
Moveto [Codigo do Produto  ]       TypeIn "_Prod"  
Do_it!
ClearAll
          
EndProc ;RM_0010T_Pega_Referencia_MaiorCusto()

;*******************************************************************************
;* Monta Array Para Trabalho                                                   *
;*******************************************************************************
Proc RM_0010T_Monta_Array(REFERENCIA)

COD_ITEM       = ""
DESCRICAO_ITEM = ""
MARCA_PAI      = ""
Moveto "\\Sistemas\\Estoque\\Itens"
Moveto [Referencia]
Locate IndexOrder by "refcor_01" REFERENCIA, "D", ""
If RetVal
   Then COD_ITEM       = PegaCodigoRaiz([Codigo do Item])  
        DESCRICAO_ITEM = [Descricao do Item ] 
        MARCA_PAI      = [Descricao da Marca]
EndIf

;---- Regra para #0227# ------------------------------------------------------
Array Array_Lista2[4]
Array_Lista2[1]="000001"
Array_Lista2[2]="000002"
If Search("KIDS",MARCA_PAI)>0 
   Then Array_Lista2[3]="000005"
        Array_Lista2[4]="000006" 
   Else Array_Lista2[3]="000003"
        Array_Lista2[4]="000004"
EndIf 
;-----------------------------------------------------------------------------
  
EndProc ;RM_0010T_Monta_Array(REFERENCIA)

;*******************************************************************************
;* Monta Relat¢rio - Pre‡o de Venda baseado na F¢rmula                         *
;*******************************************************************************
Proc RM_0010T_Monta_RelatorioPV()
Private TABELA_DETALHE,TABELA_REF

;---- Tabela para ImpressÆo do Relat¢rio ---------------------------------------
Sort "Answer" On "PACodigo do Produto","MPTipo do Item"
Clearall
TabelaRelatorio=Cria_Temp(PrivDir())
Copy "Answer" TabelaRelatorio

;---- Rotina para ImpressÆo do Pre‡o de Venda ----------------------------------                       
TabelaTemp=Cria_Temp(PrivDir())
Copy "Answer" TabelaTemp

{Ask} TypeIn TabelaTemp Enter
Moveto [PACodigo do Produto     ]       TypeIn "_Prod"
Moveto [PAPrecodeVenda_Livre    ] Check
Moveto [MPTipo do Item          ] Check 
Moveto [MPDescricao Tipo do Item] Check
Moveto [MPQuantidade            ]       TypeIn "Calc Sum as MPQuantidade"
Moveto [MPValor Unitario        ]       TypeIn "Calc Sum as MPValor Unitario"
{Ask} {FormulaC}
Moveto [Codigo do Produto       ]       TypeIn "_Prod"    
Moveto [Referencia              ] Check
Do_it!
ClearAll

Sort "Answer" On "Referencia"
ClearAll

TABELA_DETALHE=Cria_Temp(PrivDir())
Copy "Answer" TABELA_DETALHE

;---- Acertando o Total do Valor Unitario -------------------------------------- 
{Ask} TypeIn TABELA_DETALHE Enter
Moveto [MPValor Unitario        ]       TypeIn "Changeto Blank" 
Do_it!
ClearAll

{Ask} TypeIn TabelaTemp Enter
Moveto [PACodigo do Produto     ]       TypeIn "_Prod"
Moveto [MPTipo do Item          ] Check 
Moveto [MPQuantidade            ] Check
Moveto [MPValor Unitario        ] Check
{Ask} {FormulaC}
Moveto [Codigo do Produto       ]       TypeIn "_Prod"    
Moveto [Referencia              ] Check
Do_it!
ClearAll

{Ask} {Answer}
Moveto [MPQuantidade            ] TypeIn "_Qtd"
Moveto [MPValor Unitario        ] TypeIn "_Vr, Changeto _Qtd*_Vr"
Do_it!
ClearAll

{Ask} {Answer} 
Moveto [Referencia              ] Check
Moveto [MPTipo do Item          ] Check 
Moveto [MPValor Unitario        ]       TypeIn "Calc Sum as MPValor Unitario"
Do_it!
ClearAll

{Ask} {Answer}
Moveto [Referencia              ] TypeIn "_Ref"
Moveto [MPTipo do Item          ] TypeIn "_Tipo"   
Moveto [MPValor Unitario        ] TypeIn "_Vr" 
{Ask} TypeIn TABELA_DETALHE Enter
Moveto [Referencia              ] TypeIn "_Ref"
Moveto [MPTipo do Item          ] TypeIn "_Tipo"
Moveto [MPValor Unitario        ] TypeIn "Changeto _Vr"
Do_it!                                             
ClearAll

;---- Apenas SEMI-ACABADO ??? --------------------------------------------------
{Ask} TypeIn TabelaTemp Enter
Moveto [PACodigo do Produto    ]       TypeIn "_Prod"
{Ask} {FormulaC}
Moveto [Codigo do Produto      ]       TypeIn "_Prod"   
Moveto [Referencia             ] Check    
Moveto [Custo Unitario         ] Check
Do_it!
ClearAll
TABELA_REF=Adiciona_Indice_Temp("Referencia")

Copy "\\Base\\Sistemas\\Producao\\RM_0010T" TabelaTemp
Empty TabelaTemp

;---- Lista Regras Ativas ------------------------------------------------------
;{Ask} {RegraTPC}
;Moveto [CodigoDaRegra   ] Check
;Moveto [DescricaoDaRegra] Check
;Moveto [RegraInativa    ] TypeIn "Not S" 
;Do_it!
;ClearAll

;Array Array_Lista2[NRecords("Answer")] 

;WHK=0
;View "Answer"
;Scan
;  WHK=WHK+1
;  Array_Lista2[WHK]=Alinhm(StrVal([CodigoDaRegra]),6)+Spaces(01)+SubStr([DescricaoDaRegra],1,30)
;EndScan
           
Copy TABELA_DETALHE "Answer" 
View "RegraTPD"
View "RegraTPC"
View "\\Sistemas\\Vendas\\TbPrite"
View "\\Sistemas\\Estoque\\Itens"
View TabelaTemp
View "Answer"
CoEdit TABELA_REF                     
Scan
  REFERENCIA     = [Referencia    ]
  CUSTO_UNITARIO = [Custo Unitario]
  
  RM_0010T_Monta_Array(REFERENCIA) 
  
  For ui From 1 To ArraySize(Array_Lista2)
    CodRegra=AlinhM(SubStr(Array_Lista2[ui],1,6),6)
    GetRecord "RegraTPC" CodRegra To REG_REGRATPC
    If Not RetVal
       Then Mensagem("Regra "+CodRegra+" nÆo foi localizada!")
            Loop 
    EndIf
    
    REGRA_ORIGEM = REG_REGRATPC["CodigoDaRegraOrigem"]
    If REGRA_ORIGEM<>""
       Then GetRecord "RegraTPC" REGRA_ORIGEM To REG_REGRA_ORIGEM  
    EndIf        
    
    ;---- Montar Array FIXO ------------------------------------ 
    CONTA_REGRA = 0
    Moveto "RegraTPD"
    Moveto [CodigoDaRegra]    
    Locate CodRegra
    If RetVal
       Then While [CodigoDaRegra] = CodRegra
              CONTA_REGRA = CONTA_REGRA + 1
              Skip
              If Eot() Then QuitLoop EndIf
            EndWhile   
    EndIf 
                                                                     
    Release Vars REGRA_DETALHE
    If CONTA_REGRA > 0
       Then Array REGRA_DETALHE[CONTA_REGRA]
       Else Mensagem("NÆo foi localizado descri‡Æo dos custos para a regra "+CodRegra+" !")
            Moveto TABELA_REF
            Loop 
    EndIf   
    
    INDICE_PRECO_VENDA = 0
    SOMA_PORC_REGRA    = 0
    CONTA_REGRA        = 0

    Moveto "RegraTPD"
    Moveto [CodigoDaRegra]    
    Locate CodRegra
    If RetVal
       Then While [CodigoDaRegra] = CodRegra
              SOMA_PORC_REGRA = SOMA_PORC_REGRA + [PorcentagemDoCusto] 
              CONTA_REGRA = CONTA_REGRA + 1
              REGRA_DETALHE[CONTA_REGRA] = Format("W30",[DescricaoDoCusto])+Format("W10.2",[PorcentagemDoCusto])
              Skip
              If Eot() Then QuitLoop EndIf
            EndWhile   
    EndIf     
    
    SOMA_PORC_REGRA    = SOMA_PORC_REGRA 
    INDICE_PRECO_VENDA = (100 - SOMA_PORC_REGRA)/100
    
    Moveto "Answer"
    Moveto [Referencia]
    Locate REFERENCIA
    If RetVal
       Then While [Referencia] = REFERENCIA
              Moveto TabelaTemp                 
              Moveto [CodigoDaRegra] 
              Locate CodRegra,REFERENCIA
              If Not RetVal
                 Then PRECO_PRATICADO = [Answer->PAPrecodeVenda_Livre]
                      If IsBlank(PRECO_PRATICADO)
                         Then AUX_ITEM = "03"+REFERENCIA+"000"
                              If Len(AUX_ITEM)=10
                                 Then GetRecord "FormulaC" AUX_ITEM To REG_AUX_ITEM
                                      If RetVal
                                         Then If Not IsBlank(REG_AUX_ITEM["Preco de Venda_Livre"])
                                                 Then PRECO_PRATICADO = REG_AUX_ITEM["Preco de Venda_Livre"]
                                              EndIf    
                                      EndIf
                              EndIf                                
                      EndIf
                      End Down
                      [CodigoDaRegra    ] = CodRegra
                      [DescricaoDaRegra ] = Rtrim(Ltrim(SubStr(Array_Lista2[ui],8,30)))
                      [Referencia       ] = REFERENCIA
                      [Descricao do Item] = DESCRICAO_ITEM
                      [OrigemPreco      ] = REG_REGRATPC["OrigemPreco"]
                      [IndiceFormacaoPV ] = Round(INDICE_PRECO_VENDA,2)
                      For ii From 1 To ArraySize(REGRA_DETALHE)
                        DescricaoDoCusto = Rtrim(SubStr(REGRA_DETALHE[ii],1,30))
                        If DescricaoDoCusto="" Then Loop EndIf
                        Switch
                          Case ii = 1 : [DescricaoDoCusto1] = DescricaoDoCusto
                          Case ii = 2 : [DescricaoDoCusto2] = DescricaoDoCusto
                          Case ii = 3 : [DescricaoDoCusto3] = DescricaoDoCusto
                          Case ii = 4 : [DescricaoDoCusto4] = DescricaoDoCusto                                      
                          Case ii = 5 : [DescricaoDoCusto5] = DescricaoDoCusto
                          Case ii = 6 : [DescricaoDoCusto6] = DescricaoDoCusto
                          Case ii = 7 : [DescricaoDoCusto7] = DescricaoDoCusto
                          Case ii = 8 : [DescricaoDoCusto8] = DescricaoDoCusto
                        EndSwitch
                      Endfor
                      [TotalMarkUP  ] = Round(SOMA_PORC_REGRA,2)
                      
                      If [OrigemPreco]<>"R"
                         Then [CustoTotal   ] = CUSTO_UNITARIO
                              [PrecoSugerido] = Round([CustoTotal]/INDICE_PRECO_VENDA,2)
                      
                              ;---- #0227# Regra 000002 -> [Pre‡o Praticado] = [Pre‡o Sugerido]
                              If REG_REGRATPC["PrPraticadoIgualSugerido"]="S"
                                 Then PRECO_PRATICADO = [PrecoSugerido]
                              EndIf           
                              [PrecoPraticado] = PRECO_PRATICADO      
                         Else If IsAssigned(REG_REGRA_ORIGEM)
                                 Then GetRecord TabelaTemp REG_REGRA_ORIGEM["CodigoDaRegra"],REFERENCIA To REG_AUXILIAR
                                      If ReTval
                                         Then [CustoTotal       ] = REG_AUXILIAR["PrecoPraticado"]
                                              [PrecoSugerido    ] = Round([CustoTotal]/INDICE_PRECO_VENDA,2)
                                              [CMV              ] = Round(([CustoTotal]/[PrecoSugerido])*100,2) 
                                              [PrecoPraticado   ] = BlankNum()
                                      EndIf        
                              EndIf
                      EndIf     
              EndIf   
              If [OrigemPreco]<>"R"
                 Then Switch
                        Case [Answer->MPTipo do Item]="C" : [Servicos         ] = [Answer->MPValor Unitario]
                        Case [Answer->MPTipo do Item]="D" : [MaoDeObra        ] = [Answer->MPValor Unitario]
                        Case [Answer->MPTipo do Item]="M" : [MateriaPrima     ] = [Answer->MPValor Unitario]
                                                            If PRECO_PRATICADO>0
                                                               Then [CMV      ] = Round([MateriaPrima]/PRECO_PRATICADO*100,2)
                                                               Else [CMV      ] = Round([MateriaPrima]/[PrecoSugerido]*100,2)
                                                            EndIf   
                        OtherWise                         : [Outros           ] = [Answer->MPValor Unitario]  
                      EndSwitch
              EndIf          
              UnLockRecord
              Moveto "Answer"    
              Moveto [Referencia] 
              Skip
              If Eot() Then QuitLoop EndIf
              Locate Next REFERENCIA
              If Not RetVal Then QuitLoop EndIf
            EndWhile  
    EndIf
  EndFor
  Moveto TABELA_REF
EndScan
Do_It!
Clearall

Delete TABELA_REF
Delete TABELA_DETALHE

If IsEmpty(TabelaTemp)
   Then Return False
   Else Rename TabelaRelatorio "Answer" 
        RM_0010T_Imprimir_Relatorio()
        Return True   
EndIf

EndProc ;RM_0010T_Monta_RelatorioPV()

;*******************************************************************************
;* ROTINA DE IMPRESSAO - PRECO DE VENDA                                       *
;*******************************************************************************
Proc RM_0010T_ImprimirPV()
Private qw      

Array IMPRIME_REGRA[25]

RM_0010T_Monta_Array(REF_PAI)

COLUNA = 0
For qw From 1 To ArraySize(Array_Lista2)
  Moveto TabelaTemp
  Moveto [CodigoDaRegra]
  Locate Array_Lista2[qw],REF_PAI
  If RetVal
     Then CopyToArray ARRAY_REGRA
          If qw=1
             Then If [PrecoPraticado]>0
                     Then APENAS_REGRA_1 = False 
                     Else APENAS_REGRA_1 = True
                  EndIf    
          EndIf
          RM_0010T_Impressao_Detalhe()
          If APENAS_REGRA_1
             Then QuitLoop
          EndIf   
  EndIf        
EndFor

For Yu From 1 To ArraySize(IMPRIME_REGRA)
 Print File ARQIMP Spaces(2)+IMPRIME_REGRA[yu]+"\n"
EndFor  

Moveto "Answer"

EndProc ;RM_0010T_ImprimirPV()

;*******************************************************************************
;* ROTINA DE IMPRESSAO - RELATORIO CABECALHO                                  *
;*******************************************************************************
Proc RM_0010T_Impressao_Detalhe()

COLUNA = COLUNA + 1 

DESCRICAO_REGRA=""
GetRecord "RegraTPC" ARRAY_REGRA["CodigoDaRegra"] To REG_AUXILIAR
If RetVal
   Then DESCRICAO_REGRA = REG_AUXILIAR["DescricaoDaRegra"]
EndIf

Release Vars REGRA_DETALHE
Array REGRA_DETALHE[CONTA_REGRA]
CONTA_REGRA     = 0
SOMA_PORC_REGRA = 0

;---- Configurado para 8 Descri‡äes do custo -----------------------------------
Moveto "RegraTPD"
Moveto [CodigoDaRegra]    
Locate ARRAY_REGRA["CodigoDaRegra"]
If RetVal
   Then While [CodigoDaRegra] = ARRAY_REGRA["CodigoDaRegra"]
          CONTA_REGRA = CONTA_REGRA + 1
          SOMA_PORC_REGRA = SOMA_PORC_REGRA + [PorcentagemDoCusto]
          REGRA_DETALHE[CONTA_REGRA] = Format("W30",[DescricaoDoCusto])+Format("W10.2",[PorcentagemDoCusto])
          Skip
          If Eot() Then QuitLoop EndIf
        EndWhile   
EndIf    
   
Moveto TabelaTemp
If COLUNA=1
   Then CONTA  = 0  
        COLUNA = COLUNA + 1 
        LINHA  = LINHA + CONTA_REGRA
        For ty From 1 To 17
          Switch
           Case ty = 1  : TEXTO = "                      "
           Case ty = 2  : TEXTO = "                      "
           Case ty = 3  : TEXTO = "                      "
           Case ty = 4  : TEXTO = "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"
           Case ty = 5  : TEXTO = "³Custo Total         ³"
           Case ty = 6  : TEXTO = "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
           Case ty = 7  : TEXTO = "³Indice p/Forma‡Æo PV³"
           Case ty = 8  : TEXTO = "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
           Case ty = 9  : TEXTO = "³CMV                 ³"
           Case ty = 10 : TEXTO = "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
           Case ty = 11 : TEXTO = "³Preco Sugerido    PV³"
           Case ty = 12 : TEXTO = "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
           Case ty = 13 : TEXTO = "³Preco Praticado   PV³"
           Case ty = 14 : TEXTO = "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
           ;---------------------------------------------
           Case ty = 15 : TEXTO = "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
           Case ty = 16 : TEXTO = "³TOTAL MARK-UP       ³"
           Case ty = 17 : TEXTO = "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"
          EndSwitch
          CONTA=CONTA+1
          IMPRIME_REGRA[CONTA] = TEXTO + Spaces(2)
          If ty = 14
             Then For tu From 1 To ArraySize(REGRA_DETALHE)
                    VR_CUSTO = Rtrim(Ltrim(SubStr(REGRA_DETALHE[tu],31,10)))
                    If VR_CUSTO<>""  
                       Then VR_CUSTO = Round(NumVal(VR_CUSTO)*[PrecoSugerido]/100,2)
                    EndIf
                    CONTA = CONTA + 1
                    IMPRIME_REGRA[CONTA] = "³"+Format("w20",SubStr(REGRA_DETALHE[tu],1,20))+"³"+ Spaces(2)
                  EndFor
          EndIf
        EndFor
EndIf   
     
If COLUNA>1                                        
   Then CONTA  = 0
        For ty From 1 To 17                 
          CONTA = CONTA + 1 
          Switch
           Case ty = 1  : TEXTO = "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"
           Case ty = 2  : TEXTO = "³"+SubStr(ARRAY_REGRA["CodigoDaRegra"],1,6)+Spaces(1)+SubStr(DESCRICAO_REGRA,1,13)+"³"
           Case ty = 3  : TEXTO = "³"+Format("W20",Ltrim(SubStr(DESCRICAO_REGRA,14,20)))+"³"
           Case ty = 4  : TEXTO = "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
           Case ty = 5  : TEXTO = "³"+Format("w20.2,EIC",[CustoTotal])+"³"
           Case ty = 6  : TEXTO = "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
           Case ty = 7  : TEXTO = "³"+Format("w20.2,EIC",[IndiceFormacaoPV])+"³"
           Case ty = 8  : TEXTO = "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
           Case ty = 9  : TEXTO = "³"+Format("w20.2,EIC",[Cmv])+"³"
           Case ty = 10 : TEXTO = "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
           Case ty = 11 : TEXTO = "³"+Format("w20.2,EIC",[PrecoSugerido])+"³"
           Case ty = 12 : TEXTO = "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
           Case ty = 13 : TEXTO = "³"+Format("w20.2,EIC",[PrecoPraticado])+"³"
           Case ty = 14 : TEXTO = "ÃÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄ´"
           ;-------------------------------------------------------------------
           Case ty = 15 : TEXTO = "ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄ´"
           Case ty = 16 : TEXTO = "³"+Format("w6.2,EIC,AR",SOMA_PORC_REGRA)+"%³"+Spaces(12)+"³"
           Case ty = 17 : TEXTO = "ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÙ"
          EndSwitch
          IMPRIME_REGRA[CONTA] = IMPRIME_REGRA[CONTA] + TEXTO + Spaces(2)
          If ty = 14
             Then For tu From 1 To ArraySize(REGRA_DETALHE)
                    VR_CUSTO = Rtrim(Ltrim(SubStr(REGRA_DETALHE[tu],31,10)))
                    If VR_CUSTO<>""  
                       Then VR_CUSTO = Round(NumVal(VR_CUSTO)*[PrecoSugerido]/100,2)
                    EndIf     
                    CONTA = CONTA + 1
                    IMPRIME_REGRA[CONTA] = IMPRIME_REGRA[CONTA] + "³"+Format("w6.2,EIC,AR",Rtrim(Ltrim(SubStr(REGRA_DETALHE[tu],31,10))))+"%"+
                                                                  "³"+Format("w12.2,EIC",VR_CUSTO)+"³"+ Spaces(2)
                  EndFor
          EndIf
        EndFor      
EndIf             

EndProc ;RM_0010T_Impressao_Detalhe()

;*******************************************************************************
;* ROTINA DE IMPRESSAO - RELATORIO CABECALHO                                  *
;*******************************************************************************
Proc RM_0010T_Imprimir_Relatorio_Cabecalho()

PAG   = PAG + 1
LINHA = 13

Print File ARQIMP "\n"
Print File ARQIMP Spaces(2)+Fill("-",132)+"\n"
Print File ARQIMP Spaces(2)+Format("W30",NOMEMPRESA)+Spaces(69)+"Emissao: "+Format("D10",Today())+"-"+Time()+" Pag: "+Format("W3,AL",StrVal(PAG))+"\n"
Print File ARQIMP Spaces(2)+Fill("-",132)+"\n"
Print File ARQIMP "\n"
Print File ARQIMP Spaces(2)+Format("W132,AC","Ficha de F¢rmulas /"+VSDGNOMOPCUSTO)+"\n"
Print File ARQIMP "\n"
Print File ARQIMP Spaces(2)+"Produto: "+Format("W10",[PACodigo do Produto])+Spaces(1)+
                                        Format("W30",[PADescricao do Item])+Spaces(3)+
                         "Referencia: "+Format("W30",[PAReferencia])+Spaces(3)+
                                "Cor: "+Format("W25",[PACodigoCor_Tecido]+" "+[PADescricaoCor_Tecido])+"\n"
Print File ARQIMP Spaces(2)+"         "+Format("W10,AR",[PATipo do Item])+Spaces(1)+Format("W30",[PADescricao Tipo do Item])+"\n"
Print File ARQIMP Spaces(2)+"    Obs: "+SubStr([PAObservacoes],1,121)+"\n"
If SubStr([PAObservacoes],122,121)<>""
   Then Print File ARQIMP Spaces(2)+"         "+SubStr([PAObservacoes],122,121)+"\n" 
        LINHA = LINHA + 1
EndIf
If SubStr([PAObservacoes],243,121)<>""
   Then Print File ARQIMP Spaces(2)+"         "+SubStr([PAObservacoes],243,121)+"\n"
        LINHA = LINHA + 1
EndIf
Print File ARQIMP "\n"
Print File ARQIMP Spaces(2)+"Material                                  Cor                         Quantidade Un  Vr Unitario     Vr Total"+"\n"
Print File ARQIMP Spaces(2)+"----------------------------------------- ------------------------- ------------ -- ------------ ------------"+"\n"

EndProc ;RM_0010T_Imprimir_Relatorio_Cabecalho

;*******************************************************************************
;* ROTINA DE IMPRESSAO - SUTOTAL                                               *
;*******************************************************************************
Proc RM_0010T_Imprime_SubTotal()

If TIPO_ITEM="M" Then TOT_MP = TOT_TIPO EndIf

LINHA = LINHA + 2
Print File ARQIMP Spaces(2)+Spaces(97)+"------------"+"\n"
Print File ARQIMP Spaces(2)+Spaces(85)+"SubTotal... "+Format("W12.2,EIC",TOT_TIPO)+"\n"                 
 
EndProc ;RM_0010T_Imprime_SubTotal()

;*******************************************************************************
;* ROTINA DE IMPRESSAO - RODAPE                                                *
;*******************************************************************************
Proc RM_0010T_Imprime_Rodape()

RM_0010T_Imprime_SubTotal()

LINHA = LINHA + 6
Print File ARQIMP Spaces(2)+Spaces(97)+"------------"+"\n"
Print File ARQIMP Spaces(2)+Spaces(88)+"Total... "+Format("W12.2,EIC",TOTAL)+"/"+
                                                   Format("W10.3",REGISTRO["PAQuantidade Produzida"])+" = "+
                                                   Format("W11.5",REGISTRO["PACusto Unitario"])+"\n"
Print File ARQIMP Spaces(2)+Spaces(102)+"Indice Preco Venda = "+Format("W12.2,EIC",REGISTRO["PAIndice Preco de Venda"])+"%"+"\n"
Print File ARQIMP Spaces(2)+Spaces(99)+"Preco Venda Calculado = "+Format("W12.2,EIC",REGISTRO["PAPrecodeVenda_Calculado"])+"\n"
Print File ARQIMP Spaces(2)+Spaces(100)+"Preco Venda Praticar = "+Format("W12.2,EIC",REGISTRO["PAPrecodeVenda_Livre"])+"\n"
Print File ARQIMP "\n"     

RM_0010T_ImprimirPV()
                                                  
EndProc ;RM_0010T_Imprime_Rodape()

;*******************************************************************************
;* ROTINA DE IMPRESSAO - RELATORIO                                             *
;*******************************************************************************
Proc RM_0010T_Imprimir_Relatorio()

ARQIMP=PrivDir()+"RM_0010T.Txt"
If IsFile(ARQIMP) Then Deleta_Arquivo(ARQIMP) EndIf

Print File ARQIMP CI_15CPP
Print File ARQIMP CI_6LPP

PAG        = 0
TOT_TIPO   = 0
TOT_MP     = 0
TOTAL      = 0   
CODIGO_PAI = ""
REF_PAI    = "" 
TIPO_ITEM  = ""

View "RegraTPC"
View "RegraTPD"
View "\\Sistemas\\Estoque\\Itens"
View TabelaTemp
View "Answer"
Scan
  If [PACodigo do Produto]<>CODIGO_PAI
     Then GetRecord "\\Sistemas\\Estoque\\Itens" [PACodigo do Produto] To REG_BUSCA_LOOKUP
          If CODIGO_PAI=""
            Then RM_0010T_Imprimir_Relatorio_Cabecalho() 
            Else RM_0010T_Imprime_Rodape()
                 Print File ARQIMP "\f"
                 RM_0010T_Imprimir_Relatorio_Cabecalho()
          EndIf        
          CODIGO_PAI = [PACodigo do Produto]
          REF_PAI    = [PAReferencia]
          TIPO_ITEM  = ""
          CopyToArray REGISTRO
  EndIf                                                                
  
  If TIPO_ITEM<>[MPTipo do Item]
     Then If TIPO_ITEM<>""
             Then RM_0010T_Imprime_SubTotal()
                  LINHA = LINHA + 1
                  Print File ARQIMP "\n"             
          EndIf
          TIPO_ITEM=[MPTipo do Item] 
          Print File ARQIMP Spaces(2)+Format("W1",[MPTipo do Item])+" "+[MPDescricao Tipo do Item]+"\n"
          TOT_TIPO = 0
          LINHA = LINHA + 1
  EndIf   
  TOT_TIPO = TOT_TIPO+([MPQuantidade]*[MPValor Unitario])
  TOTAL    = TOTAL   +([MPQuantidade]*[MPValor Unitario])
  LINHA = LINHA + 1
  Print File ARQIMP Spaces(2)+Format("W10",[MPCodigo do Material])+Spaces(1)+
                              Format("W30",[MPDescricao do Item ])+Spaces(1)+
                              Format("W25",[MPCodigoCor_Tecido ]+" "+[MPDescricaoCor_Tecido ])+Spaces(1)+
                              Format("W12.2",[MPQuantidade])+Spaces(1)+
                              Format("W2",[MPUnidade Interna ])+Spaces(1)+
                              Format("W12.2,EIC",[MPValor Unitario])+Spaces(1)+
                              Format("W12.2,EIC",[MPQuantidade]*[MPValor Unitario])+"\n"
  
EndScan
RM_0010T_Imprime_Rodape()
ClearAll

EndProc ;RM_0010T_Imprimir_Relatorio()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc RM_0010T_Principal()
AGUARDE("Aguarde, Gerando o Relat¢rio")

RM_0010T_Pega_Referencia_MaiorCusto()
If Not RM_0010T_Monta_RelatorioPV()
   Then MENSAGEM("N„o existem registros a processar")
        RM_0010T = False
        Return 
   Else ImpriArq(ARQIMP)     
EndIf                          

EndProc

;-- Chamada principal ----------------------------------------------------------
RM_0010T_Principal()

Release Vars Tabela
Release Procs RM_0010T_Principal, RM_0010T_Pega_Referencia_MaiorCusto, RM_0010T_Monta_Array, 
              RM_0010T_Monta_RelatorioPV, RM_0010T_ImprimirPV, RM_0010T_Impressao_Detalhe, 
              RM_0010T_Imprimir_Relatorio_Cabecalho, RM_0010T_Imprime_SubTotal,RM_0010T_Imprime_Rodape, 
              RM_0010T_Imprimir_Relatorio