[delphi-br] Qual o melhor maneira de Cancelar a Nota Fiscal?
Cancelamento de Notas tem 2 maneiras Exemplo usando a Chave e Protocolo da NFe: ACBrNFe1.WebServices.Cancelamento.NFeChave:= chNFe; ACBrNFe1.WebServices.Cancelamento.Protocolo := Protocolo; ACBrNFe1.WebServices.Cancelamento.Justificativa := AJustificativa; Dessa forma, tem que fechar a nota carregada antes de cancelar. Após o envio do cancelamento, o componente salva o xml do cancelamento automáticamente ou tenho que salvar enviando algum comando: if ACBrNFe.WebServices.Cancelamento.cStat = 101 then begin { Autorizado o cancelamento. .. } end; - Exemplo carregando um XML ACBrNFe1.NotasFiscais.Clear; ACBrNFe1.NotasFiscais.Add.XML.LoadFromFile(cPathArquivo); if not(InputQuery('WebServices Cancelamento', 'Justificativa', vAux)) then exit; ACBrNFe1.Cancelamento(vAux); O ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat é alterado, ou permanece como 100? -- Minha Dúvida é a seguinte: Qual o melhor maneira de Cancelar a Nota Fiscal? Quais os comandos pra salvar se existir, pois quando gerar o Speed esse cancelamento será obrigatório informar... Desde já Agradeço a quem puder me ajudar Abraços Ademir Mossane
[delphi-br] Re: Acesso Rapido
Olá Pessoal Posso dar minha dica... mesmo não podendo ai vai eu uso o tag de cada menu, coloco valor 1 para vendas 2 para estoque 3 para financeiro 4 para gerencial e ainda uso o 5 e o nove, esse só abrem menu pra quando eu logar Assim cada usuário é determinado o nível de acesso e quando abro o sistema faço uma varredura nos componentes e se for TMenu ou Tbutton, ele habilita conforme a tag e o nivel de acesso do usuário. isso se furarem a senha de acesso, o que é possível, propositadamente, o sistema só habilita os menus de saídas... e ainda tenho permissões, mas isso já é pra cada local de acesso, tipo caixa, receber, pagar, cheques etc.. ai verifica as permissões daquele usuário... Espero ter contribuído de alguma forma... Abraços a tds. Mossane
[delphi-br] Re: Componete para Gerar Relatórios no WORD
Você não precisa componentes para criar documentos Word veja uma rotina completa, adapte as suas necessidades adcione ao uses Comobj procedure TF_ProcessosAcomp.SpeedButton36Click(Sender: TObject); var NewWord,Document, Range: Variant; nome:string; i:integer; begin //tenho um modelo de documento do word com o cabeçalho e logomarca da empresa CopyFile(Pchar(ExtractFilePath(Application.ExeName)+'modeloWord.doc'),Pchar(nome),false); except end; NewWord:= CreateOleObject('Word.Basic'); NewWord.AppShow; //mostra o word newWord.FileOpen(nome); newWord.FontSize(8); newWord.bold; NewWord.LeftPara; newWord.insert('CLIENTE'+#9+#9+': '); newWord.FontSize(9); newWord.bold(false); NewWord.LeftPara; newWord.insert(trim(RxDBLookupCombo1.Text)); newWord.FontSize(8); newWord.bold; NewWord.LeftPara; newWord.insert(#13+'AUTOR'+#9+#9+#9+': '); AutorProcesso.First; newWord.FontSize(9); newWord.bold(false); NewWord.LeftPara; newWord.insert(trim(AutorProcessoLAUTOR.AsString)); AutorProcesso.Next; while not AutorProcesso.Eof do begin newWord.FontSize(9); newWord.bold(false); NewWord.LeftPara; newWord.insert(#13+#9+#9+#9+': '); newWord.insert(trim(AutorProcessoLAUTOR.AsString)); AutorProcesso.Next; end; newWord.FontSize(8); newWord.bold; NewWord.LeftPara; newWord.insert(#13+'RÉU'+#9+#9+#9+': '); REUS_PROCESSO.First; newWord.FontSize(9); newWord.bold(false); NewWord.LeftPara; newWord.insert(trim(REUS_PROCESSOLREUS.AsString)); REUS_PROCESSO.Next; while not REUS_PROCESSO.Eof do begin newWord.insert(#13+#9+#9+#9+': '); newWord.FontSize(9); newWord.bold(false); NewWord.LeftPara; newWord.insert(trim(REUS_PROCESSOLREUS.AsString)); REUS_PROCESSO.Next; end; newWord.insert(#13+ ''); newWord.FontSize(8); newWord.bold; NewWord.LeftPara; newWord.insert('PROCESSO N.'+#9+#9 +': '); newWord.FontSize(9); newWord.bold(false); NewWord.LeftPara; newWord.insert(trim(ProcessosNUMERO_PROCESSO.AsString)); newWord.insert(#13+ ''); newWord.FontSize(8); newWord.bold; NewWord.LeftPara; newWord.insert('AÇÃO'+#9+#9+#9 +': '); newWord.FontSize(9); newWord.bold(false); NewWord.LeftPara; newWord.insert(trim(RxDBLookupCombo2.Text)); newWord.insert(#13+ ''); newWord.FontSize(8); newWord.bold; NewWord.LeftPara; newWord.insert('DATA DE DISTRIB.'+#9': '); newWord.FontSize(9); newWord.bold(false); NewWord.LeftPara; newWord.insert(DBDateEdit1.Text); newWord.insert(#13+ ''); newWord.FontSize(8); newWord.bold; NewWord.LeftPara; newWord.insert('COMARCA/TRIBUNAL'+#9+': '); newWord.FontSize(9); newWord.bold(false); NewWord.LeftPara; newWord.insert(trim(RxDBLookupCombo3.Text)); newWord.insert(#13+ ''); newWord.FontSize(8); newWord.bold; NewWord.LeftPara; newWord.insert('ÓRGÃO JULGADOR'+#9+': '); newWord.FontSize(9); newWord.bold(false); NewWord.LeftPara; newWord.insert(trim(RxDBLookupCombo4.Text)); newWord.insert(#13+ ''); newWord.FontSize(8); newWord.bold; NewWord.LeftPara; newWord.insert('VALOR DA CAUSA'+#9+': '); newWord.FontSize(9); newWord.bold(false); NewWord.LeftPara; newWord.insert(tamanho_V(ProcessosVALOR_CAUSA.AsFloat,15)); newWord.FontSize(8); newWord.bold; NewWord.LeftPara; newWord.insert(' - GRAU DE RISCO DO PROCESSO'+#9+': '); newWord.FontSize(9); newWord.bold(false); NewWord.LeftPara; if Grau_risco.Eof then newWord.insert('INDEFINIDO') else newWord.insert(trim(Grau_riscoDESCRICAO.AsString)); newWord.insert(#13+ ''); newWord.FontSize(9); newWord.bold; NewWord.LeftPara; newWord.insert(#13+'ANDAMENTOS DO PROCESSO'); newWord.insert(#13+''); newWord.FontSize(9); newWord.bold(false); NewWord.JustifyPara; newWord.insert('--'); AndamentoProcesso.first; while not AndamentoProcesso.Eof do begin newWord.FontSize(9);newWord.bold; NewWord.LeftPara; newWord.insert(#13+DateToStr(AndamentoProcessoDATA.AsDateTime)+ ' - '+TRIM(AndamentoProcessoDESCRICAO.AsString)); newWord.FontSize(9);newWord.bold(false);NewWord.JustifyPara; newWord.insert(#13+trim(DBMemo4.Text)); newWord.FontSize(9);newWord.bold(false);NewWord.JustifyPara; newWord.insert(#13+'--'); AndamentoProcesso.Next end; end;