Estou usando o Componente ACBrSAT1, cheguei a copiar exatamente como esta no exemplo
Tem procedure de AjustaACBrSAT
with ACBrSAT1 do
begin
Modelo := TACBrSATModelo( cbxModelo.ItemIndex );
ArqLOG := edLog.Text;
NomeDLL := edNomeDLL.Text;
Config.ide_numeroCaixa := seNumeroCaixa.Value;
Config.ide_tpAmb := TpcnTipoAmbiente( cbxAmbiente.ItemIndex );
Config.ide_CNPJ := edtSwHCNPJ.Text;
Config.emit_CNPJ := edtEmitCNPJ.Text;
Config.emit_IE := edtEmitIE.Text;
Config.emit_IM := edtEmitIM.Text;
Config.emit_cRegTrib := TpcnRegTrib( cbxRegTributario.ItemIndex );
Config.emit_cRegTribISSQN := TpcnRegTribISSQN( cbxRegTribISSQN.ItemIndex );
Config.emit_indRatISSQN := TpcnindRatISSQN( cbxIndRatISSQN.ItemIndex );
Config.PaginaDeCodigo := sePagCod.Value;
Config.EhUTF8 := cbxUTF8.Checked;
Config.infCFe_versaoDadosEnt := StringToFloatDef( sfeVersaoEnt.Text, cversaoDadosEnt);
ConfigArquivos.SalvarCFe := cbxSalvarCFe.Checked;
ConfigArquivos.SalvarCFeCanc := cbxSalvarCFeCanc.Checked;
ConfigArquivos.SalvarEnvio := cbxSalvarEnvio.Checked;
ConfigArquivos.SepararPorCNPJ := cbxSepararPorCNPJ.Checked;
ConfigArquivos.SepararPorModelo := cbxSepararPorModelo.Checked;
ConfigArquivos.SepararPorDia := cbxSepararPorDia.Checked;
ConfigArquivos.SepararPorMes := cbxSepararPorMes.Checked;
ConfigArquivos.SepararPorAno := cbxSepararPorAno.Checked;
if Modelo = mfe_Integrador_XML then
begin
ACBrIntegrador1.PastaInput := edMFEInput.Text;
ACBrIntegrador1.PastaOutput := edMFEOutput.Text;
ACBrIntegrador1.Timeout := seMFETimeout.Value;
Integrador := ACBrIntegrador1;
end;
end
e GerarVenda
procedure TForm1.mGerarVendaClick(Sender : TObject);
var
TotalItem, TotalGeral, Pagto1: Double;
A: Integer;
Loops: Integer;
begin
TotalGeral := 0;
PageControl1.ActivePage := tsGerado;
ACBrSAT1.CFe.IdentarXML := cbxFormatXML.Checked;
ACBrSAT1.CFe.TamanhoIdentacao := 3;
ACBrSAT1.CFe.RetirarAcentos := cbxRemoverAcentos.Checked;
mVendaEnviar.Clear;
// Trasnferindo Informações de Config para o CFe //
AjustaACBrSAT;
ACBrSAT1.InicializaCFe;
// Montando uma Venda //
with ACBrSAT1.CFe do
begin
ide.numeroCaixa := 1;
ide.cNF := Random(999999);
Dest.CNPJCPF := '5481336000137';
Dest.xNome := 'D.J. SYSTEM ÁÉÍÓÚáéíóúÇç teste de nome Longo';
Entrega.xLgr := 'logradouro';
Entrega.nro := '112233';
Entrega.xCpl := 'complemento';
Entrega.xBairro := 'bairro';
Entrega.xMun := 'municipio';
Entrega.UF := 'RJ';
Loops := max(Trunc(seItensVenda.Value / 3)-1, 0);
for A := 0 to Loops do // Ajuste aqui para vender mais itens
begin
with Det.Add do
begin
nItem := 1 + (A * 3);
Prod.cProd := 'ACBR0001';
Prod.cEAN := '6291041500213';
Prod.xProd := 'Assinatura SAC';
prod.NCM := '99';
Prod.CFOP := '5120';
Prod.uCom := 'UN';
Prod.qCom := 1;
Prod.vUnCom := 120.00;
Prod.indRegra := irArredondamento;
Prod.vDesc := 1;
Prod.CEST := '1234567';
TotalItem := RoundABNT((Prod.qCom * Prod.vUnCom) + Prod.vOutro - Prod.vDesc, -2);
TotalGeral := TotalGeral + TotalItem;
Imposto.vItem12741 := TotalItem * 0.12;
Imposto.ICMS.orig := oeNacional;
if Emit.cRegTrib = RTSimplesNacional then
Imposto.ICMS.CSOSN := csosn102
else
Imposto.ICMS.CST := cst00;
Imposto.ICMS.pICMS := 18;
Imposto.PIS.CST := pis49;
Imposto.PIS.vBC := TotalItem;
Imposto.PIS.pPIS := 0.0065;
Imposto.COFINS.CST := cof49;
Imposto.COFINS.vBC := TotalItem;
Imposto.COFINS.pCOFINS := 0.0065;
//
//Imposto.COFINSST.vBC := 87206.46;
//Imposto.COFINSST.pCOFINS := 1.8457;
infAdProd := 'Informacoes adicionais';
end;
End;
Total.DescAcrEntr.vDescSubtot := 5;
Total.vCFeLei12741 := 1.23;
Pagto1 := RoundABNT(TotalGeral/2,-2);
with Pagto.Add do
begin
cMP := mpCartaodeCredito;
vMP := Pagto1;
end;
with Pagto.Add do
begin
cMP := mpDinheiro;
vMP := TotalGeral - Pagto1 + 100;
end;