This week only. Pastebin PRO Accounts Christmas Special! Don't miss out!Want more features on Pastebin? Sign Up, it's FREE!
Guest

unfse

By: a guest on Aug 2nd, 2010  |  syntax: Delphi  |  size: 32.52 KB  |  views: 80  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. unit UNFSe;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, BusinessSkinForm, bsSkinCtrls, bsSkinGrids, bsDBGrids, StdCtrls,
  8.   bsSkinData, Mask, bsSkinBoxCtrls, bsdbctrls, DateUtils, UTypes, DB, ADODB, UConfig,
  9.   UntPrincipalDLL, UClasses, SnapBaseDataset, SnapVirtualDataset, Grids,
  10.   DBGrids, JvExDBGrids, JvDBGrid, Midas, Buttons, JvgGroupBox, JvComponentBase,
  11.   JvgCaption, JvExButtons, JvBitBtn, JvExStdCtrls, JvExControls,
  12.   JvLabel, JvExMask, URotinas, JvGradient, JvGradientHeaderPanel,
  13.   JvgExportComponents, frxClass, frxDBSet, JvAnimatedImage, JvGIFCtrl, ExtCtrls,
  14.   JvExExtCtrls, JvExtComponent, JvPanel, SnapObjectDataset,StrUtils, JvCombobox,
  15.   JvToolEdit, DBClient, frxExportText, frxExportPDF;
  16.  
  17. type
  18.   TfrmNotas = class(TForm)
  19.     dsNFSe: TDataSource;
  20.     grbFiltro: TJvgGroupBox;
  21.     DateInicial: TJvDateEdit;
  22.     JvLabel1: TJvLabel;
  23.     JvLabel2: TJvLabel;
  24.     DateFim: TJvDateEdit;
  25.     JvLabel3: TJvLabel;
  26.     cmbStatus: TJvComboBox;
  27.     btnFiltrar: TJvBitBtn;
  28.     dbgridNFS: TJvDBGrid;
  29.     gpnlBotoes: TJvGradientHeaderPanel;
  30.     btnCancelar: TJvBitBtn;
  31.     btnExportar: TJvBitBtn;
  32.     btnConsultar: TJvBitBtn;
  33.     btnImprimir: TJvBitBtn;
  34.     btnEnviar: TJvBitBtn;
  35.     JvGradient1: TJvGradient;
  36.     JvGradient2: TJvGradient;
  37.     frxrptReciboRPS: TfrxReport;
  38.     frxDBdstRecibo: TfrxDBDataset;
  39.     pnlSleep: TJvPanel;
  40.     gifSleep: TJvGIFAnimator;
  41.     lblMensagem: TLabel;
  42.     svdItensNFs: TSnapVirtualDataset;
  43.     svdItensNFsDescricao: TStringField;
  44.     svdItensNFsQuantidade: TFloatField;
  45.     svdItensNFsVrUnitario: TFloatField;
  46.     svdItensNFsVrTotal: TFloatField;
  47.     frxdbdstItensRecibo: TfrxDBDataset;
  48.     svdNFsSelecteds: TSnapVirtualDataset;
  49.     svdNFsSelectedsDtEmissao: TDateTimeField;
  50.     svdNFsSelectedsTotal: TCurrencyField;
  51.     svdNFsSelectedsId_NotaFiscal: TIntegerField;
  52.     svdNFsSelectedsRPS: TIntegerField;
  53.     svdNFsSelectedsPrestador_RazaoSocial: TStringField;
  54.     svdNFsSelectedsPrestador_Bairro: TStringField;
  55.     svdNFsSelectedsPrestador_Numero: TStringField;
  56.     svdNFsSelectedsPrestador_Complemento: TStringField;
  57.     svdNFsSelectedsPrestador_Rua: TStringField;
  58.     svdNFsSelectedsPrestador_Cidade: TStringField;
  59.     svdNFsSelectedsPrestador_UF: TStringField;
  60.     svdNFsSelectedsPrestador_IM: TStringField;
  61.     svdNFsSelectedsPrestador_CEP: TStringField;
  62.     svdNFsSelectedsTomador_RazaoSocial: TStringField;
  63.     svdNFsSelectedsTomador_CNPJCPF: TStringField;
  64.     svdNFsSelectedsTomador_Bairro: TStringField;
  65.     svdNFsSelectedsTomador_Numero: TStringField;
  66.     svdNFsSelectedsTomador_Complemento: TStringField;
  67.     svdNFsSelectedsTomador_Rua: TStringField;
  68.     svdNFsSelectedsTomador_Cidade: TStringField;
  69.     svdNFsSelectedsTomador_UF: TStringField;
  70.     svdNFsSelectedsTomador_IM: TStringField;
  71.     svdNFsSelectedsTomador_CEP: TStringField;
  72.     svdNFsSelectedsTomador_Email: TStringField;
  73.     svdNFsSelectedsDescricao: TWideStringField;
  74.     svdNFsSelectedsPercPIS: TCurrencyField;
  75.     svdNFsSelectedsValorPIS: TCurrencyField;
  76.     svdNFsSelectedsPercCOFINS: TCurrencyField;
  77.     svdNFsSelectedsValorCOFINS: TCurrencyField;
  78.     svdNFsSelectedsPercIR: TCurrencyField;
  79.     svdNFsSelectedsValorIR: TCurrencyField;
  80.     svdNFsSelectedsPercINSS: TCurrencyField;
  81.     svdNFsSelectedsValorINSS: TCurrencyField;
  82.     svdNFsSelectedsTotalDeducoes: TCurrencyField;
  83.     svdNFsSelectedsValorISS: TCurrencyField;
  84.     svdNFsSelectedsPercCSLL: TCurrencyField;
  85.     svdNFsSelectedsValorCSLL: TCurrencyField;
  86.     svdNFsSelectedsPercISS: TCurrencyField;
  87.     svdNFsSelectedsPrestador_CNPJCPF: TStringField;
  88.     svdNFs: TSnapVirtualDataset;
  89.     svdNFsEscolhido: TBooleanField;
  90.     svdNFsSerie: TStringField;
  91.     svdNFsDtEmissao: TDateTimeField;
  92.     svdNFsStatus: TSmallintField;
  93.     svdNFsTotal: TCurrencyField;
  94.     svdNFsId_NotaFiscal: TIntegerField;
  95.     svdNFsPrestador_CNPJCPF: TStringField;
  96.     svdNFsPrestador_RazaoSocial: TStringField;
  97.     svdNFsTomador_RazaoSocial: TStringField;
  98.     svdNFsTomador_CNPJCPF: TStringField;
  99.     svdNFsDtEnvio: TDateTimeField;
  100.     svdNFsDtProcessada: TDateTimeField;
  101.     svdNFsDtCancelada: TDateTimeField;
  102.     cdsNFSe: TClientDataSet;
  103.     cdsNFSeEscolhido: TBooleanField;
  104.     cdsNFSeSerie: TStringField;
  105.     cdsNFSeDtEmissao: TDateTimeField;
  106.     cdsNFSeStatus: TSmallintField;
  107.     cdsNFSeTotal: TCurrencyField;
  108.     cdsNFSeId_NotaFiscal: TIntegerField;
  109.     cdsNFSePrestador_CNPJCPF: TStringField;
  110.     cdsNFSePrestador_RazaoSocial: TStringField;
  111.     cdsNFSeTomador_RazaoSocial: TStringField;
  112.     cdsNFSeTomador_CNPJCPF: TStringField;
  113.     cdsNFSeDtEnvio: TDateTimeField;
  114.     cdsNFSeDtProcessada: TDateTimeField;
  115.     cdsNFSeDtCancelada: TDateTimeField;
  116.     frxexpPFD: TfrxPDFExport;
  117.     frxexpText: TfrxSimpleTextExport;
  118.     DataSource1: TDataSource;
  119.     DataSource2: TDataSource;
  120.     procedure FormCreate(Sender: TObject);
  121.     procedure dbgridNfsValidaCelula(Sender: TObject; Column: TbsColumn;
  122.       var Valido: Boolean);
  123.     procedure FormDestroy(Sender: TObject);
  124.     procedure btnFiltrarClick(Sender: TObject);
  125.     procedure svdNFsGetDataValue(Sender: TSnapCustomDataset; AField: TField;
  126.       AIndex: Integer; var AValue: Variant);
  127.     procedure svdNFsSetDataValue(Sender: TSnapCustomDataset; AField: TField;
  128.       AIndex: Integer; AValue: Variant);
  129.     procedure svdNFsGetDataCount(Sender: TSnapCustomDataset;
  130.       var ACount: Integer);
  131.     procedure dbgridNFSKeyDown(Sender: TObject; var Key: Word;
  132.       Shift: TShiftState);
  133.     procedure svdNFsStatusGetText(Sender: TField; var Text: string;
  134.       DisplayText: Boolean);
  135.     procedure btnEnviarClick(Sender: TObject);
  136.     procedure dsNFSeDataChange(Sender: TObject; Field: TField);
  137.     procedure btnConsultarClick(Sender: TObject);
  138.     procedure svdNFsBeforeInsert(DataSet: TDataSet);
  139.     procedure svdNFsBeforeDelete(DataSet: TDataSet);
  140.     procedure gifSleepStart(Sender: TObject);
  141.     procedure svdNFsDtEmissaoGetText(Sender: TField; var Text: string;
  142.       DisplayText: Boolean);
  143.     procedure btnImprimirClick(Sender: TObject);
  144.     procedure svdItensNFsGetDataCount(Sender: TSnapCustomDataset;
  145.       var ACount: Integer);
  146.     procedure svdItensNFsGetDataValue(Sender: TSnapCustomDataset;
  147.       AField: TField; AIndex: Integer; var AValue: Variant);
  148.     procedure svdNFsSelectedsGetDataCount(Sender: TSnapCustomDataset;
  149.       var ACount: Integer);
  150.     procedure svdNFsSelectedsGetDataValue(Sender: TSnapCustomDataset;
  151.       AField: TField; AIndex: Integer; var AValue: Variant);
  152.     procedure svdNFsSelectedsAfterScroll(DataSet: TDataSet);
  153.     procedure cdsNFSeAfterPost(DataSet: TDataSet);
  154.     procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  155.   private
  156.          FNotas :TNFSs;
  157.          FErro: Integer;
  158.          FStatusAtual :TStatusNFSe;
  159.          procedure SetErro(const Value: Integer);
  160.          procedure CarregaClient(DataSet :TClientDataSet);
  161.          procedure GetDataValue(AField :TField; AIndex :Integer);
  162.          procedure SetDataValue(AField :TField; AIndex :Integer);
  163.   public
  164.         procedure ShowSleep(AMensagem :string = '');
  165.         procedure HideSleep;
  166.         procedure ControlaBotoes(AStatus :TStatusNFSe);
  167.         property Erro :Integer read FErro write SetErro;
  168.   end;
  169.  
  170. var
  171.   frmNotas: TfrmNotas;
  172.  
  173. implementation
  174.  
  175. uses UMensagens;
  176.  
  177. {$R *.dfm}
  178.  
  179. procedure TfrmNotas.btnConsultarClick(Sender: TObject);
  180. var
  181.    i :Integer;
  182.    Lotes :TLotesNFSe;
  183. begin
  184.      try
  185.         ShowSleep('Consultando Lotes...');
  186.         Lotes := TLotesNFSe.Create;
  187.  
  188.         for I := 0 to FNotas.Selected.Count - 1 do
  189.             Lotes.Add(FNotas.Selected.Items[i].NFSe.Lote);
  190.  
  191.         for I := 0 to Lotes.Count - 1 do
  192.             Lotes.Items[i].Consultar;
  193.      finally
  194.             HideSleep;
  195.             btnFiltrar.Click;
  196.      end;
  197.  
  198. end;
  199.  
  200. procedure TfrmNotas.btnEnviarClick(Sender: TObject);
  201. var
  202.   I,E, vUltimoNumeroRPS, vCodCidade: Integer;
  203.   vnfse :TNFSes;
  204.   vEmpresas :TEmpresas;
  205.  
  206.   vPrestador_CNPJCPF,
  207.   vPrestador_InscrMunicipal :PWideChar;
  208.   vLote :TLoteNFSe;
  209. begin
  210.      if svdNFs.State in [dsInsert, dsEdit] then
  211.         svdNFs.Post;
  212.  
  213.      vEmpresas := FNotas.Selected.Empresas;
  214.      try
  215.         ShowSleep('Enviando Notas');
  216.         for E := 0 to vEmpresas.Count - 1 do
  217.         try
  218.            if Assigned(vnfse) then
  219.               vnfse := nil;
  220.  
  221.            vnfse := TNFSes.Create;
  222.            vnfse.Clear;
  223.            vUltimoNumeroRPS          := 0;
  224.            vPrestador_CNPJCPF        := pwidechar(vEmpresas.Items[E].CNPJ_CPF.OnlyNumber.Value);
  225.            vPrestador_InscrMunicipal := pwidechar(vEmpresas.Items[E].InscrMunicipal.OnlyNumber.Value);
  226.            vCodCidade                := vEmpresas.Items[E].Cidade.SIAFI;
  227.  
  228.            GetErro(ConsultarSeqRps(vCodCidade,vPrestador_CNPJCPF,vPrestador_InscrMunicipal,vUltimoNumeroRPS));
  229.  
  230.            for I := 0 to FNotas.Selected.Count - 1 do
  231.               if FNotas.Selected.Items[I].Prestador.Equals(vEmpresas.Items[E]) then
  232.               begin
  233.                  Inc(vUltimoNumeroRPS);
  234.  
  235.                  if Assigned(FNotas.Selected.Items[I].NFSe.NFS) then
  236.                  begin
  237.                       if FNotas.Selected.Items[I].NFSe.NumeroRPS < vUltimoNumeroRPS then
  238.                          FNotas.Selected.Items[I].NFSe.NumeroRPS := vUltimoNumeroRPS;
  239.  
  240.                       vnfse.Add(FNotas.Selected.Items[I].NFSe);
  241.  
  242.                  end
  243.                  else
  244.                      with vnfse.add do
  245.                      begin
  246.                           NFS := FNotas.Selected.Items[I];
  247.                           NumeroRPS := vUltimoNumeroRPS;
  248.                      end;
  249.               end;
  250.  
  251.            try
  252.               vLote := TLoteNFSe.Create;
  253.               vLote.NFSes := vnfse;
  254.  
  255.               if vLote.Enviar(vEmpresas.Items[E],False) then
  256.               begin
  257.                    vLote.Post;
  258.                    vLote.NFSes.Post(False);
  259.               end;
  260.            finally
  261.                   if Assigned(vnfse) then
  262.                      vnfse := nil;
  263.  
  264.                   FreeAndNil(vLote);
  265.            end;
  266.         finally
  267.                if Assigned(vnfse) then
  268.                   vnfse := nil;
  269.         end;
  270.      finally
  271.             HideSleep;
  272.             btnFiltrar.Click;
  273.      end;
  274. end;
  275.  
  276. procedure TfrmNotas.btnFiltrarClick(Sender: TObject);
  277. begin
  278.      try
  279.         FStatusAtual := TStatusNFSe(cmbStatus.ItemIndex);
  280. //        svdNFs.Close;
  281.         ShowSleep;
  282.         FNotas.Filter(DateInicial.Date,DateFim.Date,FStatusAtual);
  283. //        svdNFs.Open;
  284.         CarregaClient(cdsNFSe);
  285.  
  286.         case FStatusAtual of
  287.              snfseEnviada    :begin
  288.                                    dbgridNFS.Columns[4].Visible := True;
  289.                                    dbgridNFS.Columns[4].FieldName := cdsNFSeDtEnvio.FieldName;
  290.                               end;
  291.              snfseProcessada :begin
  292.                                    dbgridNFS.Columns[4].Visible := True;
  293.                                    dbgridNFS.Columns[4].FieldName := cdsNFSeDtProcessada.FieldName;
  294.                               end;
  295.              snfseCancelada  :begin
  296.                                    dbgridNFS.Columns[4].Visible := True;
  297.                                    dbgridNFS.Columns[4].FieldName := cdsNFSeDtCancelada.FieldName;
  298.                               end;
  299.              else
  300.              begin
  301.                   dbgridNFS.Columns[4].Visible := False;
  302.                   dbgridNFS.Columns[4].FieldName := '';
  303.              end;
  304.         end;
  305.  
  306.         dbgridNFS.SetFocus;
  307.         ControlaBotoes(FStatusAtual);
  308.      finally
  309.             HideSleep;
  310.      end;
  311. end;
  312.  
  313. procedure TfrmNotas.btnImprimirClick(Sender: TObject);
  314. begin
  315.      try
  316.         svdNFsSelecteds.Close;
  317.         svdNFsSelecteds.Open;
  318.         svdNFsSelecteds.First;
  319.         frxrptReciboRPS.LoadFromFile(IncludeTrailingBackslash(Config.PathReports) + 'rps.fr3');
  320.         frxrptReciboRPS.Script.Variables['Imagem'] := Config.PathLogo;
  321.         frxrptReciboRPS.ShowReport;
  322.      except
  323.            on e:exception do
  324.               GeraErro(e.Message);
  325.      end;
  326. end;
  327.  
  328. procedure TfrmNotas.CarregaClient(DataSet: TClientDataSet);
  329. var
  330.   I,f: Integer;
  331. begin
  332.      if Assigned(FNotas) and
  333.         Assigned(DataSet) then
  334.      begin
  335.           DataSet.Close;
  336.           DataSet.CreateDataSet;
  337.           DataSet.DisableControls;
  338.           DataSet.Tag := -1;
  339.           for I := 0 to FNotas.Count - 1 do
  340.           begin
  341.                DataSet.Append;
  342.                for f := 0 to DataSet.FieldCount - 1 do
  343.                    GetDataValue(DataSet.Fields[f],I);
  344.                DataSet.Post;
  345.           end;
  346.           DataSet.Tag := 0;
  347.           DataSet.First;
  348.           DataSet.EnableControls;
  349.           ControlaBotoes(FStatusAtual);
  350.      end;
  351.  
  352. end;
  353.  
  354. procedure TfrmNotas.cdsNFSeAfterPost(DataSet: TDataSet);
  355. begin
  356.      if DataSet.Tag > -1  then
  357.         SetDataValue(cdsNFSeEscolhido,DataSet.RecNo-1);
  358. end;
  359.  
  360. procedure TfrmNotas.ControlaBotoes(AStatus: TStatusNFSe);
  361. begin
  362.      btnEnviar.Enabled   := Assigned(FNotas) and
  363.                          (AStatus in [snfseEmDigitacao,snfseEnviada]) and (FNotas.Selected.Count > 0);
  364.      btnCancelar.Enabled := Assigned(FNotas) and
  365.                          (AStatus = snfseProcessada) and (FNotas.Selected.Count > 0);
  366.      btnImprimir.Enabled := Assigned(FNotas) and
  367.                          (AStatus <> snfseEmDigitacao) and (FNotas.Selected.Count > 0);
  368. //     btnExportar.Enabled := Assigned(FNotas) and
  369. //                         (AStatus <> snfseEmDigitacao) and (FNotas.Selected.Count > 0);
  370.      btnConsultar.Enabled := Assigned(FNotas) and
  371.                           (AStatus = snfseEnviada) and (FNotas.Selected.Count > 0);
  372. end;
  373.  
  374. procedure TfrmNotas.dbgridNFSKeyDown(Sender: TObject; var Key: Word;
  375.   Shift: TShiftState);
  376. begin
  377.      if (Shift = [ssCtrl]) and
  378.         Assigned(FNotas) then
  379.      begin
  380.           case Key of
  381.                Ord('T'): begin
  382.                               FNotas.SelectAll;
  383. //                              svdNFs.Close;
  384. //                              svdNFs.Open;
  385.                               CarregaClient(cdsNFSe);
  386.                          end;
  387.                Ord('L'): begin
  388.                               FNotas.DeselectAll;
  389. //                              svdNFs.Close;
  390. //                              svdNFs.Open;
  391.                               CarregaClient(cdsNFSe);
  392.                          end;
  393.           end;
  394.  
  395.      end;
  396. end;
  397.  
  398. procedure TfrmNotas.dbgridNfsValidaCelula(Sender: TObject; Column: TbsColumn;
  399.   var Valido: Boolean);
  400. begin
  401.      Valido := UpperCase(Column.FieldName) = 'ESCOLHIDO';
  402. end;
  403.  
  404. procedure TfrmNotas.dsNFSeDataChange(Sender: TObject; Field: TField);
  405. begin
  406.      ControlaBotoes(FStatusAtual);
  407. end;
  408.  
  409. procedure TfrmNotas.FormCreate(Sender: TObject);
  410. var
  411.    statusnfse :TStringList;
  412. begin
  413.      statusnfse := StatusNFsToStrings;
  414.      cmbStatus.Items := statusnfse;
  415.      FreeAndNil(statusnfse);
  416.      cmbStatus.ItemIndex := Ord(snfseEmDigitacao);
  417.      DateInicial.Clear;
  418.      DateFim.Clear;
  419.      DateInicial.Date := StartOfTheMonth(Date);
  420.      DateFim.Date     := EndOfTheMonth(Date);
  421.      ControlaBotoes(snfseEmDigitacao);
  422.      HideSleep;
  423.  
  424.      if not Assigned(FNotas) then
  425.         FNotas := TNFSs.Create;
  426. end;
  427.  
  428. procedure TfrmNotas.FormDestroy(Sender: TObject);
  429. begin
  430.      if Assigned(FNotas) then
  431.         FreeAndNil(FNotas);
  432. end;
  433.  
  434. procedure TfrmNotas.FormKeyDown(Sender: TObject; var Key: Word;
  435.   Shift: TShiftState);
  436. begin
  437.      case Key of
  438.           VK_F2 : if btnFiltrar.Enabled and
  439.                      btnFiltrar.Visible then
  440.                      btnFiltrar.Click;
  441.           VK_F5 : if btnEnviar.Enabled and
  442.                      btnEnviar.Visible then
  443.                      btnEnviar.Click;
  444.           VK_F6 : if btnConsultar.Enabled and
  445.                      btnConsultar.Visible then
  446.                      btnConsultar.Click;
  447.           VK_F7 : if btnCancelar.Enabled and
  448.                      btnCancelar.Visible then
  449.                      btnCancelar.Click;
  450.           VK_F8 : if btnImprimir.Enabled and
  451.                      btnImprimir.Visible then
  452.                      btnImprimir.Click;
  453.      end;
  454. end;
  455.  
  456. procedure TfrmNotas.GetDataValue(AField: TField; AIndex :Integer);
  457. begin
  458.      if (AIndex > -1) and
  459.         Assigned(AField) and
  460.         Assigned(FNotas) and
  461.         Assigned(FNotas.Items[AIndex]) then
  462.         with FNotas.Items[AIndex] do
  463.         begin
  464.              if AField.FieldName = cdsNFSeEscolhido.FieldName then
  465.                 AField.AsBoolean := Escolhido;
  466.  
  467.              if AField.FieldName = cdsNFSeDtEmissao.FieldName then
  468.                 AField.AsDateTime := DtEmissaoRPS;
  469.  
  470.              if AField.FieldName = cdsNFSeId_NotaFiscal.FieldName then
  471.                 AField.AsInteger := Id_NotaFiscal;
  472.  
  473.              if AField.FieldName = cdsNFSeSerie.FieldName then
  474.                 AField.AsString := Serie;
  475.  
  476.              if AField.FieldName = cdsNFSeStatus.FieldName then
  477.                 if Assigned(NFSe) then
  478.                    AField.AsInteger := Ord(NFSe.Status)
  479.                 else
  480.                     AField.AsInteger := Ord(snfseEmDigitacao);
  481.  
  482.              if AField.FieldName = cdsNFSeTotal.FieldName then
  483.                 AField.AsCurrency := Total;
  484.  
  485.              if AField.FieldName = cdsNFSeTomador_RazaoSocial.FieldName then
  486.                 if Assigned(Tomador) then
  487.                    AField.AsString := Tomador.RazaoSocial
  488.                 else
  489.                     AField.AsString := '';
  490.  
  491.              if AField.FieldName = cdsNFSeTomador_CNPJCPF.FieldName then
  492.                 if Assigned(Tomador) then
  493.                    AField.AsString := Tomador.CNPJ_CPF.Formatted
  494.                 else
  495.                     AField.AsString := '';
  496.  
  497.              if AField.FieldName = cdsNFSePrestador_RazaoSocial.FieldName then
  498.                 if Assigned(Prestador) then
  499.                    AField.AsString := Prestador.RazaoSocial
  500.                 else
  501.                     AField.AsString := '';
  502.  
  503.              if AField.FieldName = cdsNFSePrestador_CNPJCPF.FieldName then
  504.                 if Assigned(Prestador) then
  505.                    AField.AsString := Prestador.CNPJ_CPF.Value
  506.                 else
  507.                     AField.AsString := '';
  508.  
  509.              if AField.FieldName = cdsNFSeDtEnvio.FieldName then
  510.                 if Assigned(NFSe) then
  511.                    AField.AsDateTime := NFSe.DtEnvio
  512.                 else
  513.                     AField.Value := Null;
  514.  
  515.              if AField.FieldName = cdsNFSeDtProcessada.FieldName then
  516.                 if Assigned(NFSe) then
  517.                    AField.AsDateTime := NFSe.DtProcessada
  518.                 else
  519.                     AField.Value := Null;
  520.  
  521.              if AField.FieldName = cdsNFSeDtCancelada.FieldName then
  522.                 if Assigned(NFSe) then
  523.                    AField.AsDateTime := NFSe.DtCancelada
  524.                 else
  525.                     AField.Value := Null;
  526.         end;
  527.  
  528. end;
  529.  
  530. procedure TfrmNotas.gifSleepStart(Sender: TObject);
  531. begin
  532.      Application.ProcessMessages;
  533. end;
  534.  
  535. procedure TfrmNotas.HideSleep;
  536. begin
  537.      pnlSleep.Visible := False;
  538.      gifSleep.Animate := False;
  539. end;
  540.  
  541. procedure TfrmNotas.SetDataValue(AField: TField; AIndex: Integer);
  542. begin
  543.      if (AIndex > -1) and
  544.         Assigned(AField) and
  545.         Assigned(FNotas) and
  546.         Assigned(FNotas.Items[AIndex]) then
  547.         with FNotas.Items[AIndex] do
  548.         begin
  549.              if AField.FieldName = cdsNFSeEscolhido.FieldName then
  550.                 Escolhido := AField.AsBoolean;
  551.         end;
  552. end;
  553.  
  554. procedure TfrmNotas.SetErro(const Value: Integer);
  555. begin
  556.   FErro := Value;
  557. end;
  558.  
  559. procedure TfrmNotas.ShowSleep(AMensagem :string);
  560. begin
  561.      if Trim(AMensagem) = '' then
  562.         lblMensagem.Caption := 'Carregando Dados'
  563.      else
  564.          lblMensagem.Caption := AMensagem;
  565.  
  566.      gifSleep.Animate := true;
  567.      pnlSleep.Visible := True;
  568.      Application.ProcessMessages;
  569. end;
  570.  
  571. procedure TfrmNotas.svdItensNFsGetDataCount(Sender: TSnapCustomDataset;
  572.   var ACount: Integer);
  573. begin
  574.      ACount := FNotas.Selected.Items[svdNFsSelecteds.RecNo-1].Itens.Count;
  575. end;
  576.  
  577. procedure TfrmNotas.svdItensNFsGetDataValue(Sender: TSnapCustomDataset;
  578.   AField: TField; AIndex: Integer; var AValue: Variant);
  579. begin
  580.      if Assigned(FNotas) and
  581.         (FNotas.Selected <> nil) and
  582.         Assigned(FNotas.Selected.Items[svdNFsSelecteds.RecNo-1].Itens) and
  583.         Assigned(FNotas.Selected.Items[svdNFsSelecteds.RecNo-1].Itens.Items[AIndex]) then
  584.         with FNotas.Items[svdNFsSelecteds.RecNo-1].Itens.Items[AIndex] do
  585.         begin
  586.              if AField.FieldName = svdItensNFsDescricao.FieldName then
  587.                 AValue := Descricao.Value;
  588.  
  589.              if AField.FieldName = svdItensNFsQuantidade.FieldName then
  590.                 AValue := Quantidade;
  591.  
  592.              if AField.FieldName = svdItensNFsVrUnitario.FieldName then
  593.                 AValue := Unitario;
  594.  
  595.              if AField.FieldName = svdItensNFsVrTotal.FieldName then
  596.                 AValue := Total;
  597.         end;
  598. end;
  599.  
  600. procedure TfrmNotas.svdNFsBeforeDelete(DataSet: TDataSet);
  601. begin
  602.      Abort;
  603. end;
  604.  
  605. procedure TfrmNotas.svdNFsBeforeInsert(DataSet: TDataSet);
  606. begin
  607.      Abort;
  608. end;
  609.  
  610. procedure TfrmNotas.svdNFsDtEmissaoGetText(Sender: TField; var Text: string;
  611.   DisplayText: Boolean);
  612. begin
  613.      if (Sender.IsNull) or (Sender.AsDateTime = 0) then
  614.         Text := ''
  615.      else
  616.          Text := Sender.AsString;
  617. end;
  618.  
  619. procedure TfrmNotas.svdNFsGetDataCount(Sender: TSnapCustomDataset;
  620.   var ACount: Integer);
  621. begin
  622.      ACount := FNotas.Count;
  623. end;
  624.  
  625. procedure TfrmNotas.svdNFsGetDataValue(Sender: TSnapCustomDataset;
  626.   AField: TField; AIndex: Integer; var AValue: Variant);
  627. begin
  628.      if Assigned(FNotas) and
  629.         Assigned(FNotas.Items[AIndex]) then
  630.         with FNotas.Items[AIndex] do
  631.         Begin
  632.              if AField.FieldName = svdNFsEscolhido.FieldName then
  633.                 AValue := Escolhido;
  634.  
  635.              if AField.FieldName = svdNFsDtEmissao.FieldName then
  636.                 AValue := DtEmissaoRPS;
  637.  
  638.              if AField.FieldName = svdNFsId_NotaFiscal.FieldName then
  639.                 AValue := Id_NotaFiscal;
  640.  
  641.              if AField.FieldName = svdNFsSerie.FieldName then
  642.                 AValue := Serie;
  643.  
  644.              if AField.FieldName = svdNFsStatus.FieldName then
  645.                 if Assigned(NFSe) then
  646.                    AValue := Ord(NFSe.Status)
  647.                 else
  648.                     AValue := Ord(snfseEmDigitacao);
  649.  
  650.              if AField.FieldName = svdNFsTotal.FieldName then
  651.                 AValue := Total;
  652.  
  653.              if AField.FieldName = svdNFsTomador_RazaoSocial.FieldName then
  654.                 if Assigned(Tomador) then
  655.                    AValue := Tomador.RazaoSocial
  656.                 else
  657.                     AValue := '';
  658.  
  659.              if AField.FieldName = svdNFsTomador_CNPJCPF.FieldName then
  660.                 if Assigned(Tomador) then
  661.                    AValue := Tomador.CNPJ_CPF.Formatted
  662.                 else
  663.                     AValue := '';
  664.  
  665.              if AField.FieldName = svdNFsPrestador_RazaoSocial.FieldName then
  666.                 if Assigned(Prestador) then
  667.                    AValue := Prestador.RazaoSocial
  668.                 else
  669.                     AValue := '';
  670.  
  671.              if AField.FieldName = svdNFsPrestador_CNPJCPF.FieldName then
  672.                 if Assigned(Prestador) then
  673.                    AValue := Prestador.CNPJ_CPF.Value
  674.                 else
  675.                     AValue := '';
  676.  
  677.              if AField.FieldName = svdNFsDtEnvio.FieldName then
  678.                 if Assigned(NFSe) then
  679.                    AValue := NFSe.DtEnvio
  680.                 else
  681.                     AValue := 0;
  682.  
  683.              if AField.FieldName = svdNFsDtProcessada.FieldName then
  684.                 if Assigned(NFSe) then
  685.                    AValue := NFSe.DtProcessada
  686.                 else
  687.                     AValue := 0;
  688.  
  689.              if AField.FieldName = svdNFsDtCancelada.FieldName then
  690.                 if Assigned(NFSe) then
  691.                    AValue := NFSe.DtCancelada
  692.                 else
  693.                     AValue := 0;
  694.         End;
  695. end;
  696.  
  697. procedure TfrmNotas.svdNFsSelectedsAfterScroll(DataSet: TDataSet);
  698. begin
  699.      svdItensNFs.Close;
  700.      svdItensNFs.Open;
  701. end;
  702.  
  703. procedure TfrmNotas.svdNFsSelectedsGetDataCount(Sender: TSnapCustomDataset;
  704.   var ACount: Integer);
  705. begin
  706.      ACount := FNotas.Selected.Count;
  707. end;
  708.  
  709. procedure TfrmNotas.svdNFsSelectedsGetDataValue(Sender: TSnapCustomDataset;
  710.   AField: TField; AIndex: Integer; var AValue: Variant);
  711. begin
  712.      if Assigned(FNotas) and
  713.         (FNotas.Selected <> nil) and
  714.         Assigned(FNotas.Selected.Items[AIndex]) then
  715.         with FNotas.Selected.Items[AIndex] do
  716.         Begin
  717.              if AField.FieldName = svdNFsSelectedsDtEmissao.FieldName then
  718.                 AValue := DtEmissaoRPS;
  719.  
  720.              if AField.FieldName = svdNFsSelectedsId_NotaFiscal.FieldName then
  721.                 AValue := Id_NotaFiscal;
  722.  
  723.              if AField.FieldName = svdNFsSelectedsTotal.FieldName then
  724.                 AValue := Total;
  725.  
  726.              if AField.FieldName = svdNFsSelectedsTomador_RazaoSocial.FieldName then
  727.                 if Assigned(Tomador) then
  728.                    AValue := Tomador.RazaoSocial
  729.                 else
  730.                     AValue := '';
  731.  
  732.              if AField.FieldName = svdNFsSelectedsTomador_Bairro.FieldName then
  733.                 if Assigned(Tomador) then
  734.                    AValue := Tomador.Bairro
  735.                 else
  736.                     AValue := '';
  737.  
  738.              if AField.FieldName = svdNFsSelectedsTomador_CEP.FieldName then
  739.                 if Assigned(Tomador) then
  740.                    AValue := Tomador.CEP.Formatted('#####-###')
  741.                 else
  742.                     AValue := '';
  743.  
  744.              if AField.FieldName = svdNFsSelectedsTomador_Cidade.FieldName then
  745.                 if Assigned(Tomador) and
  746.                    Assigned(Tomador.Cidade) then
  747.                    AValue := Tomador.Cidade.Nome
  748.                 else
  749.                     AValue := '';
  750.  
  751.              if AField.FieldName = svdNFsSelectedsTomador_CNPJCPF.FieldName then
  752.                 if Assigned(Tomador) then
  753.                    AValue := Tomador.CNPJ_CPF.Formatted
  754.                 else
  755.                     AValue := '';
  756.  
  757.              if AField.FieldName = svdNFsSelectedsTomador_Complemento.FieldName then
  758.                 if Assigned(Tomador) then
  759.                    AValue := Tomador.Complemento
  760.                 else
  761.                     AValue := '';
  762.  
  763.              if AField.FieldName = svdNFsSelectedsTomador_Email.FieldName then
  764.                 if Assigned(Tomador) then
  765.                    AValue := Tomador.Email
  766.                 else
  767.                     AValue := '';
  768.  
  769.              if AField.FieldName = svdNFsSelectedsTomador_IM.FieldName then
  770.                 if Assigned(Tomador) then
  771.                    AValue := Tomador.InscrMunicipal.Value
  772.                 else
  773.                     AValue := '';
  774.  
  775.              if AField.FieldName = svdNFsSelectedsTomador_Numero.FieldName then
  776.                 if Assigned(Tomador) then
  777.                    AValue := Tomador.NumeroEnd.Value
  778.                 else
  779.                     AValue := '';
  780.  
  781.              if AField.FieldName = svdNFsSelectedsTomador_Rua.FieldName then
  782.                 if Assigned(Tomador) then
  783.                    AValue := Tomador.Endereco
  784.                 else
  785.                     AValue := '';
  786.  
  787.              if AField.FieldName = svdNFsSelectedsTomador_UF.FieldName then
  788.                 if Assigned(Tomador) and
  789.                    Assigned(Tomador.Cidade) and
  790.                    Assigned(Tomador.Cidade.Estado) then
  791.                    AValue := Tomador.Cidade.Estado.Uf
  792.                 else
  793.                     AValue := '';
  794.  
  795.              if AField.FieldName = svdNFsSelectedsPrestador_RazaoSocial.FieldName then
  796.                 if Assigned(Prestador) then
  797.                    AValue := Prestador.RazaoSocial
  798.                 else
  799.                     AValue := '';
  800.  
  801.              if AField.FieldName = svdNFsSelectedsPrestador_Bairro.FieldName then
  802.                 if Assigned(Prestador) then
  803.                    AValue := Prestador.Bairro
  804.                 else
  805.                     AValue := '';
  806.  
  807.              if AField.FieldName = svdNFsSelectedsPrestador_CEP.FieldName then
  808.                 if Assigned(Prestador) then
  809.                    AValue := Prestador.CEP.Formatted('99999-999')
  810.                 else
  811.                     AValue := '';
  812.  
  813.              if AField.FieldName = svdNFsSelectedsPrestador_Cidade.FieldName then
  814.                 if Assigned(Prestador) and
  815.                    Assigned(Prestador.Cidade) then
  816.                    AValue := Prestador.Cidade.Nome
  817.                 else
  818.                     AValue := '';
  819.  
  820.              if AField.FieldName = svdNFsSelectedsPrestador_CNPJCPF.FieldName then
  821.                 if Assigned(Prestador) then
  822.                    AValue := Prestador.CNPJ_CPF.Formatted
  823.                 else
  824.                     AValue := '';
  825.  
  826.              if AField.FieldName = svdNFsSelectedsPrestador_Complemento.FieldName then
  827.                 if Assigned(Prestador) then
  828.                    AValue := Prestador.Complemento
  829.                 else
  830.                     AValue := '';
  831.  
  832.              if AField.FieldName = svdNFsSelectedsPrestador_IM.FieldName then
  833.                 if Assigned(Prestador) then
  834.                    AValue := Prestador.InscrMunicipal.Value
  835.                 else
  836.                     AValue := '';
  837.  
  838.              if AField.FieldName = svdNFsSelectedsPrestador_Numero.FieldName then
  839.                 if Assigned(Prestador) then
  840.                    AValue := Prestador.NumeroEnd.Value
  841.                 else
  842.                     AValue := '';
  843.  
  844.              if AField.FieldName = svdNFsSelectedsPrestador_Rua.FieldName then
  845.                 if Assigned(Prestador) then
  846.                    AValue := Prestador.Endereco
  847.                 else
  848.                     AValue := '';
  849.  
  850.              if AField.FieldName = svdNFsSelectedsPrestador_UF.FieldName then
  851.                 if Assigned(Prestador) and
  852.                    Assigned(Prestador.Cidade) and
  853.                    Assigned(Prestador.Cidade.Estado) then
  854.                    AValue := Prestador.Cidade.Estado.Uf
  855.                 else
  856.                     AValue := '';
  857.  
  858.              if AField.FieldName = svdNFsSelectedsRPS.FieldName then
  859.                 if Assigned(NFSe) then
  860.                    AValue := NFSe.NumeroRPS
  861.                 else
  862.                     AValue := '';
  863.  
  864.              if AField.FieldName = svdNFsSelectedsDescricao.FieldName then
  865.                 AValue := Descricao;
  866.  
  867.              if AField.FieldName = svdNFsSelectedsPercCOFINS.FieldName then
  868.                 AValue := AliquotaCOFINS;
  869.  
  870.              if AField.FieldName = svdNFsSelectedsPercCSLL.FieldName then
  871.                 AValue := AliquotaCSLL;
  872.  
  873.              if AField.FieldName = svdNFsSelectedsPercINSS.FieldName then
  874.                 AValue := AliquotaINSS;
  875.  
  876.              if AField.FieldName = svdNFsSelectedsPercIR.FieldName then
  877.                 AValue := AliquotaIR;
  878.  
  879.              if AField.FieldName = svdNFsSelectedsPercPIS.FieldName then
  880.                 AValue := AliquotaPIS;
  881.  
  882.              if AField.FieldName = svdNFsSelectedsPercISS.FieldName then
  883.                 AValue := AliquotaISS;
  884.  
  885.              if AField.FieldName = svdNFsSelectedsValorCOFINS.FieldName then
  886.                 AValue := ValorCOFINS;
  887.  
  888.              if AField.FieldName = svdNFsSelectedsValorCSLL.FieldName then
  889.                 AValue := ValorCSLL;
  890.  
  891.              if AField.FieldName = svdNFsSelectedsValorINSS.FieldName then
  892.                 AValue := ValorINSS;
  893.  
  894.              if AField.FieldName = svdNFsSelectedsValorIR.FieldName then
  895.                 AValue := ValorIR;
  896.  
  897.              if AField.FieldName = svdNFsSelectedsValorPIS.FieldName then
  898.                 AValue := ValorPIS;
  899.  
  900.              if AField.FieldName = svdNFsSelectedsValorISS.FieldName then
  901.                 AValue := ValorISS;
  902.  
  903.              if AField.FieldName = svdNFsSelectedsTotalDeducoes.FieldName then
  904.                 if Assigned(Deducoes) then
  905.                    AValue := Deducoes.Total
  906.                 else
  907.                     AValue := 0;
  908.         End;
  909. end;
  910.  
  911. procedure TfrmNotas.svdNFsSetDataValue(Sender: TSnapCustomDataset;
  912.   AField: TField; AIndex: Integer; AValue: Variant);
  913. begin
  914.      if Assigned(FNotas) and
  915.         Assigned(FNotas.Items[AIndex]) and
  916.         (AField.FieldName = svdNFsEscolhido.FieldName) then
  917.         FNotas.Items[AIndex].Escolhido := AField.AsBoolean;
  918. end;
  919.  
  920. procedure TfrmNotas.svdNFsStatusGetText(Sender: TField; var Text: string;
  921.   DisplayText: Boolean);
  922. begin
  923.      Text := StatusNFSeToStr(TStatusNFSe(Sender.AsInteger));
  924. end;
  925.  
  926. end.
clone this paste RAW Paste Data