'Nome       : CtaIvaAnx.std
'Tipo       : LST
'Data       : 2008/05/10
'Versao     : 1.0a
'Descricao  : Anexos do IVA

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.0a  2008/??/?? --------------------------------------------------
'Coluna para modo de acumulacao

'- Versao : 1.0   2008/03/29 --------------------------------------------------
'Versao base


'==============================================================================
#DEF - Definicao global do documento
'==============================================================================
Caracteres invalidos             [CarInv]=#
Subtotalizadores                 [SbtNiv]=2
##


'==============================================================================
#ESP - Campos especificos
'==============================================================================
'Especifico 1                      [EspOp1]=Opcao 1
##


'==============================================================================
#DOC_x - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=IvaAnx
Nome                       [DocNom]=IvaAnx,Anexos do IVA

'formato
Saida/Impressora           [DocPrt]=
Linhas por pagina          [DocLpg]=50
Colunas por linha          [DocCol]=132
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0

'especifico do documento
Opcao especifica           [DocEsp]=OpcEsp=???


'funcoes de listagem
Listar cabecalho            [FxCAB]=IvaAnxTxt_Cab
Listar linhas               [FxLIN]=IvaAnxTxt_Lin; Res; Grp; Sbt,2; Sep
Listar fim                  [FxFIM]=IvaAnxTxt_Fim
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=IvaAnx
Nome                       [DocNom]=IvaAnxXls,Anexos do IVA (XLS)

'formato
Saida/Impressora           [DocPrt]=NULA
'Saida/Impressora           [DocPrt]=
Linhas por pagina          [DocLpg]=50
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0

'especifico do documento
Opcao especifica           [DocEsp]=OpcEsp=???


'funcoes de listagem
Base para documento         [FxDOC]=IvaAnxXls
Listar cabecalho            [FxCAB]=IvaAnxXls_Cab
Listar linhas               [FxLIN]=IvaAnxXls_Lin, 0; Res,0; Grp,0; Sbt,0; Sep,0; Per, 0
Listar fim                  [FxFIM]=IvaAnxXls_Fim

Matriz auxiliar            [DocMat]=CtaIvaAnx.xls
##


'==============================================================================
#VAR - Variaveis
'==============================================================================
'------------------------------------------------------------------------------
'Lista de variaveis especificas
'------------------------------------------------------------------------------
'valores texto
'MemTxt$(01)   - Titulo da listagem
'MemTxt$(11)   - ?


'------------------------------------------------------------------------------
'Formatacao de valores
'------------------------------------------------------------------------------
Pag       = Doc_CntPag
Cnt       = FrmVal$(CntAux(1),21,4)

Tit080    = TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",ideCab$)
Tit132    = TxTit$("TT=16CPI, LD, PT=66C",ideCab$)

DataExt   = FrmDt$("EXT",Sig_DtHoje)


'registo
'-----------------------------------------------------------
vPerCtb   = RegZon$+" "+RegCtb$                             'contribuinte

vPerCt    = RegCt$                                          'conta
vPerIde   = left$(RegIde$,30)                               'identificacao
vPerObs   = RegCt$                                          'observacoes

vPerUsa   = regPerUsa$                                      'periodo

vPerVto   = FrmNum$(11.2, RegDVto)                          'valor de documento
vPerInc   = FrmNum$(11.2, RegDInc)                          'valor de incidencia
vPerIva   = FrmNum$(11.2, RegPIva)                          'valor do IVA
vPerReb   = FrmNum$(11.2, RegPReb)                          'valor de reembolso

tPerInc   = FrmNum$(11.2, Total(vPerInc,0))                 'total de incidencia
tPerIva   = FrmNum$(11.2, Total(vPerIva,0))                 'total de IVA
tPerReb   = FrmNum$(11.2, Total(vPerReb,0))                 'total de reembolso

sPerInc   = FrmNum$(11.2, Total(vPerInc,1))                 'subtotal de incidencia
sPerIva   = FrmNum$(11.2, Total(vPerIva,1))                 'subtotal de IVA
sPerReb   = FrmNum$(11.2, Total(vPerReb,1))                 'subtotal de reembolso


