Organização e Dinâmica de Casos

Neste livro se encontram os processos referentes à organização e dinâmica dos casos, desde o processo de organização dos diretórios, configuração do ambiente de trabalho, "escolha" de um caso, etc

As páginas são conectadas umas às outras, por isso, a navegação neste livro pode ser feita de forma bem intuitiva e fluída.

Fluxograma do processo

Por se tratar de um processo com muitas etapas, a imagem não se encontra na melhor resolução. Para solucionar isso, clique na imagem para abrir em seu tamanho original.

ProcessoDesenvolvimento_V2.png

Configuração Inicial

Nesta página, estão as configurações iniciais que você deve definir antes de iniciar na implementação/correção de casos e as demais etapas envolvidas no processo:

  1. Primeiramente, certifique-se de possuir acesso ao SVN com suas credenciais e de configurar sua Estrutura no SVN seguindo o padrão definido no tópico indicado.
  2. Em seguida, verifique e organize na sua máquina a disposição do seu Diretório local de casos.
  3. Após a conclusão das etapas anteriores, vamos configurar a library path do Delphi e suas diretivas, para isso, pode-se acessar o capítulo: Configurando o ambiente de trabalho.

Pronto, agora estamos prontos para avançar para o nosso roteiro de trabalho.

Configurando o ambiente de trabalho

Configurando o ambiente de trabalho

Configurando a IDE

Pré-Requisito: 

- Em seu C:\ ter a pasta "Codigo Fonte" referente ao Trunk, porém não trabalhará nela. Veja como fazer um Checkout e aponte para o endereço do Trunk.

Screenshot_2.png

 

- Ter criado o seu Diretório de Casos

Para Iniciar

- Abra seu Delphi.

- Adicionar Library Padrão.

- Alterar as Variáveis de Ambiente Padrões.

Configurando o ambiente de trabalho

Adicionar/Editar Library

Library é o local para especificar caminhos em seu computador para o compilador encontrar algumas Units.

Com Delphi aberto, Vá no menu Tools > Options

2.png

 

Navegue até Delphi Options -> Library

1.png

Em "Library path" você fará suas alterações, se for colocar a Library Padrão, copie ela Clicando Aqui , e cole dentro do campo em questão.

Caso contrário poderá apertar no botão à direita do campo e abrirá a tela para Remover, Editar e Adicionar caminhos a sua Library.

3.png

Aperte em OK e suas alterações estarão salvas.

Configurando o ambiente de trabalho

Library Padrão

Pré-requisitos

Saber como alterar a "Library", para isso Acesse Aqui


Antes de atualizar sua Library aconselhamos que faça backup da sua atual, para que se der algum eventual problema, não fique totalmente travado.
Library Padrão 2.2 atualizada em: 29/05/2023

Qualquer alteração realizada na library padrão, deve ser descrita em "Relatar Alterações" encontrada no canto superior direito, lembrando de atualizar o título, a data de atualização e incrementando 0.1 no seu versionamento.

