-
Notifications
You must be signed in to change notification settings - Fork 39
Description
' =============================================
' PLANILHA FINANCEIRA - CONTROLE DE DESPESAS
' UNIVERSO.JS INTEGRATION
' =============================================
' CONFIGURAÇÃO INICIAL DA PLANILHA
SET WORKSHEET NAME = "Controle Financeiro"
SET DEFAULT FONT = "Arial"
SET DEFAULT FONT SIZE = 10
' DEFINIR LARGURAS DAS COLUNAS
SET COLUMN WIDTH A = 12 ' DATA
SET COLUMN WIDTH B = 30 ' DESCRIÇÃO
SET COLUMN WIDTH C = 15 ' CATEGORIA
SET COLUMN WIDTH D = 20 ' TIPO
SET COLUMN WIDTH E = 15 ' VALOR
SET COLUMN WIDTH F = 20 ' STATUS
SET COLUMN WIDTH G = 15 ' CATEGORIA AUTO
' CABEÇALHO
SET CELL A1 = "DATA"
SET CELL B1 = "DESCRIÇÃO"
SET CELL C1 = "CATEGORIA"
SET CELL D1 = "TIPO"
SET CELL E1 = "VALOR (R$)"
SET CELL F1 = "STATUS"
SET CELL G1 = "CATEGORIA AUTO"
SET ROW COLOR 1 = "#2E86AB"
SET FONT COLOR 1 = "White"
SET FONT STYLE 1 = "Bold"
' === FUNÇÕES QUE PODEM SER USADAS EM FÓRMULAS ===
' FUNÇÃO PARA DETECTAR CATEGORIA AUTOMATICAMENTE
FORMULA CATEGORIA_AUTO(descricao)
SET desc = UPPER(descricao)
IF CONTAINS(desc, ["MERCAD", "SUPER", "HORTIFRUTI", "PADARIA"]) THEN
RETURN "Alimentação"
ELSE IF CONTAINS(desc, ["ALUGUEL", "CONDOMÍNIO", "ENERGIA", "ÁGUA", "INTERNET"]) THEN
RETURN "Moradia"
ELSE IF CONTAINS(desc, ["GASOLINA", "ÔNIBUS", "METRÔ", "UBER", "TAXI", "ESTACIONAMENTO"]) THEN
RETURN "Transporte"
ELSE IF CONTAINS(desc, ["FARMÁCIA", "MÉDICO", "DENTISTA", "PLANO DE SAÚDE"]) THEN
RETURN "Saúde"
ELSE IF CONTAINS(desc, ["CINEMA", "RESTAURANTE", "VIAGEM", "HOBBIE"]) THEN
RETURN "Lazer"
ELSE
RETURN "Outros"
END IF
END FORMULA
' FUNÇÃO PARA CALCULAR STATUS FINANCEIRO
FORMULA STATUS_PAGAMENTO(data_vencimento, data_pagamento, valor)
SET hoje = TODAY()
SET vencimento = DATE(data_vencimento)
IF data_pagamento <> "" THEN
RETURN "Pago"
ELSE IF hoje > vencimento THEN
RETURN "Atrasado"
ELSE IF (vencimento - hoje) <= 5 THEN
RETURN "Próximo do Vencimento"
ELSE
RETURN "Pendente"
END IF
END FORMULA
' FUNÇÃO PARA CALCULAR MÉDIA MENSAL
FORMULA MEDIA_MENSAL(range_datas, range_valores, mes_referencia)
SET total = 0
SET contador = 0
FOR i = 1 TO LENGTH(range_datas)
SET data_atual = range_datas[i]
SET mes_data = MONTH(data_atual)
SET ano_data = YEAR(data_atual)
IF mes_data = MONTH(mes_referencia) AND ano_data = YEAR(mes_referencia) THEN
SET total = total + range_valores[i]
SET contador = contador + 1
END IF
NEXT i
IF contador > 0 THEN
RETURN total / contador
ELSE
RETURN 0
END IF
END FORMULA
' FUNÇÃO PARA CLASSIFICAR TIPO DE TRANSAÇÃO
FORMULA CLASSIFICAR_TIPO(descricao, valor)
SET desc_upper = UPPER(descricao)
IF CONTAINS(desc_upper, ["SALÁRIO", "SALARIO", "PAGAMENTO", "RECEBIMENTO", "VENDA"]) THEN
RETURN "Receita"
ELSE IF valor < 0 THEN
RETURN "Despesa"
ELSE
RETURN "Receita"
END IF
END FORMULA
' === APLICAÇÃO PRÁTICA NAS CÉLULAS ===
' EXEMPLO DE USO DAS FÓRMULAS NAS CÉLULAS
SET CELL G2 = FORMULA(CATEGORIA_AUTO(B2))
SET CELL D2 = FORMULA(CLASSIFICAR_TIPO(B2, E2))
SET CELL F2 = FORMULA(STATUS_PAGAMENTO(A2, "", E2))
' COPIAR FÓRMULAS PARA TODAS AS LINHAS
SET AUTO FILL G2:G100 FROM G2
SET AUTO FILL D2:D100 FROM D2
SET AUTO FILL F2:F100 FROM F2
' === TOTALIZADORES COM FÓRMULAS ===
' LINHA DE TOTALIZAÇÃO
SET LINHA_TOTAL = LAST ROW + 2
SET CELL A & LINHA_TOTAL = "TOTAIS:"
SET FONT STYLE A & LINHA_TOTAL = "Bold"
SET CELL B & LINHA_TOTAL = "Receitas:"
SET CELL C & LINHA_TOTAL = FORMULA(SUMIF(D2:D100, "Receita", E2:E100))
SET FONT COLOR C & LINHA_TOTAL = "Green"
SET CELL B & LINHA_TOTAL + 1 = "Despesas:"
SET CELL C & LINHA_TOTAL + 1 = FORMULA(SUMIF(D2:D100, "Despesa", E2:E100))
SET FONT COLOR C & LINHA_TOTAL + 1 = "Red"
SET CELL B & LINHA_TOTAL + 2 = "Saldo:"
SET CELL C & LINHA_TOTAL + 2 = FORMULA(C & LINHA_TOTAL - C & LINHA_TOTAL + 1)
' FORMATAÇÃO CONDICIONAL DO SALDO
SET CONDITIONAL FORMAT C & LINHA_TOTAL + 2
IF VALUE < 0 THEN
SET FONT COLOR = "Red"
SET FONT STYLE = "Bold"
ELSE
SET FONT COLOR = "DarkGreen"
SET FONT STYLE = "Bold"
END IF
END CONDITIONAL
' === DASHBOARD COM FÓRMULAS ===
SET CELL I1 = "DASHBOARD"
SET FONT STYLE I1 = "Bold"
SET FONT SIZE I1 = 12
SET CELL I2 = "Média Mensal:"
SET CELL J2 = FORMULA(MEDIA_MENSAL(A2:A100, E2:E100, TODAY()))
SET CELL I3 = "Maior Despesa:"
SET CELL J3 = FORMULA(MAXIF(E2:E100, D2:D100, "Despesa"))
SET CELL I4 = "Total de Categorias:"
SET CELL J4 = FORMULA(COUNTUNIQUE(C2:C100))
' === WEBSERVICE INTEGRATION ===
' FUNÇÃO PARA EXPORTAR DADOS VIA WEBSERVICE
FORMULA EXPORTAR_JSON(range_dados)
SET json_data = "{"
SET json_data = json_data & """planilha"": ""Controle Financeiro"","
SET json_data = json_data & """timestamp"": """ & NOW() & ""","
SET json_data = json_data & """transacoes"": ["
FOR i = 1 TO ROWS(range_dados)
SET linha = range_dados[i]
SET json_data = json_data & "{"
SET json_data = json_data & """data"": """ & linha[1] & ""","
SET json_data = json_data & """descricao"": """ & linha[2] & ""","
SET json_data = json_data & """categoria"": """ & linha[3] & ""","
SET json_data = json_data & """valor"": " & linha[5]
SET json_data = json_data & "}"
IF i < ROWS(range_dados) THEN
SET json_data = json_data & ","
END IF
NEXT i
SET json_data = json_data & "]}"
RETURN json_data
END FORMULA
' BOTÃO PARA EXPORTAR
SET BUTTON "Exportar para JSON" AT H1
SET ACTION = CALL_WEBSERVICE("https://api/export", FORMULA(EXPORTAR_JSON(A2:G100)))
END BUTTON
' APLICAR FORMATAÇÃO FINAL
CALL APLICAR_FORMATACAO()
SUB APLICAR_FORMATACAO()
SET RANGE A1:G100
SET BORDER STYLE = "Thin"
SET AUTO FIT COLUMNS
SET FREEZE PANES AT ROW 2
' FORMATAÇÃO DE MOEDA
SET RANGE E2:E100
SET NUMBER FORMAT = "Currency"
SET DECIMAL PLACES = 2
END SUB