'acumulados
'-----------------------------------------------------------
vAcmDiv   = FrmNum$(11.2, acmDiv)                           'valores diversos
vAcmDivP  = FrmNum$( 3.2, acmPdi)+"%"                       '% de valores diversos
##


'==============================================================================
#PGM - Programa/Funcoes
'==============================================================================
'---------------------------------------------------------->'Comentario (61)
'------------------------------------------------------->'Comentario (58)
'---------------------------------------------------->'Comentario (55)
'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)


'==============================================================================
'= COM = Funcoes comuns =======================================================
'==============================================================================
Sub Lst_AJT
'nada a executar
end sub


Sub ComVarPerPrp 'preparar valores do periodo
perRef   = VarCom("PerRef")                'perido de referencia
perIde$  = VarCom$("PerIde")               'identificacao do periodo
end sub


Sub ComVarRegPrp 'preparar valores do registo
regOpc$ = VarCom$("RegOpc")               'campos opcionais
regTdo$ = VarCom$("RegTdo")               'tipo de documento
regNdo$ = VarCom$("RegNdo")               'numero de documento
regDt   = VarCom("RegDt")                 'data do documento
regTpr$ = VarCom$("RegTpr")               'tipo de registo
regCt$  = VarCom$("RegCt")                'conta
regIde$ = VarCom$("RegIde")               'identificacao
regTv$  = VarCom$("RegTv")                'tipo de valor
regAcm  = VarCom("RegAcm")                'modo de acumulacao
regZon$ = VarCom$("RegZon")               'zona
regCtb$ = VarCom$("RegCtb")               'contribuinte

regDVto = VarCom("RegDVto")               'documento - valor total
regDInc = VarCom("RegDInc")               'documento - valor de incidencia
regDIva = VarCom("RegDIva")               'documento - valor do IVA

regPInc = VarCom("RegPInc")               'parcial - valor de incidencia
regPIva = VarCom("RegPIva")               'parcial - valor do IVA
regPReb = VarCom("RegPReb")               'parcial - valor de reembolso

regTip$ = VarCom$("RegVtip")              'valores por tipo
regObs$ = VarCom$("RegObs")               'observacoes

regIde$ = VarCom$("RegIde")               'identificacao

'periodo
regPerN    = VarCom("RegPer")             'periodo
regPerAnoN = VarCom("RegPerAno")          'ano
regPerMesN = VarCom("RegPerMes")          'mes

regPerUsa$ = VarCom$("RegPerUsa")         'periodo
regPerAno$ = VarCom$("RegPerAno")         'ano
regPerMes$ = VarCom$("RegPerMes")         'mes


regDocPerIde$ = VarCom$("RegDocPerIde")   'periodo - identificacao

regNdv$ = FrmNdo$("46",regTdo$,regNdo$)   'formatar numero de documento
regDoc$ = regTdo$ + " " + regNdv$         'documento

'call ComVarResPrp 'preparar valores do resumo
end sub


Sub ComVarRegAcm 'acumular valores do registo
vInc = RegPInc * regAcm                   'valor de incidencia
vIva = RegPIva * regAcm                   'valor do IVA
vReb = RegPReb * regAcm                   'valor de reembolso

'acumular
res = AcmExe("vPerInc", vInc)             'valor de incidencia
res = AcmExe("vPerIva", vIva)             'valor do IVA
res = AcmExe("vPerReb", vReb)             'valor de reembolso
end sub


Sub ComVarResPrp 'preparar valores do resumo
resTpr$ = VarCom$("ResTpr")               'tipo de registo
resTpv$ = VarCom$("ResTpv")               'tipo de valor
resZon$ = VarCom$("ResZon")               'zona
resCtb$ = VarCom$("ResCtb")               'contribuinte
resIde$ = VarCom$("ResIde")               'identificacao
resObs$ = VarCom$("ResObs")               'observacoes

resInc = VarCom("ResInc")                 'valor de incidencia
resIva = VarCom("ResIva")                 'valor do IVA
resReb = VarCom("ResReb")                 'valor e reembolso

'periodo
resPerN    = VarCom("ResPer")             'periodo
resPerAnoN = VarCom("ResPerAno")          'ano
resPerMesN = VarCom("ResPerMes")          'mes