$(BDS)\Bin;$(BDS)\Imports;$(BDS)\include;$(BDSCOMMONDIR)\Dcp;$(BDSLIB)\$(Platform)\release;$(BDSUSERDIR)\Imports;$(CodigoFonte)\ClassesComuns;$(CodigoFonte)\ClassesD10;$(CodigoFonte)\ClassesD10\AtualizacaoBackground;$(CodigoFonte)\ClassesD10\Firebird3;$(CodigoFonte)\ClassesD10\Firebird3\;$(CodigoFonte)\ClassesD10\GraficoBaseCorrompida;$(CodigoFonte)\Componentes Instalados\SS\Fontes;$(CodigoFonte)\DESENVOL\Cobranca\Client\Source;$(CodigoFonte)\DESENVOL\Especie\Client\Source;$(CodigoFonte)\DESENVOL\EspTit\Client\Source;$(CodigoFonte)\DESENVOL\Feriados\Client\Source;$(CodigoFonte)\DESENVOL\GrupoCli\Client\Source;$(CodigoFonte)\DESENVOL\InciFisc\Client\Source;$(CodigoFonte)\DESENVOL\ParProd\Client\Source;$(CodigoFonte)\DESENVOL\QuebraPr\Client\Source;$(CodigoFonte)\DESENVOL\RamoAtiv\Client\Source;$(CodigoFonte)\DESENVOL\Regiao\Client\Source;$(CodigoFonte)\DESENVOL\ServBco\Client\Source;$(CodigoFonte)\DESENVOL\UniMeds\Client\Source;$(CodigoFonte)\Fontes comuns;$(CodigoFonte)\Fontes comuns CentralOP;$(CodigoFonte)\Fontes comuns CentralOP\;$(CodigoFonte)\Fontes comuns\Biblioteca\Task Scheduler\Source;$(CodigoFonte)\Fontes comuns\VDMobile;$(CodigoFonte)\Fontes comuns\VDMobile\Sincronizador;$(CodigoFonte)\Fontes comuns\VDMobile\Sincronizador\TriggersFB;$(CodigoFonte)\Fontes comuns\VDMobile\Sincronizador\TriggersFB\Expet;$(CodigoFonte)\Forms_Owner;$(CodigoFonte)\Forms_Owner\BancoDeDados;$(CodigoFonte)\Helpers;$(CodigoFonte)\Skin;$(CodigoFonte)\Skin\splash;$(CodigoFonte)\SSEditor;$(CodigoFonte)\SSGerRel;$(CodigoFonte)\SSRelat;$(CodigoFonte)\WorkingCopies\Sistemas\SSVendas\Mobile;$(CodigoFonte)\WorkingCopies\SISTEMAS_SS\Compilador_Automatico_2.0\Componentes\RDP;$(CodigoTerceiros)\Abbrevia\source;$(CodigoTerceiros)\AlphaControls 2019 v14.22\DX10Tokyo;$(CodigoTerceiros)\CEF4Delphi-master\source;$(CodigoTerceiros)\DelphiChromiumEmbeddedFramework\src;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressBars\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressCommon Library\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressCore Library\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressDataController\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressEditors Library\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressGDI+ Library\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressLayout Control\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressLibrary\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressOfficeCore Library\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressPageControl\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressQuantumGrid\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressQuantumTreeList\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressScheduler\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressSkins Library\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressSpreadSheet Core\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\Library\RAD Studio 10.2;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\Library\RAD Studio 10.2C:\Program Files (x86)\Embarcadero\Studio\19.0\source\data\firedac;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\XP Theme Manager\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\ExpressPDFViewer\Sources;$(CodigoTerceiros)\DevExpress\DevExpress22.2.3\Library\RS25;$(CodigoTerceiros)\FastReport\FastScript;$(CodigoTerceiros)\FastReport\LibD25;$(CodigoTerceiros)\FastReport\Source;$(CodigoTerceiros)\FastReport\Source\ExportPack;$(CodigoTerceiros)\FireDAC;$(CodigoTerceiros)\fortesreport-ce-master\Source;$(CodigoTerceiros)\gradpan;$(CodigoTerceiros)\Halcyon.v.6.9.8.0.D7.XE10.Src.Exirbox\Source;$(CodigoTerceiros)\Outros\Bubelen;$(CodigoTerceiros)\Outros\DCPcrypt;$(CodigoTerceiros)\Outros\DCPcrypt\Hashes;$(CodigoTerceiros)\Outros\delphichromiumembedded\src;$(CodigoTerceiros)\Outros\EMenuUse\component;$(CodigoTerceiros)\Outros\EMenuUse\DNIaeverMainMenu;$(CodigoTerceiros)\Outros\GExpert 2006;$(CodigoTerceiros)\Outros\KbmMemTable\Source;$(CodigoTerceiros)\Outros\OmniXML;$(CodigoTerceiros)\pngimage;$(CodigoTerceiros)\RxLib for Delphi 10.2 Tokyo\units;$(CodigoTerceiros)\TMS Component Pack 9.0.2.0;$(CodigoTerceiros)\TPLockBox\source;$(CodigoTerceiros)\VirtualTreeView\Source;$(CodigoTerceiros)\Clever Internet Suite v9.1.0\SourceFiles\common;$(RotinasComuns)\Bpls\ManagerPluginsBpl;$(RotinasComuns)\Bpls\ManagerPluginsClient;$(RotinasComuns)\Bpls\SuperForms;$(RotinasComuns)\Cadastros;$(RotinasComuns)\CadastrosFP;$(RotinasComuns)\Calculos;$(RotinasComuns)\Certificado Digital;$(RotinasComuns)\Classes;$(RotinasComuns)\Classes\NFSE;$(RotinasComuns)\Classes\NFSE;$(RotinasComuns)\Classes\OCR;$(RotinasComuns)\ClassesFP;$(RotinasComuns)\Comunicados;$(RotinasComuns)\Comunicados\Json;$(RotinasComuns)\Comunicados\Requisicoes;$(RotinasComuns)\ComunsDll;$(RotinasComuns)\ComunsDll\Expet;$(RotinasComuns)\ComunsDll\Ipe;$(RotinasComuns)\ComunsDll\Itauna;$(RotinasComuns)\ComunsDll\Oasis;$(RotinasComuns)\ComunsDll\Waybor;$(RotinasComuns)\DesignPatterns;$(RotinasComuns)\Dialogs;$(RotinasComuns)\Efd\IcmsIpi;$(RotinasComuns)\EscritorioVirtual\Funcionarios\Json;$(RotinasComuns)\EscritorioVirtual\Helpers;$(RotinasComuns)\eSocial;$(RotinasComuns)\FormsContainers;$(RotinasComuns)\Frames;$(RotinasComuns)\Funcoes;$(RotinasComuns)\GUI;$(RotinasComuns)\Importacoes\Classes;$(RotinasComuns)\NovoGerador;$(RotinasComuns)\Outras;$(RotinasComuns)\Outras\Ajuda;$(RotinasComuns)\Outras\Anexos;$(RotinasComuns)\Outras\Atualizacao\CampoNulo;$(RotinasComuns)\Outras\Atualizacao\MatrizAlt;$(RotinasComuns)\Outras\Auditoria;$(RotinasComuns)\Outras\Backup;$(RotinasComuns)\Outras\BuscaCEP;$(RotinasComuns)\Outras\BuscaDadosRF;$(RotinasComuns)\Outras\Configurador;$(RotinasComuns)\Outras\Confinicial;$(RotinasComuns)\Outras\Contrato;$(RotinasComuns)\Outras\GarantiaAC;$(RotinasComuns)\Outras\GerarPDF;$(RotinasComuns)\Outras\GraficoBaseCorrompida;$(RotinasComuns)\Outras\Ocorrencias;$(RotinasComuns)\Outras\Preview;$(RotinasComuns)\Outras\Protecao;$(RotinasComuns)\Outras\Tarefas;$(RotinasComuns)\Outras\Videos;$(RotinasComuns)\Outras\VoltaDB;$(RotinasComuns)\ProgressControl;$(RotinasComuns)\Relatorios;$(RotinasComuns)\SAT;$(RotinasComuns)\Sped;$(RotinasComuns)\Sped\Efd\Contribuicoes;$(RotinasComuns)\Sped\Efd\IcmsIpi;$(RotinasComuns)\Sped\REINF;$(RotinasComuns)\Sped\REINF\R1000;$(RotinasComuns)\Sped\REINF\R2010;$(RotinasComuns)\Sped\REINF\R2020;$(RotinasComuns)\Sped\REINF\R2050;$(RotinasComuns)\Sped\REINF\R2055;$(RotinasComuns)\Sped\REINF\R2060;$(RotinasComuns)\Sped\REINF\R2070;$(RotinasComuns)\Sped\REINF\R2098;$(RotinasComuns)\Sped\REINF\R2099;$(RotinasComuns)\Sped\REINF\R9000;$(RotinasComuns)\SSGerador;$(RotinasComuns)\TabelasImpostosWebService\Helpers;$(RotinasComuns)\TabelasImpostosWebService\Json;$(RotinasComuns)\TabelasImpostosWebService\Requisicoes;$(RotinasComuns)\TabelasImpostosWebService\WebService;$(RotinasComuns)\Folha;$(RotinasComuns)\Folha\Relatorios;$(TEELIBPATH);C:\Componentes\ACBr\Fontes\ACBrBoleto;C:\Componentes\ACBr\Fontes\ACBrBoleto\FC;C:\Componentes\ACBr\Fontes\ACBrBoleto\FC\Fast;C:\Componentes\ACBr\Fontes\ACBrBoleto\FC\Fortes;C:\Componentes\ACBr\Fontes\ACBrBoleto\Logos;C:\Componentes\ACBr\Fontes\ACBrBoleto\Logos\Colorido;C:\Componentes\ACBr\Fontes\ACBrBoleto\Logos\PretoBranco;C:\Componentes\ACBr\Fontes\ACBrBoleto\WS;C:\Componentes\ACBr\Fontes\ACBrCapicom;C:\Componentes\ACBr\Fontes\ACBrComum;C:\Componentes\ACBr\Fontes\ACBrDFe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrANe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrANe\PCNANe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrBlocoX;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrBlocoX\PCNBlocoX;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrBPe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrBPe\DABPE;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrBPe\DABPE\EscPos;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrBPe\DABPE\Fast;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrBPe\DABPE\Fortes;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrBPe\PCNBPe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrCIOT;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrCIOT\PCNCIOT;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrCTe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrCTe\DACTE;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrCTe\DACTE\Fast;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrCTe\DACTE\Fortes;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrCTe\PCNCTe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBreSocial;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBreSocial\PCNeSocial;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrGNRE;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrGNRE\GNRE;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrGNRE\GNRE\Fast;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrGNRE\GNRE\Fortes;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrGNRE\PCNGNRE;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrMDFe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrMDFe\DAMDFE;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrMDFe\DAMDFE\Fast;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrMDFe\DAMDFE\Fortes;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrMDFe\PCNMDFe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNF3e;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNF3e\DANF3e;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNF3e\DANF3e\EscPos;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNF3e\PCNNF3e;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFe\ACBrECFVirtualNFCe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFe\DANFE;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFe\DANFE\NFCe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFe\DANFE\NFCe\EscPos;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFe\DANFE\NFCe\Fast;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFe\DANFE\NFCe\Fortes;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFe\DANFE\NFe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFe\DANFE\NFe\Fast;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFe\DANFE\NFe\Fortes;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFe\PCNNFe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFSe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFSe\DANFSE;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFSe\DANFSE\Fast;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFSe\DANFSE\Fortes;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFSe\PCNNFSe;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFSe\Provedores;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFSeX;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFSeX\Base;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFSeX\Base\Provedores;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFSeX\Base\WebServices;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFSeX\DANFSE;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFSeX\Modelos;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrNFSeX\Provedores;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrONE;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrONE\PCNONE;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrReinf;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrReinf\PCNReinf;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrSATWS;C:\Componentes\ACBr\Fontes\ACBrDFe\ACBrSATWS\PCNSATWS;C:\Componentes\ACBr\Fontes\ACBrDiversos;C:\Componentes\ACBr\Fontes\ACBrDiversos\ACBrFalaWaves;C:\Componentes\ACBr\Fontes\ACBrIntegrador;C:\Componentes\ACBr\Fontes\ACBrIntegrador\pcnVFPe;C:\Componentes\ACBr\Fontes\ACBrOpenSSL;C:\Componentes\ACBr\Fontes\ACBrPicPay;C:\Componentes\ACBr\Fontes\ACBrSAT;C:\Componentes\ACBr\Fontes\ACBrSAT\ACBrECFVirtualSAT;C:\Componentes\ACBr\Fontes\ACBrSAT\Extrato;C:\Componentes\ACBr\Fontes\ACBrSAT\Extrato\EscPos;C:\Componentes\ACBr\Fontes\ACBrSAT\Extrato\Fast;C:\Componentes\ACBr\Fontes\ACBrSAT\Extrato\Fortes;C:\Componentes\ACBr\Fontes\ACBrSAT\PCNSAT;C:\Componentes\ACBr\Fontes\ACBrSerial;C:\Componentes\ACBr\Fontes\ACBrTCP;C:\Componentes\ACBr\Fontes\ACBrTEFD;C:\Componentes\ACBr\Fontes\ACBrTXT;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrADRCST;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrConvenio115;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrDeSTDA;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrEDI;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrLCDPR;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrLFD;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrPAF;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrPonto;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrSEF2;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrSintegra;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrSPED;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrSPED\ACBrSPEDContabil;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrSPED\ACBrSPEDECF;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrSPED\ACBrSPEDFCont;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrSPED\ACBrSPEDFiscal;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrSPED\ACBrSPEDFiscalImportar;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrSPED\ACBrSPEDPisCofins;C:\Componentes\ACBr\Fontes\ACBrTXT\ACBrSPED\ACBrSPEDPisCofinsImportar;C:\Componentes\ACBr\Fontes\ACBrTXT\SintegraSultan;C:\Componentes\ACBr\Fontes\Imagens;C:\Componentes\ACBr\Fontes\Imagens\bmp;C:\Componentes\ACBr\Fontes\PCNComum;C:\Componentes\ACBr\Fontes\Terceiros;C:\Componentes\ACBr\Fontes\Terceiros\AJBarcode;C:\Componentes\ACBr\Fontes\Terceiros\CodeGear;C:\Componentes\ACBr\Fontes\Terceiros\DelphiZXingQRCode;C:\Componentes\ACBr\Fontes\Terceiros\FastStringReplace;C:\Componentes\ACBr\Fontes\Terceiros\GZIPUtils;C:\Componentes\ACBr\Fontes\Terceiros\JediWin32API;C:\Componentes\ACBr\Fontes\Terceiros\json4delphi;C:\Componentes\ACBr\Fontes\Terceiros\json4delphi\src;C:\Componentes\ACBr\Fontes\Terceiros\json4delphi\test;C:\Componentes\ACBr\Fontes\Terceiros\JsonDataObjects\Source;C:\Componentes\ACBr\Fontes\Terceiros\LibXmlSec;C:\Componentes\ACBr\Fontes\Terceiros\Ole;C:\Componentes\ACBr\Fontes\Terceiros\synalist;C:\Componentes\ACBr\Fontes\Terceiros\TGif;C:\Componentes\ACBr\Fontes\Terceiros\ZLibExGZ;C:\Componentes\ACBr\Fontes\Terceiros\ZLibExGZ\win32;C:\Componentes\ACBr\Fontes\Terceiros\ZLibExGZ\win64;C:\Componentes\ACBr\Fontes\Terceiros\ZLibExGZ\zlib;C:\Componentes\ACBr\Lib\Delphi\LibD25;C:\Componentes\ACBr\Lib\Delphi\LibD25\Win32;C:\Program Files (x86)\Embarcadero\Studio\19.0\source\data\firedac;C:\Program Files (x86)\Embarcadero\Studio\19.0\source\xml;C:\Program Files (x86)\Nevrona\Rave11\Source\Win;C:\Program Files (x86)\QuickReport\QR6-RAD-10-2-Tokyo\src;C:\Program Files (x86)\Steema Software\Steema TeeChart Pro VCL FMX Source Code 2017.23\Compiled\Delphi25.win32\Lib;C:\Program Files (x86)\Steema Software\Steema TeeChart Pro VCL FMX Source Code 2017.23\TeeTree\Compiled\Delphi25.win32\Lib;C:\Program Files\Gnostice\eDocEngine VCL\Lib\RAD10.2\Win32;C:\Program Files\Gnostice\eDocEngine VCL\Lib\RAD10.2\Win32\ExpIntf;C:\Program Files\Gnostice\eDocEngine VCL\Source\HtmlView\HtmlViewer Packages;C:\Program Files\Gnostice\Shared3\Lib\RAD10.2\Win32;C:\Program Files\Nevrona\Rave11\D10_1-32;C:\Program Files\Nevrona\Rave11\Source\Win;C:\Program Files\QuickReport\QR6-RAD-10-2-Tokyo\src;C:\Program Files\TecnoSpeed\eSocial\Fontes;C:\Program Files\TecnoSpeed\eSocial\Fontes\TLB;C:\Program Files\TecnoSpeed\Reinf\Fontes;C:\Program Files\TecnoSpeed\Reinf\Fontes\TLB;C:\SuperSoft\BinD10;C:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Object Pascal\VCL\InetWinSockets;$(RotinasComuns)\ComunsDll\Modular;$(RotinasComuns)\ComunsDll\Collect;C:\Program Files\TecnoSpeed\NFSe\Fontes;$(RotinasComuns)\ComunsDll\Modular;$(RotinasComuns)\ComunsDll\Matricer;$(RotinasComuns)\AtualizacaoCadastral;$(RotinasComuns)\AtualizacaoCadastral\WebService;$(RotinasComuns)\AtualizacaoCadastral\Requisicoes;$(RotinasComuns)\AtualizacaoCadastral\Json

