segunda-feira, 12 de março de 2012

Manipulação de arquivos texto no delphi


Bem, vamos falar inicialmente da escrita de arquivos texto. Existem algumas palavras reservadas, das quais irei falar de apenas algumas delas, que serão abordadas neste artigo. Para conhecer todas as palavras reservadas, relacionadas a manipulação de arquivos, entrem no help do Delphi com o seguinte tema: "Input and output procedures and functions"

Palavra Reservada
Função
AssignFile
Associa o arquivo manipulado a uma variável do tipo File
Append
Abre um arquivo existente para inserção de novos dados
Eof
Verifica se a posição atual do cursor indica o fim do arquivo
Write / Rewrite
Escreve valores diversos no arquivo. O rewrite após a escrita posiciona o cursor na próxima linha do arquivo
Read / Readln
Lê diversos valores no arquivo. O readln após a leitura posiciona o cursor na próxima linha do arquivo

Bem, irei agora explicitar dois exemplos contendo a manipulação de arquivos textos. O primeiro deles, ilustrará a inserção de dados em um arquivo. O segundo irá ilustrar a leitura de dados.

function GravaArquivoLogTransacao(TipoTransacao: TTipoTransacao): Integer;
const
NomArquivo: String = "LogTransacao.txt";
var
Path: String;
Arquivo: TextFile;
begin
        Path := ExtractFilePath(Application.ExeName);
        if not DirectoryExists(Path) then begin
                CreateDir(Path);
        end;
        if not FileExists(Path + NomArquivo) then begin
                FileCreate(Path + NomArquivo);
        end;
        Try
        AssignFile(Arquivo, Path + NomArquivo);
        Append(Arquivo);
        Write(Arquivo, FormatFloat("000000", Transacao.TransactionID) + " / " + FormatFloat("000000", Transacao.GlobalID));
        case TipoTransacao of
        ttBeginTran: WriteLn(Arquivo, " - BeginTran: " + DateToStr(Date) + " " + TimeToStr(Time) + " por usuário: " + IntToStr(UserID));
        ttCommit: WriteLn(Arquivo, " - Commit: " + DateToStr(Date) + " " + TimeToStr(Time) + " por usuário: " + IntToStr(UserID));
        ttRollBack: WriteLn(Arquivo, " - RollBack: " + DateToStr(Date) + " " + TimeToStr(Time) + " por usuário: " + IntToStr(UserID));
end;
CloseFile(Arquivo);
Result := 1;
Except
Result := -1;
End;
end;
Na função acima, ilustro a geração de um log de transações de uma aplicação. Observe que as palavras que realizam a "escrita" no arquivo estão destacadas.
procedure LeArquivoLogTransacao(NomeArquivo: String);
var
strFile: TextFile;
strLine: String;
begin
        AssignFile(strFile, NomeArquivo);
        Reset(strFile);
        Readln(strFile, strLine);
        while not Eof(strFile) do begin
                ShowMessage(strLine);
                Readln(strFile, strLine);
        end;
end;
Já na função acima, realizamos a leitura do arquivo e lançamos uma mensagem contato o conteúdo lido a cada linha.

Como calcular preço de venda [passo-a-passo]


O Brasil tem um mercado informal  muito aberto e, muitas vezes, os trabalhadores autônomos se perdem ao calcular o preço de seus produtos de forma a pagar todas as suas despesas e ainda tirar um lucro legal. Existem alguns cursos voltados para este fim, com dicas de criação, formação de preço e gerenciamento do seu negócio (o SEBRAE é um excelente exemplo disso). Mas para uma pergunta simples, existe também respostas simples. Para facilitar a vida desses pequenos negócios, o Formigueiros também é cultura e explica passo-a-passo como se calcula o preço de venda de um produto. Para calcular é preciso ter as informações conforme exemplo abaixo:

1) Custo unitário do produto: R$ 12,50;
2) Percentual de despesas variáveis*: 9% (sendo 4% do simples nacional + 5% da comissão de vendas);
3) Percentual de despesas fixas**: 25% (esse percentual é medido pelo total das despesas fixas sobre o faturamento. Neste exemplo, utiliza-se o faturamento total de R$ 144.000,00 e despesas fixas de R$ 36.000,00, ou seja, 36.000/144.000,00 = 0,25 *100 = 25%);
4) Defina sua margem de lucro líquido: 12% (aqui você irá definir quanto você quer ter de lucro com o produto vendido já deduzidas todas as despesas);
5) Deduza de 100% as despesas acima citadas (fixas, variáveis e licro líquido): 100% – 46% = 54% (este é o percentual que deve ser aplicado sobre o preço unitário de compra do produto para definir qual o seu preço de venda);
6) Divida o custo unitário (de compra) por 54 (e multiplique por 100): R$ 12,50/54 * 100 = R$ 23,15

NOTA: Despesas fixas são as despesas permanentes da empresa como água, luz, telefone, aluguel, etc. Já as despesas variáveis são, como o próprio nome diz, despesas eventuais ou sem valor permanente como encargos, aquisição de bens ou produtos, etc.
Pronto, este é o valor de venda do seu produto. A dica é do blog do Élcio. Boas vendas e sucesso nos seus negócios.

Cálculo ICMS CST 00

Como prometido, vamos iniciar a explicação para o calculo da CST de ICMS 00, e suas possíveis variações.

ICMS CST 00 quer dizer, Tributada Integralmente. Para calcular este ICMS é simples, basta multiplicar a base de calculo(veja como aqui obter a base de calculo) pelo aliquota estabelecida.

Mais ou menos assim:

Base = 100,00

Alíquota = 17%

Valor ICMS = 100,00 x 17% = 17,00

Simples né? Então vamos começar a complicar

Embora a operação seja tributada integralmente, ela pode possuir Alíquota de ICMS reduzida.
A alíquota de ICMS também muda de acordo com o estado de origem x destino da mercadoria.

Algumas regras básicas:

1 – Venda para consumidor final, não contribuinte do ICMS, residente em UF diversa do emitente da nota fiscal, aplica-se a alíquota interna da UF do emissor da nota fiscal.

2 – Venda para consumidor final, contribuinte do ICMS, residente em UF diversa do emitente da nota fiscal, aplica-se a alíquota interestadual entre as UF’s.

3 – Venda para contribuinte do ICMS que não seja consumidor final, aplica-se a alíquota interestadual.

Obs: Como já citei anteriormente, a alíquota do ICMS é uma característica do ITEM da nota, então dentro de uma nota, pode ter vários itens tributados integralmente, mas cada um com alíquota de ICMS diferente. E isso em operações internas(dentro do estado)

Precisa prestar atenção a tabela de alíquota entre UF’s (Confira a tabela aqui)

Lembrando, essas regras são aplicadas para a operações tributadas integralmente, ou seja, CST 00.