resPerUsa$ = VarCom$("ResPerUsa")         'periodo
resPerAno$ = VarCom$("ResPerAno")         'ano
resPerMes$ = VarCom$("ResPerMes")         'mes

'simular valores do registo
regAcm  = 1                               'modo de acumulacao
regPInc = ResInc                          'parcial - valor de incidencia
regPIva = ResIva                          'parcial - valor do IVA
regPReb = ResReb                          'parcial - valor de reembolso
end sub


Sub ComVarAcmPrp 'preparar dados de acumulados
acmDoc  = VarCom("AcmDoc")                'documentos
acmInc  = VarCom("AcmInc")                'incidencia
acmIva  = VarCom("AcmIva")                'IVA
acmReb  = VarCom("AcmReb")                'reembolso

acmDiv  = VarCom("AcmDiv")                'diversos
acmPdi  = VarCom("AcmPdi")                '% de diversos
end sub


'==============================================================================
'= LST - Listar ===============================================================
'==============================================================================
Sub IvaAnxTxt_Cab 'cabecalho
FxDiv LstIde,16CPI,0

'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)
ide$    = Memtxt$(1)                   'identificacao
tpe$    = VarCom$("IdeTpe")            'tipo de entidade
ideCab$ = ide$ + " - " + tpe$          'identificacao de cabecalho

?@Tit132                                                                                                                            #
?Data : @DataExt                                                                                                      Folha No: @Pag#
?====================================================================================================================================
'  Contribuinte         Documentos     Incidencia        IVA          Reembolso #
'123456789.12345      123,456,789.00 123,456,789.00 123,456,789.00 123,456,789.00
'                     12345678901.12 12345678901.12 12345678901.12 12345678901.12

?  Contribuinte   Nome                            Ano/Mes     Documentos     Incidencia        IVA          Reembolso    Observações#
'123456789.12345  123456789.123456789.123456789.  1234/12   123,456,789.00 123,456,789.00 123,456,789.00 123,456,789.00
'                                                           12345678901.12 12345678901.12 12345678901.12 12345678901.12  123456789.12

?====================================================================================================================================
'print string$(132,"-")
end sub


Sub IvaAnxTxt_LinGrp 'identificacao de grupo
ideTpv$ = VarCom$("IdeTpv")            'tipo de valor

print tab(10) ideTpv$                  'listar identificacao
end sub


Sub IvaAnxTxt_Lin 'linha
msgbox "","Passei aqui"

call ComVarPerPrp                                  'preparar valores do periodo
call ComVarRegAcm                                  'acumular valores

?@vRegCtb         @vRegIde                        @vRegPer  @vRegVdoc      @vRegVinc      @vRegViva      @vRegVreb       @vRegObs   #
end sub


Sub IvaAnxTxt_LinSbt 'subtotal de grupo
?    Subtotal:                                              @sRegVdoc      @sRegVinc      @sRegViva      @sRegVreb                  #

print                                  'separar
x=TotLpz(1)                            'limpar totais
end sub


Sub IvaAnxTxt_LinSep 'linha de separacao
print                                  'separar
end sub


Sub IvaAnxTxt_Fim
call ComVarAcmPrp                      'preparar dados de acumulados

?====================================================================================================================================
?    Totais:                                                @tRegVdoc      @tRegVinc      @tRegViva      @tRegVreb                  #
?    Diversos:                                                                                           @vAcmDiv        @vAcmDivP  #
?====================================================================================================================================
FxDiv LstPer,SP
end sub


'==============================================================================
'= Listagem para EXCEL ========================================================
'==============================================================================
'---------------------------------------------------------->'Comentario (61)
'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)

Sub IvaAnxXls_DocIni 'inicializar documento
'msgbox "","DocIni"

xlsOpcNfi$ = "RND:CtaIvaAnx.xls"                   'nome do ficheiro a gerar
xlsOpcWks$ = ""                                    'nome da woorksheet

call XlsComDoc_IniMat                              'inicializar documento por matriz

'preparacao especifica
res = XlsWks("Valores")                            'activar worksheet