Antes de atualizar sua Library aconselhamos que faça backup da sua atual, para que se der algum eventual problema, não fique totalmente travado.
Configurando o ambiente de trabalho

Adicionar/Editar Variáveis de Ambiente

Variáveis de Ambiente são uma forma de indicar caminhos através de uma variável, essa pode ser alterada em um único lugar ao invés de alterar todos os lugares que é chamado.

Para acessar o menu onde elas são apresentadas, clique em Tools > Options:

2.png

Navegue até Environment Variables, nesse caso usaremos o quadro User overrides.

4.png

Na coluna Variable vemos o nome dado as variáveis, e a coluna Value o caminho que ela representará.

Aqui você pode Adicionar uma nova variável clicando em New... e preenchendo com o nome que deseja e seu respectivo caminho:

5.png

Editar clicando em Edit  e excluir clicando em Delete.

Para configurar as variáveis de ambiente Padrão, verifica-las Clicando Aqui.

Após fazer as ações basta clicar em OK para salva-las.

Configurando o ambiente de trabalho

Variáveis de Ambiente Padrão

Para saber mais sobre Variáveis de Ambiente Clique Aqui.

6.png

Organização dos Diretórios

Organização dos Diretórios

SVN - Estrutura básica

No SVN temos a seguinte estrutura inicial:

