• R/O
  • SSH
  • HTTPS

integradorcaie: コミット


コミットメタ情報

リビジョン4 (tree)
日時2018-12-04 07:05:35
作者derekwildstar

ログメッセージ

- Geração de arquivo CSV
- Ajustes para adequação ao Krakatoa

変更サマリ

差分

--- trunk/prj/IntegradorCAIE.dpr (revision 3)
+++ trunk/prj/IntegradorCAIE.dpr (revision 4)
@@ -14,7 +14,8 @@
1414 UFormStatus in '..\src\UFormStatus.pas' {FormStatus},
1515 URequestThreadCAIE in '..\src\lib\URequestThreadCAIE.pas',
1616 Vcl.Themes,
17- Vcl.Styles;
17+ Vcl.Styles,
18+ KRK.Lib.Vcl.Forms;
1819
1920 {$R *.res}
2021
--- trunk/src/lib/UConfiguracoes.pas (revision 3)
+++ trunk/src/lib/UConfiguracoes.pas (revision 4)
@@ -15,7 +15,7 @@
1515 FPFXPassword: String;
1616 FCSPTypeId: Byte;
1717 FCSPName: String;
18- FSubsystemProtocol: String;
18+ FSystemStoreName: String;
1919 FSystemStoreLocation: Byte;
2020 FSuccessfulExecution: Boolean;
2121 public
@@ -26,7 +26,7 @@
2626 property PFXPassword: String read FPFXPassword write FPFXPassword;
2727 property CSPTypeId: Byte read FCSPTypeId write FCSPTypeId;
2828 property CSPName: String read FCSPName write FCSPName;
29- property SubsystemProtocol: String read FSubsystemProtocol write FSubsystemProtocol;
29+ property SystemStoreName: String read FSystemStoreName write FSystemStoreName;
3030 property SystemStoreLocation: Byte read FSystemStoreLocation write FSystemStoreLocation;
3131 property SuccessfulExecution: Boolean read FSuccessfulExecution write FSuccessfulExecution;
3232 end;
@@ -50,7 +50,7 @@
5050 FCSPTypeId := 0;
5151 FCSPName := '';
5252 FSystemStoreLocation := 0;
53- FSubsystemProtocol := 'MY';
53+ FSystemStoreName := 'MY';
5454 FSuccessfulExecution := False;
5555 LoadFromTextFile(ChangeFileExt(ParamStr(0),'.dat'));
5656 end;
--- trunk/src/lib/URequestThread.pas (revision 3)
+++ trunk/src/lib/URequestThread.pas (revision 4)
@@ -151,6 +151,7 @@
151151
152152 { HttpSendRequest }
153153 RO.HttpSendRequestParams.IgnoreInvalidCertificateCA := True;
154+ RO.HttpOpenRequestParams.IgnoreInvalidCertificates := True;
154155 { HttpSendRequest (extras) }
155156 RO.HttpSendRequestParams.OnBeforeHttpSendRequest := DoBeforeHttpSendRequest;
156157
--- trunk/src/UDamoPrincipal.pas (revision 3)
+++ trunk/src/UDamoPrincipal.pas (revision 4)
@@ -92,6 +92,7 @@
9292 function CarregarArquivoDeDados: Boolean;
9393 procedure SalvarArquivoDeDados(AMaisFormatos: Boolean = False);
9494 procedure EnviarArquivoDeDados(ANomeDoArquivo: String = '');
95+ procedure SalvarPlanilaDoExcel;
9596
9697 property UsuarioAtual: Pessoa read FUsuarioAtual;
9798 end;
@@ -252,6 +253,7 @@
252253 procedure TDamoPrincipal.DASOCartoriosDataChange(Sender: TObject; Field: TField);
253254 begin
254255 FormPrincipal.PNGSSalvar.Enabled := Assigned(FUsuarioAtual) and (FUsuarioAtual.cpf <> '') and (not CLDSCartorios.IsEmpty);
256+ FormPrincipal.PNGSSalvarExcel.Enabled := FormPrincipal.PNGSSalvar.Enabled;
255257 FormPrincipal.PNGSEnviar.Enabled := FormPrincipal.PNGSSalvar.Enabled;
256258 end;
257259
@@ -666,6 +668,10 @@
666668 begin
667669 if Assigned(FUsuarioAtual) and (FUsuarioAtual.cpf <> '') then
668670 begin
671+ SADI.DefaultExt := '.ica';
672+ SADI.Filter := 'Arquivo de dados do Integrador CAIE (*.ica)|*.ica';
673+ SADI.Options := [ofHideReadOnly, ofPathMustExist, ofEnableSizing];
674+ SADI.Title := 'Informe o local e um nome de arquivo';
669675 SADI.FileName := Format('%.11d%s',[StrToInt64(FUsuarioAtual.cpf),FormatDateTime('yyyymmddhhnnss',Now)]);
670676
671677 if (not CLDSCartorios.IsEmpty) and SADI.Execute then
@@ -726,6 +732,295 @@
726732 end;
727733 end;
728734
735+//function TDamoPrincipal.GetFileContentsCSV(ACartorios, AGuias, AAtos, AReceitas: TClientDataSet): String;
736+//// -- //////////////////////////////////////////////////////////////////////////
737+//function GenerateLine(AFields: TFields): String;
738+//var
739+// Field: TField;
740+//begin
741+// Result := '';
742+//
743+// for Field in AFields do
744+// begin
745+// if Field.DataType <> ftDataSet then
746+// case Field.Tag of
747+// 0: Result := Result + FormatFloat(DupeString('0',Field.Size),StrToInt64Def(Field.AsString,0)); // Número inteiro
748+// 1: Result := Result + Field.AsString + DupeString(' ',Field.Size - Length(Field.AsString)); // Texto
749+// 2: Result := Result + FormatDateTime('yyyymmdd',Field.AsDateTime); // Data
750+// 3: Result := Result + FormatFloat(DupeString('0',Field.Size),StrToCurrDef(Field.AsString,0,TFormatSettings.Create('en-US')) * 100); // Valor monetário
751+// end;
752+// end;
753+//end;
754+//
755+//function GenerateId(ATipo: Char; AId: Cardinal; AIdPai: Cardinal): String;
756+//begin
757+// Result := ATipo + FormatFloat('0000000000',AId) + FormatFloat('0000000000',AIdPai);
758+//end;
759+//// -- //////////////////////////////////////////////////////////////////////////
760+//var
761+// C, QuantidadeC: Cardinal;
762+// G, QuantidadeG: Cardinal;
763+// A, QuantidadeA: Cardinal;
764+// R, QuantidadeR: Cardinal;
765+//
766+// CartoriosBM, GuiasBM, AtosBM, ReceitasBM: TBookmark;
767+//// -- //////////////////////////////////////////////////////////////////////////
768+//function ApplyHeader(const AResult: String): String;
769+//begin
770+// Result := Trim(AResult);
771+// Result := 'H' + GenerateHash(UTF8String(Result),haMd5) + FormatFloat(DupeString('0',11),StrToInt64Def(AUsuarioAtual.cpf,0)) + AUsuarioAtual.nome + DupeString(' ',100 - Length(AUsuarioAtual.nome)) + FormatFloat('0000000000',QuantidadeC) + FormatFloat('0000000000',QuantidadeG) + FormatFloat('0000000000',QuantidadeA) + FormatFloat('0000000000',QuantidadeR) + #13#10 + Result;
772+//end;
773+//// -- //////////////////////////////////////////////////////////////////////////
774+//begin
775+// Result := '';
776+//
777+// if (not Assigned(AUsuarioAtual)) or (AUsuarioAtual.cpf = '') then
778+// Exit;
779+//
780+// QuantidadeC := 0;
781+// QuantidadeG := 0;
782+// QuantidadeA := 0;
783+// QuantidadeR := 0;
784+//
785+// if ACartorios.RecordCount > 0 then
786+// begin
787+// ACartorios.DisableControls;
788+// CartoriosBM := ACartorios.Bookmark;
789+// AGuias.DisableControls;
790+// GuiasBM := AGuias.Bookmark;
791+// AAtos.DisableControls;
792+// AtosBM := AAtos.Bookmark;
793+// AReceitas.DisableControls;
794+// ReceitasBM := AReceitas.Bookmark;
795+// try
796+// C := 0;
797+// ACartorios.First;
798+// while not ACartorios.Eof do
799+// begin
800+// Inc(C);
801+// Inc(QuantidadeC); // Seria desnecessário, já que C não é zerado nunca, mas é melhor manter as coisas bem claras
802+// Result := Result + GenerateId('C',C,0) + GenerateLine(ACartorios.Fields) + #13#10;
803+//
804+// if AGuias.RecordCount > 0 then
805+// begin
806+// G := 0;
807+// AGuias.First;
808+// while not AGuias.Eof do
809+// begin
810+// Inc(G);
811+// Inc(QuantidadeG);
812+// Result := Result + GenerateId('G',G,C) + GenerateLine(AGuias.Fields) + #13#10;
813+//
814+// if AAtos.RecordCount > 0 then
815+// begin
816+// A := 0;
817+// AAtos.First;
818+// while not AAtos.Eof do
819+// begin
820+// Inc(A);
821+// Inc(QuantidadeA);
822+// Result := Result + GenerateId('A',A,G) + GenerateLine(AAtos.Fields) + #13#10;
823+//
824+// if AReceitas.RecordCount > 0 then
825+// begin
826+// R := 0;
827+// AReceitas.First;
828+// while not AReceitas.Eof do
829+// begin
830+// Inc(R);
831+// Inc(QuantidadeR);
832+// Result := Result + GenerateId('R',R,A) + GenerateLine(AReceitas.Fields) + #13#10;
833+//
834+// AReceitas.Next;
835+// end;
836+// end;
837+//
838+// AAtos.Next;
839+// end;
840+// end;
841+//
842+// AGuias.Next;
843+// end
844+// end;
845+//
846+// ACartorios.Next;
847+// end;
848+// finally
849+// ACartorios.Bookmark := CartoriosBM;
850+// ACartorios.EnableControls;
851+// AGuias.Bookmark := GuiasBM;
852+// AGuias.EnableControls;
853+// AAtos.Bookmark := AtosBM;
854+// AAtos.EnableControls;
855+// AReceitas.Bookmark := ReceitasBM;
856+// AReceitas.EnableControls;
857+// end;
858+// end;
859+//
860+// Result := ApplyHeader(Result);
861+//end;
862+
863+procedure TDamoPrincipal.SalvarPlanilaDoExcel;
864+// -- //////////////////////////////////////////////////////////////////////////
865+function Linha(AFields: TFields): String;
866+var
867+ Field: TField;
868+begin
869+ Result := '';
870+// FieldName = 'cns'
871+// FieldName = 'nomeCartorio'
872+// FieldName = 'nomeTitular'
873+// FieldName = 'cpfTitular'
874+// FieldName = 'guia'
875+
876+// FieldName = 'numeroGuia'
877+// FieldName = 'nomeSacado'
878+// FieldName = 'cpfSacado'
879+// FieldName = 'dataEmissao'
880+// FieldName = 'dataPagamento'
881+// FieldName = 'dataCredito'
882+// FieldName = 'valor'
883+// FieldName = 'tarifaBanco'
884+// FieldName = 'formaPagamento'
885+// FieldName = 'numeroRemessa'
886+// FieldName = 'ato'
887+
888+// FieldName = 'codigo'
889+// FieldName = 'descricao'
890+// FieldName = 'quantidade'
891+// FieldName = 'tipoServico'
892+// FieldName = 'receita'
893+
894+// FieldName = 'codigo'
895+// FieldName = 'descricao'
896+// FieldName = 'valor'
897+
898+
899+ with TStringList.Create do
900+ try
901+ for Field in AFields do
902+ if Field.DataType <> ftDataSet then
903+ case Field.Tag of
904+ 0: begin // Número inteiro
905+ if (Field.FieldName = 'cpfTitular') or (Field.FieldName = 'cpfSacado') then
906+ Add(Field.DisplayText)
907+ else
908+ Add(Field.AsString);
909+ end;
910+ 1: Add('"' + Field.AsString + '"'); // Texto
911+ 2: Add(FormatDateTime('dd/mm/yyyy',Field.AsDateTime)); // Data
912+ 3: Add(Field.DisplayText); // Valor monetário
913+ end;
914+ Result := StringReplace(Trim(Text),#13#10,';',[rfReplaceAll]);
915+ finally
916+ Free;
917+ end;
918+end;
919+// CNS;NOME DO CARTÓRIO;NOME DO TITULAR;CPF DO TITULAR;NUMERO DA GUIA;NOME DO SACADO;CPF DO SACADO;DATA DE EMISSÃO;DATA DE PAGAMENTO;DATA DE CRÉDITO;VALOR;TARIFA DO BANCO;FORMA DE PAGAMENTO;NÚMERO DA REMESSA;ATO;DESCRIÇÃO;QUANTIDADE;TIPO DE SERVIÇO;RECEITA;DESCRIÇÃO;VALOR
920+function LinhaCartorios: String;
921+begin
922+ Result := Linha(CLDSCartorios.Fields) + ';;;;;;;;;;;;;;;;;';
923+end;
924+
925+function LinhaGuias: String;
926+begin
927+ Result := ';;;;' + Linha(CLDSGuias.Fields) + ';;;;;;;';
928+end;
929+
930+function LinhaAtos: String;
931+begin
932+ Result := ';;;;;;;;;;;;;;' + Linha(CLDSAtos.Fields) + ';;;';
933+end;
934+
935+function LinhaReceitas: String;
936+begin
937+ Result := ';;;;;;;;;;;;;;;;;;' + Linha(CLDSReceitas.Fields);
938+end;
939+// -- //////////////////////////////////////////////////////////////////////////
940+var
941+ CartoriosBM, GuiasBM, AtosBM, ReceitasBM: TBookmark;
942+begin
943+ SADI.DefaultExt := '.csv';
944+ SADI.Filter := 'Planilha do Excel (*.csv)|*.csv';
945+ SADI.Options := [ofHideReadOnly, ofPathMustExist, ofEnableSizing, ofOverwritePrompt];
946+ SADI.Title := 'Informe o local e um nome de arquivo';
947+ SADI.FileName := Format('%.11d%s',[StrToInt64(FUsuarioAtual.cpf),FormatDateTime('yyyymmddhhnnss',Now)]);
948+
949+ if (not CLDSCartorios.IsEmpty) and SADI.Execute then
950+ with TStringList.Create do
951+ try
952+ if CLDSCartorios.RecordCount > 0 then
953+ begin
954+ // Cabeçalho
955+ Add('"CNS";"NOME DO CARTÓRIO";"NOME DO TITULAR";"CPF DO TITULAR";"NUMERO DA GUIA";"NOME DO SACADO";"CPF DO SACADO";"DATA DE EMISSÃO";"DATA DE PAGAMENTO";"DATA '+'DE CRÉDITO";"VALOR";"TARIFA DO BANCO";"FORMA DE PAGAMENTO";"NÚMERO DA REMESSA";"ATO";"DESCRIÇÃO";"QUANTIDADE";"TIPO DE SERVIÇO";"RECEITA";"DESCRIÇÃO";"VALOR"');
956+
957+ CLDSCartorios.DisableControls;
958+ CartoriosBM := CLDSCartorios.Bookmark;
959+ CLDSGuias.DisableControls;
960+ GuiasBM := CLDSGuias.Bookmark;
961+ CLDSAtos.DisableControls;
962+ AtosBM := CLDSAtos.Bookmark;
963+ CLDSReceitas.DisableControls;
964+ ReceitasBM := CLDSReceitas.Bookmark;
965+ try
966+ CLDSCartorios.First;
967+ while not CLDSCartorios.Eof do
968+ begin
969+ Add(LinhaCartorios);
970+
971+ if CLDSGuias.RecordCount > 0 then
972+ begin
973+ CLDSGuias.First;
974+ while not CLDSGuias.Eof do
975+ begin
976+ Add(LinhaGuias);
977+
978+ if CLDSAtos.RecordCount > 0 then
979+ begin
980+ CLDSAtos.First;
981+ while not CLDSAtos.Eof do
982+ begin
983+ Add(LinhaAtos);
984+
985+ if CLDSReceitas.RecordCount > 0 then
986+ begin
987+ CLDSReceitas.First;
988+ while not CLDSReceitas.Eof do
989+ begin
990+ Add(LinhaReceitas);
991+
992+ CLDSReceitas.Next;
993+ end;
994+ end;
995+
996+ CLDSAtos.Next;
997+ end;
998+ end;
999+
1000+ CLDSGuias.Next;
1001+ end;
1002+ end;
1003+
1004+ CLDSCartorios.Next;
1005+ end;
1006+ finally
1007+ CLDSCartorios.Bookmark := CartoriosBM;
1008+ CLDSCartorios.EnableControls;
1009+ CLDSGuias.Bookmark := GuiasBM;
1010+ CLDSGuias.EnableControls;
1011+ CLDSAtos.Bookmark := AtosBM;
1012+ CLDSAtos.EnableControls;
1013+ CLDSReceitas.Bookmark := ReceitasBM;
1014+ CLDSReceitas.EnableControls;
1015+ end;
1016+ end;
1017+
1018+ SaveToFile(SADI.FileName,TEncoding.UTF8);
1019+ finally
1020+ Free;
1021+ end;
1022+end;
1023+
7291024 function TDamoPrincipal.SelecionarCertificado: Boolean;
7301025 var
7311026 SCP: TSelectCertificateParams;
@@ -740,7 +1035,7 @@
7401035
7411036 SCP.CSPName := Configuracoes.CSPName;
7421037 SCP.ProviderTypeId := Configuracoes.CSPTypeId;
743- SCP.SubsystemProtocol := Configuracoes.SubsystemProtocol;
1038+ SCP.SystemStoreName := Configuracoes.SystemStoreName;
7441039 SCP.CertificateFile := Configuracoes.PFXFile;
7451040 SCP.CertificatePassword := Configuracoes.PFXPassword;
7461041 SCP.SelectDialogTitle := 'Selecione a sua identificação digital';
@@ -768,7 +1063,13 @@
7681063
7691064 SCP.CSPName := Configuracoes.CSPName;
7701065 SCP.ProviderTypeId := Configuracoes.CSPTypeId;
771- SCP.SubsystemProtocol := Configuracoes.SubsystemProtocol;
1066+ SCP.SystemStoreName := Configuracoes.SystemStoreName;
1067+
1068+ case Configuracoes.SystemStoreLocation of
1069+ 0: SCP.SystemStoreLocation := CERT_SYSTEM_STORE_CURRENT_USER;
1070+ 1: SCP.SystemStoreLocation := CERT_SYSTEM_STORE_LOCAL_MACHINE;
1071+ end;
1072+
7721073 SCP.CertificateFile := Configuracoes.PFXFile;
7731074 SCP.CertificatePassword := Configuracoes.PFXPassword;
7741075 SCP.SelectDialogTitle := 'Teste de seleção de certificado';
--- trunk/src/UFormPrincipal.pas (revision 3)
+++ trunk/src/UFormPrincipal.pas (revision 4)
@@ -149,6 +149,7 @@
149149 LABETipoDeServico: TLabel;
150150 DBTXTipoDoServico: TDBText;
151151 BUTNEnviarDebug: TButton;
152+ PNGSSalvarExcel: TPngSpeedButton;
152153 procedure FormCreate(Sender: TObject);
153154 procedure FormDestroy(Sender: TObject);
154155 procedure PNGBPreviousClick(Sender: TObject);
@@ -186,6 +187,7 @@
186187 procedure TASHAtosShow(Sender: TObject);
187188 procedure TASHReceitasShow(Sender: TObject);
188189 procedure BUTNEnviarDebugClick(Sender: TObject);
190+ procedure PNGSSalvarExcelClick(Sender: TObject);
189191 private
190192 { Private declarations }
191193 FDamoPrincipal: TDamoPrincipal;
@@ -431,6 +433,11 @@
431433 FDamoPrincipal.SalvarArquivoDeDados;
432434 end;
433435
436+procedure TFormPrincipal.PNGSSalvarExcelClick(Sender: TObject);
437+begin
438+ FDamoPrincipal.SalvarPlanilaDoExcel;
439+end;
440+
434441 procedure TFormPrincipal.PNGSStep5AllToBottomClick(Sender: TObject);
435442 begin
436443 LIBOStep5CartoriosDisponiveis.SelectAll;
@@ -528,7 +535,7 @@
528535 Configuracoes.CSPTypeId := StrToIntDef(EDITStep2CSPType.Text,0);
529536 Configuracoes.CSPName := EDITStep2CSPName.Text;
530537
531- Configuracoes.SubsystemProtocol := CBBXSubsystemProtocol.Text;
538+ Configuracoes.SystemStoreName := CBBXSubsystemProtocol.Text;
532539 Configuracoes.SystemStoreLocation := CBBXStep2SystemStoreLocation.ItemIndex;
533540
534541 Configuracoes.Save;
@@ -607,7 +614,7 @@
607614
608615 CBBXStep2SystemStoreLocation.ItemIndex := Configuracoes.SystemStoreLocation;
609616 CBBXStep2SystemStoreLocationChange(CBBXStep2SystemStoreLocation);
610- CBBXSubsystemProtocol.ItemIndex := CBBXSubsystemProtocol.Items.IndexOf(Configuracoes.SubsystemProtocol);
617+ CBBXSubsystemProtocol.ItemIndex := CBBXSubsystemProtocol.Items.IndexOf(Configuracoes.SystemStoreName);
611618 end;
612619
613620 end.
旧リポジトリブラウザで表示