'preparar cabecalho
empNum$ = Emp_Inf_Cod$                             'numero da empresa
empNom$ = Emp_Inf_Nome$                            'nome da empresa
lstTit$ = MemTxt$(1)                               'titulo da listagem
lstTip$ = MemTxt$(2)                               'tipo da listagem
lstDt$  = FrmDt$("EXT", Sig_DtHoje)                'data para listagem

'msgbox "","Tit",lstTit$

'ide$    = Memtxt$(1)                               'identificacao
ide$    = VarCom$("IdeTit")                        'identificacao
tpe$    = VarCom$("IdeTpe")                        'tipo de entidade
ideCab$ = ide$ + " - " + tpe$                      'identificacao de cabecalho

res = XlsIdeLst("Emp_Num", empNum$)                'numero da empresa
res = XlsIdeLst("Emp_Nom", empNom$)                'nome da empresa
'res = XlsIdeLst("Lst_Tit", lstTit$)                'titulo da listagem
res = XlsIdeLst("Lst_Tit", ideCab$)                'titulo da listagem
res = XlsIdeLst("Lst_Tipo", lstTip$)               'tipo da listagem
res = XlsIdeLst("Lst_Data", lstDt$)                'data

call XlsComLin_Ini                                 'iniciar linhas

'definicao das colunas
coZon = 2                                          'zona
coCtb = 3                                          'contribuinte
coIde = 4                                          'identificacao
coDoc = 5                                          'documento
coPer = 6                                          'periodo
coVdo = 7                                          'valor doc
coAcm = 8                                          'acumulacao
coInc = 9                                          'incidencia
coIva = 10                                         'IVA
coReb = 11                                         'reembolso
coObs = 12                                         'observacoes
end sub


Sub IvaAnxXls_DocFim 'terminar documento
'res = XlsWksAct("A", 1)                            'activar worksheet
call XlsComDoc_Fim                                 'terminar/mostrar documento
end sub


Sub IvaAnxXls_IncLin 'incrementar linha
call XlsComLin_IncRep                              'incrementar linha + repor formato normal

zon$ = XlsZon$(liUsa, coCtb)                       'zona
res = XlsAli(zon$, "4")                            'alinhamento
end sub


Sub IvaAnxXls_LinPer 'identificacao do periodo
call IvaAnxXls_IncLin                              'incrementar linha

call ComVarPerPrp                                  'preparar valores do periodo

vIde$ = "Periodo: " + perIde$                      'informacao
res = XlsLst(liUsa, coIde, vIde$)                  'identificacao

'ajustar aspecto
zon$= XlsZonNum$("L", liUsa)                       'zona da linha
res = XlsFon(zon$, ",,I+")                         'activar fonte italico

zon$= XlsZon$(liUsa, coZon, liUsa, coObs)          'zona para border
res = XlsEnvZon(zon$, "T,B", "C", "F", 1)          'desenhar border
'res = XlsEnvZon(zon$, "T,B", "C", "M", 1)          'desenhar border
End sub


Sub IvaAnxXls_LinGrp 'identificacao de grupo
call IvaAnxXls_IncLin                              'incrementar linha
ideTpv$ = VarCom$("IdeTpv")                        'tipo de valor

res = XlsLst(liUsa, coCtb, ideTpv$)                'identificacao de grupo
call XlsComLin_ActB                                'activar linha em BOLD
end sub


Sub IvaAnxXls_Lin 'linha de valores
call IvaAnxXls_IncLin                              'incrementar linha

call ComVarRegPrp                                  'preparar valores
call ComVarRegAcm                                  'acumular valores

vZon$   = regZon$                                  'zona
vCtb$   = regCtb$                                  'contribuinte
vIde$   = regIde$                                  'identificacao
vPer$   = regDocPerIde$                            'periodo
vObs$   = regCt$                                   'observacoes

'listar
res = XlsLst(liUsa, coZon, vZon$)                  'zona
res = XlsLst(liUsa, coCtb, vCtb$)                  'contribuinte
res = XlsLst(liUsa, coIde, vIde$)                  'identificacao

res = XlsLst(liUsa, coDoc, RegDoc$)                'documento
res = XlsLst(liUsa, coPer, vPer$)                  'periodo
res = XlsLst(liUsa, coVdo, RegDVto)                'valor documento