10.png

Dentro da pasta branches você fará uma pasta com seu nome/identificação.

Para isso clique com botão direito em cima da pasta branches -> Create folder...

11.png

Digite seu nome/identificação e clique em OK.

Não esqueça de deixar uma mensagem para registro do que foi feito naquela alteração. Para mais informações, acesse: Versionamento


Conforme for adicionando casos, sua estrutura irá ficar parecida com:

Estrut_SVN.png

Caso não saiba como adicionar os casos, poderá ver a página SVN - Inicio de um novo caso

Organização dos Diretórios

SVN - Inicio de um novo caso

Cada caso seguirá a seguinte estrutura para criação da pasta:

Na pasta https://wiki.supersoft.com.br/svn/desenvolvimento/branches/ + Nome do Dev, clicar com o botão direito, clicar em "Create Folder".

Nome da pasta deve seguir a formatação "Caso_XXXXXXX" onde "XXXXXXX" é o numero do caso com os "00" na frente.

12.png

Clicar em OK nesta e na próxima tela.

Copie o endereço "URL:" da pasta na parte superior da tela.

13.png

Faça para esse endereço um Copy To tendo como Repositório Origem o Trunk (https://wiki.supersoft.com.br/svn/desenvolvimento/trunk/CodigoBaseSkin).

Acessar a pasta que foi criada no diretório do dev.

No final, seu diretório deve estar parecido com o apresentado no final da página de SVN - Estrutura básica.

Organização dos Diretórios

Local

Verificar em sua máquina as partições:

Screenshot_35.png

Caso exista uma segunda partição, como exemplo o "Backup (D:)" ou um SSD, criar uma pasta chamada "Branches" dentro da segunda partição, caso contrário criar a pasta dentro da unidade C:\ mesmo.

É preferível a segunda partição pois caso aconteça algo com seu sistema operacional, não perderá seu trabalho.

Dentro do local escolhido ficará parecido com:

8.png

Seu C:\ ficará parecido com:

9.png

Atenção: Caso você possua casos em outros diretórios e realize a cópia das pastas dos casos para pasta "Branches". Ao abrir a IDE do Delphi nos projetos dos casos copiados, as units abertas (se houver) estarão direcionadas para o diretório antigo. É necessário fechar e reabrir essas units para que as mesmas apontem para o diretório correto do caso.

 

 

Roteiro de Trabalho

Neste capítulo, se encontram as instruções referentes ao processo realizado durante o início de um caso até o seu encerramento e todas as etapas contidas neste intervalo.

Roteiro de Trabalho

Qual caso escolher?

Antes de iniciar este tópico, certifique-se de já ter configurado seu ambiente de trabalho.


Passos Iniciais 

Trello

Para iniciar o desenvolvimento de um caso, você deve "escolher" um caso. Você não vai literalmente escolher qual caso trabalhar, mas sim, seguir uma ordem pré-definida pela qualidade (ou outro departamento) através do Trello. 

Existem duas linhas principais de trabalho:

Caso você não saiba em qual está alocado, verifique com o líder ou gerente da sua equipe.

Após definida a linha de trabalho, você selecionará o primeiro caso da coluna e clique em ingressar, conforme exemplificado a seguir:

image-1611769035655.png

Após ingressar no cartão, arraste-o para a coluna "Em desenvolvimento":

image-1611769205751.png

Mantis

Após a seleção do caso no Trello, e o deslocamento dele para a coluna "Em desenvolvimento", acesse o Mantis e no canto superior direito, busque seu caso pelo número indicado no cartão do Trello, ou caso tenha o link no cartão é só clicar. 

Após localizar seu novo caso, será necessário atribuir a você mesmo, para que não ocorra o problema de outro desenvolvedor pegá-lo. No final do tópico "Ver Detalhes da Tarefa" você verá a opção de "Atribuir a:", se não estiver atribuído a ninguém, o próprio Mantis irá sugerir para atribuir para você (como mostrado a seguir), clique no botão para atribuir e pronto, o caso já estará sendo implementado por você.

image-1611772846405.png


Concluída essa etapa, avançaremos para a criação do seu Branch, para enfim começarmos a implementação do caso selecionado.

Roteiro de Trabalho

Localizando e configurando a base de dados

Configurando bases de dados FireBird

A extensão do arquivo da base de dados precisar ser .FDB para a IDE conseguir compilar sem erros.

Na maioria das vezes quando iniciamos um novo caso, será necessário configurar a base de dados, que nos possibilita reproduzir o problema relatado e que geralmente está anexada no Mantis ou no Transfer (\\SS\Transfer\SUPERSOFT_CLIENTES).

O processo é muito simples, basta fazer o Download ou uma cópia caso esteja no transfer para dentro da pasta SuperSoft localizada no seu diretório, possui uma pasta chamada Tabelas, é dentro dela que nossa IDE está configurada para buscar o arquivo com extensão .FDB. 

Dentro da pasta Tabelas, crie uma pasta com o nome do seu caso e cole a base dentro dela. Depois extraia a base para obter o arquivo .FDB, conforme demonstrado a seguir:

image-1611950233508.png

Pronto, sua base já está configurada para ser utilizada, dentro do Delphi compile seu código que a base já estará sendo utilizada no processo de compilação.

Configurando bases de dados SQL

Em alguns casos será necessário reproduzir o erro com bases SQL, ou seja, você precisará ter instalado na sua máquina o software "sqlncli" (de acordo com a arquitetura do Windows x32 ou x64), localizado em \\SS\transfer\FelipeB\App. 

Você também precisará do arquivo da configuração do Banco de Dados, chamado "ConfigConexaoDB", que geralmente estará localizada anexada no Mantis ou no Transfer com seu respectivo caminho relatado no Mantis. Basta copiar este arquivo e colar dentro da pasta SuperSoft, mas antes renomeie o arquivo de configuração já existente dentro da pasta para qualquer outro nome que você possa se lembrar depois para não perder as configurações usadas para uma base FireBird, conforme exemplo a seguir:

image-1611951263122.png

Pronto, depois basta compilar seu caso dentro do Delphi que a base estará pronta para ser utilizada.

Outra forma:

Requisito: Utilizar o Controle de Bases Firebird

O fato de usar o Controlador de Bases gera uma flexibilidade de onde ficará as bases de dados e até o nome. Assim poderá guardar por nome de cliente por exemplo, e também pode deixar na segunda partição/segundo disco caso tenha. Exemplo:

Bases_Clientes.png

 

Roteiro de Trabalho

Rotina de Desenvolvimento

Pré-Requisitos

Antes de começar a implementação referente ao caso propriamente, é necessário que as seguintes etapas já estejam concluídas por parte do desenvolvedor:

  1. Que já tenha ingressado no cartão do caso em questão, no Trello;
  2. Que já tenha lido e interpretado o caso no Mantis, além de estar atribuído ao caso;
  3. Que já tenha criado a respectiva pasta no seu diretório SVN;
  4. Que já tenha criado a respectiva pasta no seu diretório local;
  5. Que já tenha localizado e configurado a base de dados do caso.

Processos comuns no desenvolvimento

Dicas de IDE

Quando estamos no desenvolvimento do caso, algumas dicas são fundamentais para facilitar nossa vida, a seguir será demonstrado algumas delas: 

Salvando o estado do projeto

Após fecharmos o a IDE, as units, breaking points e os bookmarks adicionados, serão todos perdidos. Entretanto existe uma opção que salva todas esses estados no qual você deixou ao longo da implementação.

Dentro da IDE o menu Tools -> Options, aba Environment Options, marcar as duas opção do retângulo Autosave Options, conforme a imagem a seguir:

image-1613667050380.png 

Debug

Para reproduzir um erro ou testar alguma implementação, você precisa debugar para verificar se tudo ocorreu como esperava. Neste processo temos 3 maneiras.

Debugando com a tecla "F9"

Você estará pulando de um Breaking point a outro, de forma que os métodos entre eles serão lidos pela IDE, mas não mostrados como a tecla "F8". 

image-1611944956170.png

Debugando com a tecla "F8"

A IDE irá ler linha a linha do código, tornando mais fácil analisar o que está sendo feito dentro de um método ou até mesmo alguma verificação. 

image-1611945328807.png

 Debugando com a tecla "F7"

Ao se deparar com um método, você pode utilizar a tecla "F7" para adentrar nele e ver tudo o que está sendo feito.

Por exemplo, na rotina de exportação do arquivo da Sefip, chama o método GeraValoresPASocAutNaValAnualBenefPA(), apertando a tecla "F7" na linha que chama este método, você será redirecionado para dentro dele sem a necessidade de ter um breaking. Como mostrado a seguir, 

image-1611945755392.png

Evaluate (Ctrl + F7)

Dento da IDE a tela de Evalute é de grande importância na hora que estamos Debugando, pois com ela podemos obter diversas informações a partir dela.

image-1611947931445.png

 Além de conseguir ver o conteúdo de uma variável passando o mouse por cima, pode ser visto com o Evalute.

Watch (CTRL + F5)

A ferramenta Watch disponível dentro do Evalute, nos possibilita ver o que está acontecendo com uma determinada variável ou campo de uma Query em tempo real, a cada passo no precesso de Debug, se o valor for alterado, imediatamente você consegue ver essa mudança.

image-1611948160431.png

New Value

A ferramenta New Value, localizada na parte inferior do Evaluate é utilizada quando precisamos alterar um determinado valor no processo de execução, por exemplo, você deseja verificar o que está acontecendo dentro de uma rotina, mas por não entrar nesta rotina devido a alguma verificação não obedecida, é possível alterar o valor nesta verificação "forçando" com que entre na rotina sem precisar alterar o código, compilar e depois debugar até o trecho desejado.

image-1611948375084.png

Veja que a variável "NomeCampo" está com o valor de "Pensao05", adicionando no New value o valor desejado e apertando enter, a variável irá receber o conteúdo escrito no campo.

As próximas duas são muito importantes e muito úteis.

MostraQuery

Constantemente trabalhamos com Querys, que são responsáveis por buscar informações do banco de dados. Podemos verificar o conteúdo dela com o comando MostraQuery("NomeDaQuery"), que irá mostrar todo os campos da query, mas deve ficar atendo pois em muitos casos ela estará em modo edição, então se alterar no MostraQuery o registro selecionado, estará mudando também na Query.

MostraParams

O comando MostraParams é bem parecido com o MostraQuery, porém ele irá mostrar a clausula responsável por buscar as informações do banco de dados. 

Indentação de Texto (Alt + Shift + C)

A ferramenta serve para facilitar a formatação de textos .

image-1613050114160.png

O texto selecionado será o único a ser alterado. Sendo que pode-se escolher o tipo de formatação desejada. A formatação mais comum para sentenças (strings) será a "Sentence case". 

Cuidado ao utilizar a "Title Case" em métodos, nesta formatação somente a primeira letra ficará em maiúsculo e as demais em minúsculo. Caso utilize, verificar se a formatação do método está correto.

Dicas de Trabalho

Commits periódicos das alterações 

Após finalizar a implementação de algum trecho e que ainda será necessário alterar outras partes do código, é recomendado fazer o commit dessas mudanças, para assegurar que as alterações ficarão salvas caso aconteça algum problema em sua máquina ao decorrer da implementação.

Merges periódicos com o Trunk

Ao decorrer de um caso, as implementações feitas podem não ter obtido os resultados esperados, que consequentemente será necessário novas implementações. Quando estiver tratando um caso grande, ou que já passou mais de uma semana desde a ultima liberação da versão, é importante o merge com o Trunk, fazendo com que o Branch do seu caso, receba todas as novas alterações que estejam no Trunk.

Solicitação de ajuda

Apesar de nos depararmos com inúmeras dificuldades ao decorrer de uma determinada implementação, caso não consiga mais avançar no tratamento do seu caso, peça ajuda à algum desenvolvedor para lhe orientar e mostrar algum possível caminho para a solução do seu problema.

 

Roteiro de Trabalho

Liberando para testes

Ao finalizar a implementação do caso e possíveis correções referentes à revisão de código colaborativa, o caso avança para os testes. Onde o tratamento será validado pela equipe da qualidade.


Equipe ERP:

Ao liberar para testes montamos um informativo com a estrutura parecida com:

  1. Marcar a(s) pessoa(s) da Qualidade ou que irão testar o caso (como Projetos em alguns casos).
  2. Motivo do não funcionamento correto (caso haja).
  3. Resumo das alterações feitas.
  4. Informar Units Alteradas/Incluídas/Deletadas

Exemplos:


@AlineC, segue alteração realizada para testes iniciais.

Alteração

- Alteração realizada de forma que o sistema calcule pis e cofins ao importar xml

- Com a customização as alíquotas utilizadas devem ser buscadas dos parâmetros da empresa.(Dados Principais).

- Apenas os cálculos referente a pis e cofins devem ser reprocessados.

- Caso necessário o recálculo "automático", utilizar o "Recalcular valores da Notificação" nos itens.

- Verificar se os valores são calculados conforme necessidade do cliente ao importar o xml.

- Realizar testes sem a customização.

Unit Alterada

- FuncsCC.pas

*Criada CustomCCNefab

Qualquer dúvida estou a disposição.
Obrigado.

----------------

@AlineC Caso disponível para testes.

Alterações:
- Ao Gravar a nota, foi melhorado a rotina que limpava sujeira das tabelas filhas da NFModel1, agora também é feito a mesma rotina para tabelas filhas da ItensNF.
- Como mesmo aparecendo a mensagem "Já existe movimentação no SSEstoq..." ele gravava (pois a gravação da mesma na NFModel1 é feita antes destas validações) a nota gerando sujeira, agora apresenta mensagem que não foi gerado movimentação no SSEstoq mas continua com a rotina correta da gravação da Nota, assim não gera sujeira nessa situação.
- Adicionado barra de progresso ao fazer nota simultânea.

Units alteradas:
/SSVendas/NFMod12.pas
/SSvendas/FuncsNF.pas

Att.:
Vinicius Machado

----------------

@AlineC, segue alteração realizada para testes iniciais.

Alteração

1 - A regra para atualização da classificação de clientes foi alterada seguindo os seguintes critérios.

1.1 - Ao iniciar o sistema, o procedimento deve ser iniciado, rodando automaticamente apenas uma vez ao dia.

2 - Caso entre pelo menu Utilitários > Customização > Movimentação > Classificação de clientes, o mesmo deve sempre ser acionado.

Unit Alterada

- DllSource.pas

*Alteração realizada diretamente na customização.

Qualquer dúvida estou a disposição.
Obrigado.

Colocamos esse informativo como anotação no Mantis.

Alteramos o Status do caso para Aguardando Testes.


Equipe FISCO:

Para a equipe FISCO, o processo é praticamente o mesmo da equipe ERP, a única diferença é que o desenvolvedor é responsável pela geração dos executáveis que serão testados. Caso você não saiba como fazer isso, acesse: Geração de Executáveis

Roteiro de Trabalho

Subindo um caso para o branch de versões

Somente fazer esse procedimento após o pedido vindo da Qualidade.

Pelo lembrete recebido, terá o branch da versão que subirá seu caso, como exemplo abaixo é o Branch 04316.png

Verifique na sua pasta local de Branchs se há o Branch em questão já baixado, caso não tenha, fazer o Checkout da atual conforma imagem de exemplo, atente-se ao departamento se é ERP ou Fisco 

17.png

ERP

18.png

Fisco

Após o Checkout, verificar se tanto o branch da versão quanto a pasta do seu caso estão atualizadas com o Trunk, caso não esteja poderá fazer Merge diminuindo as diferenças entre as pastas.

Você terá algumas formas de passar o seu tratamento para o branch da versão, as duas apresentadas a seguir usarão a ferramenta  Beyond Compare, caso não saiba utilizar poderá ver Clicando Aqui.

  1. Comparar as duas pastas inteiras uma com a outra, e passar suas alterações para branch da versão localizando as Units alteradas.
  2. Comparar Unit por Unit que saiba que alterou, e passar suas alterações para branch da versão.

Cuidado para não retirar o tratamento de outro Dev ao passar o seu para o Branch da versão.

Após passar suas alterações para a pasta referente ao Branch da versão, irá fazer um Commit seguindo as mensagens de Versionamento.

Ir no caso no Mantis e enviar um lembrete para Qualidade avisando que o caso está disponível para reteste no branch da versão indicado por eles,

Alterar o status para Aguardando revisão de testes

26.png

No Trello estará na coluna Testado (por caso), mova para a coluna Vinculados/Em testes (Branch versão).

27.png

Novos processos

Descrições de novos processos, ainda em testes

Novos processos

Branchs

Objetivo: Para agilizar o tempo de entrega, foi retirado o Reteste, sendo assim o procedimento fica:

  1. Ao pegar o caso, fazer a cópia do Trunk como é hj (não será feita a cópia direta da versão para não dar erro no merge ao trocar a versão e não perder o histórico).
  2. Faça um merge com a versão corrente.
  3. Faça seu tratamento, caso for demorado, fortemente indico que faça o merge com a versão corrente frequentemente.
  4. Quando Qualidade te informar que vai iniciar os testes, faça o o merge com a versão corrente e disponibilize os exe's necessários.
    1. Caso for reaberto, repetir o ponto 4 ao liberar novamente.
  5. Se aprovado e Qualidade pedir para subir, não demore para subir, pois caso demorar pode atrapalhar o merge do próximo teste que depende que seu tratamento já esteja na versão.
  6. No Mantis e Trello colocar como aguardando liberação de versão, pois não haverá mais o reteste.
    1. Casos que serão aguardando reteste, serão somente os casos feitos direto na versão e/ou casos que a Qualidade decidir que necessitam reteste por segurança ou outro motivo válido.

Merge com a versão pode apresentar esse erro:

erro1.png

Caso acontecer, então fazer o merge com a seguinte opção:

merge.png

E caso dê o segundo erro abaixo, analisar se a opção indicado resolve.

erro2.png

Branchs separados:

Por questões de prazo/validações e facilitar as liberações, foi criado branchs da versão separados. 

São uma cópia da versão a ser liberada, porém com casos geralmente grandes ou delicados, estão ali para não travar uma liberação de versão por exemplo. Esse branch é utilizado para casos definidos pela Qualidade/Liderança/Superiores.

Esse branch também deve estar sempre atualizado.

Novos processos

Testes e Revisão de código

Testes:

Como as liberações de versão e exe para testes estão sendo feitas em nossas máquinas, por favor, manter componentes da TecnoSpeed, ACBr e Terceiros atualizados.

Ao finalizar um caso, colocar bem detalhadamente a Mensagem de Teste, contendo as Alterações/Implementações, Units alteradas, e pontos que ajudem nos testes caso necessário. Após isso alterar Status e coluna do Mantis para Aguardando Testes.

Mais info em Liberando para Testes

Revisão de código:

Em maioria, será feito após o primeiro teste, porém como a qualidade acompanha os logs e consegue ver as alterações, podem solicitar a revisão até mesmo antes do primeiro teste.

 

Obs.: Reabertura frequente por conta de revisão de código acaba atrasando parte do processo e afeta completamente na confiança do código desenvolvido pelo programador, e isso afeta em seu progresso, então fica como sugestão dar boa atenção nesse ponto.

Novos processos

Manutenção do branch pessoal

Objetivo: Para facilitar a localização do código, seja para revisão de código ou geração de exe para testes.

Em maioria, manter no diretório pessoal raiz, os casos abertos, para isso crie uma pasta chamada CasosFechados e mova o código dos casos fechados para lá

CasosFechados.png