res = XlsLst(liUsa, coAcm, RegAcm)                 'acumulacao
res = XlsLst(liUsa, coInc, RegPInc)                'incidencia
res = XlsLst(liUsa, coIva, RegPIva)                'IVA
res = XlsLst(liUsa, coReb, RegPReb)                'reembolso

res = XlsLst(liUsa, coObs, vObs$)                  'observacoes
end sub


Sub IvaAnxXls_LinRes 'linha de valores - resumo
call IvaAnxXls_IncLin                              'incrementar linha

call ComVarResPrp                                  'preparar valores
call ComVarRegAcm                                  'acumular valores

vZon$   = resZon$                                  'zona
vCtb$   = resCtb$                                  'contribuinte
vIde$   = resIde$                                  'identificacao
vPer$   = resPerUsa$                               'periodo
vObs$   = resObs$                                  'observacoes

'listar
res = XlsLst(liUsa, coZon, vZon$)                  'zona
res = XlsLst(liUsa, coCtb, vCtb$)                  'contribuinte
res = XlsLst(liUsa, coIde, vIde$)                  'identificacao

res = XlsLst(liUsa, coPer, vPer$)                  'periodo

res = XlsLst(liUsa, coAcm, RegAcm)                 'acumulacao
res = XlsLst(liUsa, coInc, resInc)                 'incidencia
res = XlsLst(liUsa, coIva, resIva)                 'IVA
res = XlsLst(liUsa, coReb, resReb)                 'reembolso

res = XlsLst(liUsa, coObs, vObs$)                  'observacoes
end sub


Sub IvaAnxXls_LinSbt 'subtotal de grupo
call IvaAnxXls_IncLin                              'incrementar linha

vZon$   = ""                                       'zona
vCtb$   = "Subtotal"                               'contribuinte

'listar
res = XlsLst(liUsa, coZon, vZon$)                  'zona
res = XlsLst(liUsa, coCtb, vCtb$)                  'contribuinte

sbtVinc = Total("vPerInc",1)                       'subtotal de incidencia
sbtViva = Total("vPerIva",1)                       'subtotal de IVA
sbtVreb = Total("vPerReb",1)                       'subtotal de reembolso

res = XlsLst(liUsa, coInc, sbtVinc)                'incidencia
res = XlsLst(liUsa, coIva, sbtViva)                'IVA
res = XlsLst(liUsa, coReb, sbtVreb)                'reembolso

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
zon$ = XlsZon$(liUsa, coCtb)                       'zona
res = XlsAli(zon$, "5")                            'alinhamento

call IvaAnxXls_IncLin                              'incrementar linha
x=TotLpz(1)                                        'limpar totais
end sub


Sub IvaAnxXls_LinSep 'linha de separacao
call IvaAnxXls_IncLin                              'incrementar linha
end sub


'- Terminar/Totais ------------------------------------------------------------
Sub IvaAnxXls_Fim 'terminar
call XlsComLin_Fim                                 'fim de linhas
call ComVarAcmPrp                                  'preparar dados de acumulados

ltoUsa = LinFim                                    'linha para totais
liUsa  = ltoUsa                                    'linha a usar

totVinc = Total("vPerInc",0)                       'total de incidencia
totViva = Total("vPerIva",0)                       'total de IVA
totVreb = Total("vPerReb",0)                       'total de reembolso

res = XlsLst(liUsa, coInc, totVinc)                'incidencia
res = XlsLst(liUsa, coIva, totViva)                'IVA
res = XlsLst(liUsa, coReb, totVreb)                'reembolso

'valores diversos
liUsa  = ltoUsa + 1                                'linha a usar

vDivPer = acmPdi / 100                             '% de valores diversos

res = XlsLst(liUsa, coReb, acmDiv)                 'valor
res = XlsLst(liUsa, coObs, vDivPer)                '% de valores diversos

'terminar/mostrar
'res = XlsWksAct("A", 1)                            'activar worksheet
end sub

##


'==============================================================================
#INC - Funcoes comuns
'==============================================================================
Funcoes comuns                    =[SIG_Dir.Div],LsComPgm.std
Funcoes comuns XLS                =[SIG_LST_DIR.XLS],XlsCom_Pgm.inc
##

