diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 000000000..d6f29711d --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,18 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 90 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 21 +# Issues with these labels will never be considered stale +exemptLabels: + - improve + - epic + - Aceitando contribuições +# Label to use when marking an issue as stale +staleLabel: waiting feedbac +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + Essa Issue foi marcada automáticamente como obsoleta, devido a um longo periodo de inatividade. + Se nenhuma interação ocorrer nos próximos dias, ela será encerrada. Agradecemos a sua contribuição, + esse processo é apenas para manter o repositório mais organizado. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false \ No newline at end of file diff --git a/.github/workflows/DFe.NET_build.yml b/.github/workflows/DFe.NET_build.yml new file mode 100644 index 000000000..b7ab764eb --- /dev/null +++ b/.github/workflows/DFe.NET_build.yml @@ -0,0 +1,153 @@ +name: DFe.NET_build + +on: + workflow_dispatch: + inputs: + logLevel: + description: 'Log level' + required: true + default: 'warning' + nugetdeploy: + type: boolean + description: 'Deploy Nuget ?' + push: + branches: + - 'master' + pull_request: + types: [opened, reopened] + branches: + - 'master' +jobs: + build: + runs-on: ${{ matrix.os }} + outputs: + version: ${{ steps.date.outputs.date }} + strategy: + matrix: + # os: [ ubuntu-latest, windows-latest, macos-latest ] + os: [ windows-2022 ] + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setando Versao + id: date + run: | + $date = Get-Date -Format "yyyy.MM.dd.HHmm" + echo "date=$date" >> $env:GITHUB_OUTPUT + + - name: Versao + run: echo ${{ steps.date.outputs.date }} + + - name: Setup .NET 6.0.x + uses: actions/setup-dotnet@v2 + with: + dotnet-version: 6.0.x + + - name: Build/Restore Base + run: | + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\DFe.Classes\DFe.Classes.csproj" -c "Release" + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\DFe.Utils\DFe.Utils.csproj" -c "Release" + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\DFe.Wsdl\DFe.Wsdl.csproj" -c "Release" + - name: Build/Restore NFe + run: | + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\NFe.Classes\NFe.Classes.csproj" -c "Release" + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\NFe.Servicos\NFe.Servicos.csproj" -c "Release" + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\NFe.Utils\NFe.Utils.csproj" -c "Release" + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\NFe.Wsdl\NFe.Wsdl.csproj" -c "Release" + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\NFe.Wsdl.Standard\NFe.Wsdl.Standard.csproj" -c "Release" + + - name: Build/Restore MDFe + run: | + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\MDFe.Classes\MDFe.Classes.csproj" -c "Release" + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\MDFe.Servicos\MDFe.Servicos.csproj" -c "Release" + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\MDFe.Utils\MDFe.Utils.csproj" -c "Release" + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\MDFe.Wsdl\MDFe.Wsdl.csproj" -c "Release" + + - name: Build/Restore MDFe + run: | + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\CTe.Classes\CTe.Classes.csproj" -c "Release" + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\CTe.Servicos\CTe.Servicos.csproj" -c "Release" + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\CTe.Utils\CTe.Utils.csproj" -c "Release" + dotnet build -p:Version=${{ steps.date.outputs.date }} ".\CTe.Wsdl\CTe.Wsdl.csproj" -c "Release" + + #- name: Test + # run: dotnet test --no-build --verbosity normal + + - name: Pack + run: | + dotnet pack -o ${{ github.workspace }} -v minimal -c Release -p:NuspecProperties=version=${{ steps.date.outputs.date }} -p:PackageVersion=${{ steps.date.outputs.date }} NuGet\Zeus.Net.NFe.NFCe\Zeus.Net.NFe.NFCe.csproj + dotnet pack -o ${{ github.workspace }} -v minimal -c Release -p:NuspecProperties=version=${{ steps.date.outputs.date }} -p:PackageVersion=${{ steps.date.outputs.date }} NuGet\Zeus.Net.MDFe\Zeus.Net.MDFe.csproj + dotnet pack -o ${{ github.workspace }} -v minimal -c Release -p:NuspecProperties=version=${{ steps.date.outputs.date }} -p:PackageVersion=${{ steps.date.outputs.date }} NuGet\Zeus.Net.CTe\Zeus.Net.CTe.csproj + dotnet pack -o ${{ github.workspace }} -v minimal -c Release -p:NuspecProperties=version=${{ steps.date.outputs.date }} -p:PackageVersion=${{ steps.date.outputs.date }} NFe.Danfe.Html\NFe.Danfe.Html.csproj + dotnet pack -o ${{ github.workspace }} -v minimal -c Release -p:NuspecProperties=version=${{ steps.date.outputs.date }} -p:PackageVersion=${{ steps.date.outputs.date }} NFe.Danfe.QuestPdf\NFe.Danfe.QuestPdf.csproj + dotnet pack -o ${{ github.workspace }} -v minimal -c Release -p:NuspecProperties=version=${{ steps.date.outputs.date }} -p:PackageVersion=${{ steps.date.outputs.date }} NFe.Danfe.PdfClown\NFe.Danfe.PdfClown.csproj + + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: nupkg + path: ${{ github.workspace }}/*.nupkg + + deploy: + needs: build + if: github.event_name == 'push' || github.event.inputs.nugetdeploy == 'true' + runs-on: ${{ 'ubuntu-latest' }} + steps: + - name: Download Artifacts + uses: actions/download-artifact@v4 + with: + name: nupkg + path: ${{ github.workspace }} + + - name: List Artifacts + run: dir + + - name: Setup Nuget + uses: actions/setup-dotnet@v2 + with: + dotnet-version: 6.0.x + + - name: Push to NuGet Feed + run: dotnet nuget push *.nupkg -k $NUGET_AUTH_TOKEN -s https://api.nuget.org/v3/index.json + env: + NUGET_AUTH_TOKEN: ${{secrets.NUGET_SECRET_DEPLOY}} + + - name: Criar Tag + id: create_tag + run: | + curl -X POST \ + -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ + -H "Content-Type: application/json" \ + -d '{ + "tag": "${{ needs.build.outputs.version }}", + "message": "Release versão ${{ needs.build.outputs.version }}", + "object": "${{ github.sha }}", + "type": "commit" + }' \ + https://api.github.com/repos/${{ github.repository }}/git/tags + + - name: Criar Release + id: create_release + run: | + curl -X POST \ + -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ + -H "Content-Type: application/json" \ + -d '{ + "tag_name": "${{ needs.build.outputs.version }}", + "name": "${{ needs.build.outputs.version }}", + "body": "Esta é a release da versão ${{ needs.build.outputs.version }} do Zeus DFe.NET.\n\n### Links dos pacotes no NuGet:\n- [Zeus.NFe.NFCe](https://www.nuget.org/packages/Zeus.Net.NFe.NFCe/${{ needs.build.outputs.version }})\n- [Zeus.MDFe](https://www.nuget.org/packages/Zeus.Net.MDFe/${{ needs.build.outputs.version }})\n- [Zeus.CTe](https://www.nuget.org/packages/Zeus.Net.CTe/${{ needs.build.outputs.version }})\n- [Zeus.NFe.Danfe.Html](https://www.nuget.org/packages/Zeus.Net.NFe.Danfe.Html/${{ needs.build.outputs.version }})\n- [Zeus.NFe.Danfe.QuestPdf](https://www.nuget.org/packages/Zeus.Net.NFe.Danfe.QuestPdf/${{ needs.build.outputs.version }})\n- [Zeus.NFe.Danfe.PdfClown](https://www.nuget.org/packages/Zeus.Net.NFe.Danfe.PdfClown/${{ needs.build.outputs.version }})", + "draft": false, + "prerelease": false + }' \ + https://api.github.com/repos/${{ github.repository }}/releases + + + - name: Discord notification + continue-on-error: true + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} + DISCORD_MENSAGEM: ${{ needs.build.outputs.version }} + uses: Ilshidur/action-discord@master + with: + args: 'Lançado Zeus DFe.NET versão {{ DISCORD_MENSAGEM }} no Nuget! Acesse: https://www.nuget.org/profiles/ZeusAutomacao' \ No newline at end of file diff --git a/.gitignore b/.gitignore index 72ba44b91..0daa0dbf5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,66 +1,166 @@ -# Windows image file caches -Thumbs.db -ehthumbs.db +# Created by https://www.gitignore.io/api/visualstudio -# Folder config file -Desktop.ini +### VisualStudio ### +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msm -*.msp - -# Windows shortcuts -*.lnk - -# ========================= -# Operating System Files -# ========================= - -# OSX -# ========================= - -.DS_Store -.AppleDouble -.LSOverride - -# Thumbnails -._* +# User-specific files +NFe.sln.DotSettings.user +*.suo +*.user +*.userosscache +*.sln.docstates -# Files that might appear on external disk -.Spotlight-V100 -.Trashes +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ -[Xx]64/ -[Xx]86/ -[Bb]uild/ +x64/ +x86/ bld/ [Bb]in/ [Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* +# NUNIT +*.VisualState.xml +TestResult.xml + # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ # NuGet Packages *.nupkg @@ -74,104 +174,113 @@ dlldata.c *.nuget.props *.nuget.targets -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +### VisualStudio Patch ### +build/ -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk -/BuildProcessTemplates -/.vs/Zeus NFe/v14/.suo -/NFe.AppTeste/obj/Debug -/NFe.Classes/obj/Debug -/Nfe.Impressao/obj/Debug -/NFe.Servicos/obj/Debug -/NFe.Utils/obj/Debug -/NFe.Wsdl/obj/Debug -/NFe.Wsdl/obj/Release -/NFe.Wsdl/bin -/NFe.Utils/obj/Release -/NFe.Utils/bin -/NFe.Servicos/obj/Release -/NFe.Servicos/bin -/Nfe.Impressao/obj/Release -/Nfe.Impressao/bin -/NFe.Classes/obj/Release -/NFe.Classes/bin -/NFe.AppTeste/obj/Release -/NFe.AppTeste/bin -/NFe.Integracao/bin/Debug -/NFe.Integracao/obj/Debug -/NFe.Danfe.AppTeste/obj -/NFe.Danfe.AppTeste/bin -/NFe.Danfe.Base/bin -/NFe.Danfe.Base/obj -/NFe.Danfe.Fast/bin -/NFe.Danfe.Fast/obj -/NFe.Integracao/obj/Release -/MDFe.Classes/bin -/MDFe.Classes/obj -/MDFe.AppTeste/bin -/MDFe.AppTeste/obj -/MDFe.Utils/bin -/MDFe.Utils/obj -/DFe.Classes/bin -/DFe.Classes/obj -/DFe.Utils/bin -/DFe.Utils/obj -/MDFe.Servicos/bin -/MDFe.Servicos/obj -/MDFe.Wsdl/bin -/MDFe.Wsdl/obj -/DFe.Classes/obj -/DFe.Utils/obj -/MDFe.AppTeste/obj -/MDFe.AppTeste/bin -/MDFe.Classes/obj -/MDFe.Utils/obj -/MDFe.Damdfe.AppTeste/obj -/MDFe.Damdfe.AppTeste/bin -/MDFe.Damdfe.Base/obj -/MDFe.Damdfe.Base/bin -/MDFe.Damdfe.Fast/obj -/MDFe.Damdfe.Fast/bin -/NFe.Danfe.Nativo/bin -/NFe.Danfe.Nativo/obj -/GraphicsPrinter/bin -/GraphicsPrinter/obj -/GraphicsPrinter/bin -/GraphicsPrinter/obj -/NFe.Danfe.Nativo/obj -/NFe.Danfe.Nativo/bin -/NFe.Integracao/bin -/CTe.AppTeste/bin -/CTe.AppTeste/bin/Debug -/CTe.AppTeste/bin/Release -/CTe.AppTeste/obj -/CTe.Classes/bin -/CTe.Classes/obj -/CTe.Servicos/bin -/CTe.Servicos/obj -/CTe.Utils/bin -/CTe.Utils/obj -/CTe.Wsdl/bin -/CTe.Wsdl/obj -/CTe.AppTeste/obj -/CTe.AppTeste/bin -/CTe.Classes/obj -/CTe.Servicos/obj -/CTe.Utils/obj -/CTe.Wsdl/obj -/CTe.Dacte.AppTeste/obj/Debug -/CTe.Dacte.AppTeste/bin/Debug -/CTe.Dacte.Base/obj/Debug -/CTe.Dacte.Base/bin/Debug -/CTe.Dacte.Fast/obj/Debug -/CTe.Dacte.Fast/bin/Debug -/.vs -.vs/Zeus NFe/v15/.suo -/src/.vs/ZeusDFe/v15/Server/sqlite3/db.lock -/src/.vs/ZeusDFe/v15/Server/sqlite3/storage.ide +# End of https://www.gitignore.io/api/visualstudio +*.dll +/Bredas.SharedKernel/novo.sql diff --git a/.vs/Zeus NFe/v15/.suo b/.vs/Zeus NFe/v15/.suo deleted file mode 100644 index d578bcb72..000000000 Binary files a/.vs/Zeus NFe/v15/.suo and /dev/null differ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..33df31b40 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,189 @@ +# Contribuindo para o projeto DFe.NET + +Bem-vindo(a) ao repositório do **DFe.NET**! Agradecemos seu interesse em contribuir para este projeto open source. Este documento tem o objetivo de orientar colaboradores, definir padrões de qualidade e facilitar a integração das contribuições. Leia atentamente as seções abaixo para que possamos trabalhar juntos de forma colaborativa e eficiente. + +## Índice + +1. [Abertura de issues](#abertura-de-issues) + - [Reportando possíveis bugs ou problemas](#reportando-possiveis-bugs-ou-problemas) + - [Solicitação de recursos ou melhorias](#solicitacao-de-recursos-ou-melhorias) + - [Dúvidas sobre o projeto, recursos e configurações](#duvidas-sobre-o-projeto-recursos-e-configuracoes) +2. [Contribuindo](#contribuindo) + - [Fluxo de trabalho](#fluxo-de-trabalho) + - [Commits](#commits) + - [Pull requests](#pull-requests) +3. [Convenções de código, padrões e boas práticas](#convencoes-de-codigo-padroes-e-boas-praticas) +4. [Licença](#licenca) + +## Abertura de issues + +Issues podem ser abertas para tirar dúvidas, reportar possíveis bugs e problemas, além de sugerir novos recursos ou melhorias em funcionalidades existentes. Antes de abrir uma nova issue, verifique se já existe alguma aberta ou fechada relacionada ao mesmo tema. Se encontrar, junte-se à discussão e avalie se sua solicitação pode ser atendida nela. Caso a issue tenha tomado um rumo diferente e não atenda à sua necessidade específica, você pode contribuir para a discussão existente ou, se necessário, criar uma nova issue abordando um ponto diferente relacionado ao tema. Se não houver nenhuma issue relacionada, siga as diretrizes abaixo para abrir uma nova corretamente. + +### Reportando possíveis bugs ou problemas + +Ao reportar um possível bug ou problema, forneça uma descrição detalhada, incluindo: + +- Passos para reproduzir +- O comportamento esperado (se aplicável) +- O comportamento atual +- Imagens, stack traces ou qualquer outra informação relevante para facilitar a identificação e reprodução +- Detalhes sobre o ambiente em que ocorreu (versão do sistema operacional, dependências, se está usando pacotes via NuGet ou referências diretas, etc.). + +Isso reduz o tempo gasto apenas para entender e replicar o problema. + +**Modelo para reportar bugs:** + +```markdown +**Descrição:** +Ao tentar executar a funcionalidade X, ocorre um erro inesperado. + +**Passos para reproduzir:** +1. Acesse a tela Y. +2. Clique no botão Z. +3. Observe que o erro ocorre. + +**Comportamento esperado:** +O sistema deveria realizar a ação A e retornar B, sem erro. + +**Comportamento atual:** +O sistema exibe a exceção "System.NullReferenceException". + +**Ambiente:** +- Windows 10 +- .NET Framework 4.8 +- Versão do software: 1.2.3 +- Utilizando Nuget +``` + +### Solicitação de recursos ou melhorias + +Antes de criar a issue solicitando algum recurso ou melhoria, verifique se a solicitação já não foi proposta ou discutida anteriormente para evitar duplicidade. Caso já exista uma discussão, contribua nela em vez de abrir uma nova issue. Se não houver nenhuma issue aberta sobre o assunto, descreva claramente o novo recurso, os benefícios que ele traria e, quando possível, o que seria necessário para viabilizar sua implementação. + +**Modelo para solicitar recursos ou melhorias:** + +```markdown +**Descrição:** +Adicionar suporte à emissão de um novo tipo de documento fiscal eletrônico. + +**Benefícios:** +- Ampliaria o suporte da biblioteca para documentos fiscais eletrônicos, atendendo mais usuários. +- Etc... + +**Requisitos:** +- O sistema precisaria dos schemas do novo documento fiscal eletrônico; +- Etc... +``` + +### Dúvidas sobre o projeto, recursos e configurações + +Caso possua dúvidas sobre o uso do projeto, configurações, funcionalidades ou outros aspectos, verifique se sua dúvida já foi respondida na documentação do `README` ou em alguma issue (aberta ou fechada) que já foi discutida e resolvida. Caso encontre uma issue aberta relacionada, participe da discussão em vez de criar uma nova. Se a issue estiver fechada, confira se sua dúvida foi sanada. Caso contrário, descreva seu problema de forma detalhada, informando o contexto e os passos que já tentou para resolvê-lo, se pertinente, e abra uma nova issue. + +**Modelo para abertura de dúvidas:** + +```markdown +**Pergunta:** +Como posso configurar o projeto para rodar em um ambiente Linux? + +**Contexto:** +Estou tentando executar o projeto no Ubuntu 22.04, mas estou enfrentando dificuldades para instalar as dependências corretamente. + +**O que já tentei:** +1. Instalei todas as dependências listadas na documentação. +2. Executei o comando X, mas recebo o erro "Y". +3. Tentei a solução alternativa Z, sem sucesso. + +**Ambiente:** +- Sistema Operacional: Ubuntu 22.04 +- .NET versão: 6.0 +- Dependências instaladas: A, B, C +``` + +## Contribuindo + +Para realizar contribuições para a biblioteca, é fundamental seguir o fluxo de trabalho e respeitar as convenções definidas aqui. + +### Fluxo de trabalho + +Faça um fork do repositório no GitHub para iniciar a implementação. Contribuidores externos não possuem nível de permissão para criar branches no repositório. Dessa forma, é necessário realizar contribuições através de um fork. + +Com o fork realizado, deve-se criar uma branch para a implementação com base na branch principal. A branch principal é `master`, que reflete a versão estável e mais atualizada do projeto. Dessa forma, toda e qualquer contribuição deve ser realizada utilizando a branch `master`. + +A nova branch deve seguir o padrão de nomenclatura conforme o [Conventional Branch](https://conventional-branch.github.io/), por exemplo: +- `feature/nome_da_funcionalidade` para novas funcionalidades +- `bugfix/descrição_do_bug` para correções de bugs + +Além disso, mantenha sua branch sempre sincronizada com a branch principal para minimizar conflitos durante o desenvolvimento. + +#### Commits + +Os commits devem ser atômicos e lógicos, garantindo que cada um contenha apenas alterações relacionadas a uma única funcionalidade ou correção. Isso mantém o histórico do repositório organizado e facilita a compreensão das mudanças. + +Se as alterações no código fizerem com que os testes falhem, os testes devem ser corrigidos no mesmo commit. + +Para mudanças significativas, divida seu trabalho em commits separados para facilitar a revisão. Isso ajuda a manter o histórico organizado e torna mais fácil identificar e entender cada alteração individualmente. De maneira opcional, caso ache interessante, utilize a estratégia de *squash commit* para mesclar commits relacionados e manter o histórico coerente e simplificado. Link de apoio para aplicar o squash commit: [Git Squash Commits – Squashing the Last N Commits into One Commit](https://www.freecodecamp.org/news/git-squash-commits/) + +A mensagem do commit deve descrever claramente como o comportamento está mudando e o motivo da alteração. Evite descrições vagas como "corrige bug" ou "ajuste", bem como commits sem descrição. Orientamos utilizar o formato [Conventional Commits](https://www.conventionalcommits.org/pt-br/v1.0.0/) para garantir uniformidade e facilitar a compreensão do histórico de alterações. + + +#### Pull requests + +Após concluir as alterações na sua branch, abra um Pull Request (PR) da branch, em seu fork, onde realizou a implementação, para a branch `master` do repositório principal. Isso permitirá que seu código seja revisado e mesclado ao repositório principal. Para isso, siga as diretrizes abaixo: + +1. Certifique-se de que sua branch está sincronizada com a branch principal (`master`). Caso necessário, faça um rebase ou merge antes de abrir o PR +2. Execute todos os testes antes de enviar a solicitação. Pull Requests que quebram testes automatizados não serão revisados nem aprovados +3. Verifique se o código segue as convenções de nomenclatura, formatação e boas práticas estabelecidas no repositório. +4. Em seu PR, forneça uma descrição clara e objetiva sobre quais mudanças foram feitas e o motivo da alteração +5. Se houver uma issue vinculada à implementação do seu PR, faça a associação para facilitar o rastreamento +6. Caso haja alguma pendência, resolva-a antes de abrir o PR. Corrija conflitos, erros no pipeline e outras pendências antes de enviar a solicitação +7. Após a abertura do PR, aguarde a revisão. Verifique periodicamente se solicitações foram adicionadas pelos revisores. Caso haja, realize as correções necessárias e atualize o PR. + + +### Convenções de código, padrões e boas práticas + +Para garantir clareza, consistência e qualidade no código, adote as seguintes diretrizes: + +- Os nomes de métodos, atributos e classes auxiliares devem ser escritos em português; +- Os nomes das classes e atributos constantes no Manual de Orientação do Contribuinte devem ser escritos exatamente como constam na documentação, respeitando a diferenciação entre maiúsculas e minúsculas (case sensitive). Exemplo: se o atributo ou classe começar com letra minúscula, ele deve ser mantido dessa forma no código C#. +- Todas as classes devem conter um cabeçalho com a licença e os direitos de uso; +- Ao referenciar objetos ou métodos na documentação XML, utilize ``. Exemplo: +```csharp +/// +/// Obtém o certificado digital. +/// +/// Se for informado, será usado o método . +/// Caso contrário, será usado . +/// +/// Após o uso, invoque . +/// +``` +- Todas as classes, atributos e métodos devem ser documentados no formato XML. A documentação dos atributos e classes do projeto `*.Classes` deve incluir o código e a descrição conforme especificado no Manual de Orientação do Contribuinte, seguindo o padrão adotado no projeto `NFe.Classes`. Exemplo: +```csharp +/// +/// PR06 - Versão do Aplicativo que processou a consulta. +/// +public string verAplic { get; set; } +``` +- Siga as convenções da Microsoft, conforme definido em: + - [Regras e Convenções de Nomenclatura do Identificador C#](https://learn.microsoft.com/pt-br/dotnet/csharp/fundamentals/coding-style/identifier-names) + - [Convenções Comuns de Código C#](https://learn.microsoft.com/pt-br/dotnet/csharp/fundamentals/coding-style/coding-conventions) +- Testes automatizados: + - Implemente testes automatizados para validar fluxos positivos e cenários de falha; + - Organize os testes de forma a refletir a estrutura do código, garantindo isolamento e reprodutibilidade; + - Utilize o padrão de nomenclatura [Given-When-Then](https://martinfowler.com/bliki/GivenWhenThen.html). +- Princípios [S.O.L.I.D.](https://medium.com/desenvolvendo-com-paixao/o-que-%C3%A9-solid-o-guia-completo-para-voc%C3%AA-entender-os-5-princ%C3%ADpios-da-poo-2b937b3fc530): + - Responsabilidade Única: cada classe ou método deve ter uma responsabilidade clara; + - Aberto/Fechado: projete o sistema para permitir novas funcionalidades sem alterar o comportamento existente; + - Substituição de Liskov: componentes derivados devem substituir os genéricos sem comprometer a integridade; + - Segregação de Interfaces: mantenha interfaces focadas e específicas; + - Inversão de Dependência: estruture dependências em abstrações, não em implementações concretas; +- [KISS](https://dev.to/suspir0n/kiss-mantenha-a-simplicidade-estupido-24lh) (Keep It Simple, Stupid): opte por soluções simples e diretas, evitando complexidade desnecessária; +- [DRY](https://medium.com/@rafaelsouzaim/n%C3%A3o-se-repita-dry-dont-repeat-yourself-40da33289bcf) (Don't Repeat Yourself): centralize a lógica repetitiva para um código mais sustentável e menos propenso a erros; +- Outras boas práticas: + - Use nomes autoexplicativos; + - Mantenha responsabilidades bem definidas em métodos e classes; + - Escreva código de fácil leitura e manutenção, minimizando a necessidade de comentários para esclarecer a intenção. + + +## Licença + +Ao contribuir para o projeto DFe.NET, você concorda que suas contribuições estarão sob a mesma [Licença do Projeto](LICENSE). \ No newline at end of file diff --git a/CTe.AppTeste.NetCore/CTe.AppTeste.NetCore.csproj b/CTe.AppTeste.NetCore/CTe.AppTeste.NetCore.csproj new file mode 100644 index 000000000..0a03cbdeb --- /dev/null +++ b/CTe.AppTeste.NetCore/CTe.AppTeste.NetCore.csproj @@ -0,0 +1,17 @@ + + + + Exe + net6.0 + + false + + + + + + + + + + diff --git a/CTe.AppTeste.NetCore/Dao/ConfiguracaoDao.cs b/CTe.AppTeste.NetCore/Dao/ConfiguracaoDao.cs new file mode 100644 index 000000000..e794aaec4 --- /dev/null +++ b/CTe.AppTeste.NetCore/Dao/ConfiguracaoDao.cs @@ -0,0 +1,81 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ +using System.IO; +using System.Reflection; +using System.Xml; +using System.Xml.Serialization; +using CTe.AppTeste.Entidades; + +namespace CTe.AppTeste.Dao +{ + public class ConfiguracaoDao + { + private readonly string _caminhoAplicacao; + private string _nomeArquivoXml = "Configuracao.xml"; + + public ConfiguracaoDao() + { + _caminhoAplicacao = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + } + + public void SalvarConfiguracao(Configuracao configuracao) + { + using (var stream = new StreamWriter(_caminhoAplicacao + @"\" + _nomeArquivoXml)) + { + var xmlSerializer = new XmlSerializer(typeof(Configuracao)); + + xmlSerializer.Serialize(XmlWriter.Create(stream), configuracao); + + stream.Flush(); + } + } + + public Configuracao BuscarConfiguracao() + { + if (!File.Exists(_caminhoAplicacao + @"\" + _nomeArquivoXml)) return null; + + Configuracao configuracao; + + using (var reader = new StreamReader(_caminhoAplicacao + @"\" + _nomeArquivoXml)) + { + var xmlSerializer = new XmlSerializer(typeof(Configuracao)); + + var objeto = xmlSerializer.Deserialize(XmlReader.Create(reader)); + + configuracao = objeto as Configuracao; + } + + return configuracao; + } + } +} \ No newline at end of file diff --git a/CTe.AppTeste.NetCore/Entidades/ConfigCertificadoDigital.cs b/CTe.AppTeste.NetCore/Entidades/ConfigCertificadoDigital.cs new file mode 100644 index 000000000..c0a8f6fe3 --- /dev/null +++ b/CTe.AppTeste.NetCore/Entidades/ConfigCertificadoDigital.cs @@ -0,0 +1,45 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ +using System; + +namespace CTe.AppTeste.Entidades +{ + [Serializable] + public class ConfigCertificadoDigital + { + public string NumeroDeSerie { get; set; } + public string CaminhoArquivo { get; set; } + public string Senha { get; set; } + public bool ManterEmCache { get; set; } + } +} \ No newline at end of file diff --git a/CTe.AppTeste.NetCore/Entidades/ConfigWebService.cs b/CTe.AppTeste.NetCore/Entidades/ConfigWebService.cs new file mode 100644 index 000000000..17219a4fe --- /dev/null +++ b/CTe.AppTeste.NetCore/Entidades/ConfigWebService.cs @@ -0,0 +1,51 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ +using System; +using CTe.Classes.Servicos.Tipos; +using DFe.Classes.Entidades; +using DFe.Classes.Flags; + +namespace CTe.AppTeste.Entidades +{ + [Serializable] + public class ConfigWebService + { + public Estado UfEmitente { get; set; } + public TipoAmbiente Ambiente { get; set; } + public short Serie { get; set; } + public long Numeracao { get; set; } + public versao Versao { get; set; } + public string CaminhoSchemas { get; set; } + public int TimeOut { get; set; } + } +} diff --git a/CTe.AppTeste.NetCore/Entidades/Configuracao.cs b/CTe.AppTeste.NetCore/Entidades/Configuracao.cs new file mode 100644 index 000000000..5204819b0 --- /dev/null +++ b/CTe.AppTeste.NetCore/Entidades/Configuracao.cs @@ -0,0 +1,53 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ +using System; + +namespace CTe.AppTeste.Entidades +{ + [Serializable] + public class Configuracao + { + public Configuracao() + { + Empresa = new Empresa(); + CertificadoDigital = new ConfigCertificadoDigital(); + ConfigWebService = new ConfigWebService(); + } + public Empresa Empresa { get; set; } + public ConfigCertificadoDigital CertificadoDigital { get; set; } + public ConfigWebService ConfigWebService { get; set; } + + public string DiretorioSalvarXml { get; set; } + public bool IsSalvarXml { get; set; } + } +} \ No newline at end of file diff --git a/CTe.AppTeste.NetCore/Entidades/Empresa.cs b/CTe.AppTeste.NetCore/Entidades/Empresa.cs new file mode 100644 index 000000000..10cd555d4 --- /dev/null +++ b/CTe.AppTeste.NetCore/Entidades/Empresa.cs @@ -0,0 +1,58 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ +using System; +using DFe.Classes.Entidades; + +namespace CTe.AppTeste.Entidades +{ + [Serializable] + public class Empresa + { + public string Cnpj { get; set; } + public string InscricaoEstadual { get; set; } + public string Nome { get; set; } + public string NomeFantasia { get; set; } + public string Logradouro { get; set; } + public string Numero { get; set; } + public string Complemento { get; set; } + public string Bairro { get; set; } + public long CodigoIbgeMunicipio { get; set; } + public string NomeMunicipio { get; set; } + public string Cep { get; set; } + public Estado SiglaUf { get; set; } + public string Telefone { get; set; } + public string Email { get; set; } + public string RNTRC { get; set; } + + } +} \ No newline at end of file diff --git a/CTe.AppTeste.NetCore/Program.cs b/CTe.AppTeste.NetCore/Program.cs new file mode 100644 index 000000000..6ed940b80 --- /dev/null +++ b/CTe.AppTeste.NetCore/Program.cs @@ -0,0 +1,953 @@ +using System; +using System.Collections.Generic; +using System.Net; +using System.Threading.Tasks; +using System.Xml.Linq; +using CTe.AppTeste.Dao; +using CTe.AppTeste.Entidades; +using CTe.Classes; +using CTe.Classes.Informacoes; +using CTe.Classes.Informacoes.Destinatario; +using CTe.Classes.Informacoes.Emitente; +using CTe.Classes.Informacoes.Identificacao; +using CTe.Classes.Informacoes.Impostos; +using CTe.Classes.Informacoes.Impostos.ICMS; +using CTe.Classes.Informacoes.Impostos.Tributacao; +using CTe.Classes.Informacoes.infCTeNormal; +using CTe.Classes.Informacoes.infCTeNormal.infCargas; +using CTe.Classes.Informacoes.infCTeNormal.infModals; +using CTe.Classes.Informacoes.Remetente; +using CTe.Classes.Informacoes.Tipos; +using CTe.Classes.Informacoes.Valores; +using CTe.Classes.Servicos; +using CTe.Classes.Servicos.Evento; +using CTe.Classes.Servicos.Recepcao; +using CTe.Classes.Servicos.Tipos; +using CTe.Servicos.ConsultaProtocolo; +using CTe.Servicos.ConsultaRecibo; +using CTe.Servicos.ConsultaStatus; +using CTe.Servicos.DistribuicaoDFe; +using CTe.Servicos.EnviarCte; +using CTe.Servicos.Eventos; +using CTe.Servicos.Inutilizacao; +using CTe.Servicos.Recepcao; +using CTe.Utils.CTe; +using DFe.Classes.Flags; +using DFe.Utils; +using CteEletronico = CTe.Classes.CTe; +using dest = CTe.Classes.Informacoes.Destinatario.dest; +using infNFe = CTe.Classes.Informacoes.infCTeNormal.infDocumentos.infNFe; + +namespace CTe.AppTeste.NetCore +{ + internal class Program + { + private static void Main(string[] args) + { + ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; + Console.WriteLine("Bem vindo aos teste de CT-e com suporte ao NetStandard 2.0!"); + Console.WriteLine("Este exemplo necesita do arquivo Configuração.xml já criado."); + Console.WriteLine("Caso necessite criar, utilize o app 'CTe.AppTeste'."); + Console.WriteLine("Em seguida copie o Configuração.xml para a pasta bin\\Debug\\netcoreapp2.2 deste projeto.\n"); + try + { + Menu(); + } + catch (Exception e) + { + Console.WriteLine(e); + } + } + + private static async void Menu() + { + while (true) + { + Console.WriteLine("Escolha uma das opções abaixo:"); + Console.WriteLine("0 - Sair"); + Console.WriteLine("1 - Consultar Status Serviço"); + Console.WriteLine("2 - Consulta Por Protocolo"); + Console.WriteLine("3 - Inutilizacao de Númeração"); + Console.WriteLine("4 - Consulta Por Número Recibo"); + Console.WriteLine("5 - Evento Cancelar CT-e"); + Console.WriteLine("6 - Carta Correção"); + Console.WriteLine("7 - Criar e Enviar CT-e 2.00 Ou 3.00"); + Console.WriteLine("8 - Criar e Enviar/Consulta Recibo Automatico CT-e 2.00 Ou 3.00"); + Console.WriteLine("9 - CTeDistribuicaoDFe 1.00"); + Console.WriteLine("10 - Evento Desacordo CT-e"); + var option = Console.ReadLine(); + Console.WriteLine(); + switch (Convert.ToInt32(option)) + { + case 0: + break; + case 1: + await ConsultarStatusServico2(); + break; + case 2: + await ConsultaPorProtocolo(); + break; + case 3: + await InutilizacaoDeNumeracao(); + break; + case 4: + await ConsultaPorNumeroRecibo(); + break; + case 5: + await EventoCancelarCTe(); + break; + case 6: + await CartaCorrecao(); + break; + case 7: + await CriarEnviarCTe2e3(); + break; + case 8: + await CriarEnviarCTeConsultaReciboAutomatico2e3(); + break; + case 9: + await DistribuicaoDFe(); + break; + case 10: + await EventoDesacordoCTe(); + break; + } + + if (Convert.ToInt32(option) > 0) + continue; + break; + } + } + + protected class RetornoEEnvio : EventArgs + { + public RetornoEEnvio(RetornoBase retorno) + { + Envio = retorno.EnvioXmlString; + Retorno = retorno.RetornoXmlString; + } + + public RetornoEEnvio(string envio, string retorno) + { + Envio = envio; + Retorno = retorno; + } + + public string Envio { get; set; } + public string Retorno { get; set; } + } + + + private static void CarregarConfiguracoes(Configuracao config) + { + var configuracaoCertificado = new ConfiguracaoCertificado + { + TipoCertificado = TipoCertificado.A1ByteArray, + ArrayBytesArquivo = GetArrayBytesCertificado(), + //ManterDadosEmCache = config.CertificadoDigital.ManterEmCache, + //Serial = config.CertificadoDigital.NumeroDeSerie + Senha = config.CertificadoDigital.Senha + }; + + + ConfiguracaoServico.Instancia.ConfiguracaoCertificado = configuracaoCertificado; + ConfiguracaoServico.Instancia.TimeOut = config.ConfigWebService.TimeOut; + ConfiguracaoServico.Instancia.cUF = config.ConfigWebService.UfEmitente; + ConfiguracaoServico.Instancia.tpAmb = config.ConfigWebService.Ambiente; + ConfiguracaoServico.Instancia.VersaoLayout = config.ConfigWebService.Versao; + ConfiguracaoServico.Instancia.DiretorioSchemas = config.ConfigWebService.CaminhoSchemas; + ConfiguracaoServico.Instancia.IsSalvarXml = config.IsSalvarXml; + ConfiguracaoServico.Instancia.DiretorioSalvarXml = config.DiretorioSalvarXml; + } + + private static ConfiguracaoServico MontarConfiguracoes(Configuracao config) + { + return new ConfiguracaoServico + { + ConfiguracaoCertificado = + { + TipoCertificado = TipoCertificado.A1ByteArray, + ArrayBytesArquivo = GetArrayBytesCertificado(), + //Arquivo = config.CertificadoDigital.CaminhoArquivo, + Senha = config.CertificadoDigital.Senha + }, + TimeOut = config.ConfigWebService.TimeOut, + cUF = config.ConfigWebService.UfEmitente, + tpAmb = config.ConfigWebService.Ambiente, + VersaoLayout = config.ConfigWebService.Versao, + DiretorioSchemas = config.ConfigWebService.CaminhoSchemas, + IsSalvarXml = config.IsSalvarXml, + DiretorioSalvarXml = config.DiretorioSalvarXml + }; + } + + private static async Task ConsultarStatusServico2() + { + var config = new ConfiguracaoDao().BuscarConfiguracao(); + //CarregarConfiguracoes(config); + + var configuracaoServico = MontarConfiguracoes(config); + + var statusServico = new StatusServico(); + var retorno = await statusServico.ConsultaStatusAsync(configuracaoServico); + + OnSucessoSync(new RetornoEEnvio(retorno)); + } + + + protected static void OnSucessoSync(RetornoEEnvio e) + { + Console.WriteLine(); + if (!string.IsNullOrEmpty(e.Envio)) + { + Console.WriteLine("Xml Envio:"); + Console.WriteLine(FormatXml(e.Envio) + "\n"); + } + + if (!string.IsNullOrEmpty(e.Retorno)) + { + Console.WriteLine("Xml Retorno:"); + Console.WriteLine(FormatXml(e.Retorno) + "\n"); + } + } + + private static async Task ConsultaPorProtocolo() + { + Console.WriteLine("1 - Por chave"); + Console.WriteLine("2 - Por arquivo xml"); + var option = Console.ReadLine(); + string chave; + switch (Convert.ToInt32(option)) + { + case 1: + Console.WriteLine("Digite a chave de acesso da CT-e:"); + chave = Console.ReadLine(); + break; + case 2: + chave = BuscarChave(); + break; + default: + Console.WriteLine("Opção inválida!"); + return; + } + + + if (string.IsNullOrEmpty(chave)) + { + Console.WriteLine("Ops.. Não há o que fazer sem uma chave de acesso."); + return; + } + + + var config = new ConfiguracaoDao().BuscarConfiguracao(); + //CarregarConfiguracoes(config); + var configuracaoServico = MontarConfiguracoes(config); + + var servicoConsultaProtocolo = new ConsultaProtcoloServico(); + var retorno = await servicoConsultaProtocolo.ConsultaProtocoloAsync(chave, configuracaoServico); + + + OnSucessoSync(new RetornoEEnvio(retorno)); + } + + private static string BuscarChave() + { + var chave = string.Empty; + var caminhoArquivoXml = BuscarArquivoXml(); + + if (caminhoArquivoXml == null) return chave; + + if (caminhoArquivoXml.Contains("completo")) + { + var enviCTe = Classes.Servicos.Recepcao.enviCTe.LoadXmlArquivo(caminhoArquivoXml); + + chave = enviCTe.CTe[0].Chave(); + } + else + { + var cte = CteEletronico.LoadXmlArquivo(caminhoArquivoXml); + + chave = cte.Chave(); + } + + return chave; + } + + private static string BuscarArquivoXml() + { + Console.WriteLine("Digite o caminho completo do arquivo de envio do XML:"); + var caminhoXml = Console.ReadLine(); + return caminhoXml ?? string.Empty; + } + + + private static string RequisitarInput(string titulo) + { + Console.WriteLine(titulo); + var valor = Console.ReadLine(); + return valor ?? string.Empty; + } + + private static async Task InutilizacaoDeNumeracao() + { + var config = new ConfiguracaoDao().BuscarConfiguracao(); + //CarregarConfiguracoes(config); + var configuracaoServico = MontarConfiguracoes(config); + + var numeroInicial = int.Parse(RequisitarInput("Númeração Inicial")); + var numeroFinal = int.Parse(RequisitarInput("Númeração Final")); + var ano = int.Parse(RequisitarInput("Digite o ano, apenas os ultimos dois digitos")); + var justificativa = RequisitarInput("Justificativa (15 digitos no minimo)"); + + var configInutilizar = new ConfigInutiliza( + config.Empresa.Cnpj, + config.ConfigWebService.Serie, + numeroInicial, + numeroFinal, + ano, + justificativa + ); + + var statusServico = new InutilizacaoServico(configInutilizar); + var retorno = await statusServico.InutilizarAsync(configuracaoServico); + + OnSucessoSync(new RetornoEEnvio(retorno)); + } + + private static async Task ConsultaPorNumeroRecibo() + { + var config = new ConfiguracaoDao().BuscarConfiguracao(); + //CarregarConfiguracoes(config); + var configuracaoServico = MontarConfiguracoes(config); + + var numeroRecibo = RequisitarInput("Número Recibo"); + + var consultaReciboServico = new ConsultaReciboServico(numeroRecibo); + var retorno = await consultaReciboServico.ConsultarAsync(configuracaoServico); + + OnSucessoSync(new RetornoEEnvio(retorno)); + } + + private static async Task EventoCancelarCTe() + { + var config = new ConfiguracaoDao().BuscarConfiguracao(); + //CarregarConfiguracoes(config); + var configuracaoServico = MontarConfiguracoes(config); + + var caminho = BuscarArquivoXml(); + + // aqui estou fazendo um load no lote de ct-e + var cte = enviCTe.LoadXmlArquivo(caminho).CTe[0]; + + // aqui estou fazendo um load no xml de envio de um ct-e + //var cte = CteEletronico.LoadXmlArquivo(caminho); + + var sequenciaEvento = int.Parse(RequisitarInput("Sequencia Evento")); + var protocolo = RequisitarInput("Protocolo"); + var justificativa = RequisitarInput("Justificativa mínimo 15 digitos vlw"); + + var servico = new EventoCancelamento(cte, sequenciaEvento, protocolo, justificativa); + var retorno = await servico.CancelarAsync(configuracaoServico); + + OnSucessoSync(new RetornoEEnvio(retorno)); + } + + private static async Task EventoDesacordoCTe() + { + var config = new ConfiguracaoDao().BuscarConfiguracao(); + //CarregarConfiguracoes(config); + var configuracaoServico = MontarConfiguracoes(config); + + var cnpj = RequisitarInput("CNPJ Tomador"); + var chave = RequisitarInput("Chave CTe"); + var sequenciaEvento = int.Parse(RequisitarInput("Sequencia Evento")); + var indPres = RequisitarInput("Indicador da prestação (1)"); + var obs = RequisitarInput("Observação (mínimo 15 digitos)"); + + var servico = new EventoDesacordo(sequenciaEvento, chave, cnpj, indPres, obs); + var retorno = await servico.DiscordarAsync(configuracaoServico); + + OnSucessoSync(new RetornoEEnvio(retorno)); + } + + private static async Task CartaCorrecao() + { + var config = new ConfiguracaoDao().BuscarConfiguracao(); + //CarregarConfiguracoes(config); + var configuracaoServico = MontarConfiguracoes(config); + + var caminho = BuscarArquivoXml(); + + // aqui estou fazendo um load no lote de ct-e + var cte = enviCTe.LoadXmlArquivo(caminho).CTe[0]; + + // aqui estou fazendo um load no xml de envio de um ct-e + //var cte = CteEletronico.LoadXmlArquivo(caminho); + + var sequenciaEvento = int.Parse(RequisitarInput("Sequencia Evento")); + + + // correções adicionadas.. não disponibilizei tela, mas serve como exemplo + // como vemos a correção é bem diferente da nf-e + var correcoes = new List + { + new infCorrecao + { + campoAlterado = "nro", + grupoAlterado = "enderRem", + valorAlterado = "170" + }, + new infCorrecao + { + campoAlterado = "fone", + grupoAlterado = "rem", + valorAlterado = "14991001000" + } + }; + + var servico = new EventoCartaCorrecao(cte, sequenciaEvento, correcoes); + var retorno = await servico.AdicionarCorrecoesAsync(configuracaoServico); + + OnSucessoSync(new RetornoEEnvio(retorno)); + } + + private static async Task CriarEnviarCTe2e3() + { + var config = new ConfiguracaoDao().BuscarConfiguracao(); + //CarregarConfiguracoes(config); + var configuracaoServico = MontarConfiguracoes(config); + + #region infCte + + var cteEletronico = new CteEletronico + { + infCte = new infCte + { + versao = config.ConfigWebService.Versao, + ide = new ide(configuracaoServico) + { + cUF = config.Empresa.SiglaUf, + cCT = GetRandom(), + CFOP = 5353, + natOp = "PRESTAÇÃO DE SERVICO DE TRANSPORTE CT-E EXEMPLO" + } + } + }; + + #endregion + + #region ide + + + if (config.ConfigWebService.Versao == versao.ve200) + cteEletronico.infCte.ide.forPag = forPag.Pago; + + cteEletronico.infCte.ide.mod = ModeloDocumento.CTe; + cteEletronico.infCte.ide.serie = config.ConfigWebService.Serie; + cteEletronico.infCte.ide.nCT = config.ConfigWebService.Numeracao; + cteEletronico.infCte.ide.dhEmi = DateTimeOffset.Now; + cteEletronico.infCte.ide.tpImp = tpImp.Retrado; + cteEletronico.infCte.ide.tpEmis = tpEmis.teNormal; + cteEletronico.infCte.ide.tpAmb = config.ConfigWebService.Ambiente; // o serviço adicionara automaticamente isso para você + cteEletronico.infCte.ide.tpCTe = tpCTe.Normal; + cteEletronico.infCte.ide.procEmi = procEmi.AplicativoContribuinte; + cteEletronico.infCte.ide.verProc = "0.0.0.1"; + cteEletronico.infCte.ide.cMunEnv = config.Empresa.CodigoIbgeMunicipio; + cteEletronico.infCte.ide.xMunEnv = config.Empresa.NomeMunicipio; + cteEletronico.infCte.ide.UFEnv = config.Empresa.SiglaUf; + cteEletronico.infCte.ide.modal = modal.rodoviario; + cteEletronico.infCte.ide.tpServ = tpServ.normal; + cteEletronico.infCte.ide.cMunIni = config.Empresa.CodigoIbgeMunicipio; + cteEletronico.infCte.ide.xMunIni = config.Empresa.NomeMunicipio; + cteEletronico.infCte.ide.UFIni = config.Empresa.SiglaUf; + cteEletronico.infCte.ide.cMunFim = config.Empresa.CodigoIbgeMunicipio; + cteEletronico.infCte.ide.xMunFim = config.Empresa.NomeMunicipio; + cteEletronico.infCte.ide.UFFim = config.Empresa.SiglaUf; + cteEletronico.infCte.ide.retira = retira.Nao; + + switch (config.ConfigWebService.Versao) + { + case versao.ve300: + cteEletronico.infCte.ide.indIEToma = indIEToma.ContribuinteIcms; + break; + case versao.ve200: + cteEletronico.infCte.ide.tomaBase3 = new toma03 + { + toma = toma.Remetente + }; + break; + } + + if (config.ConfigWebService.Versao == versao.ve300) + cteEletronico.infCte.ide.tomaBase3 = new toma3 + { + toma = toma.Remetente + }; + + #endregion + + #region emit + + cteEletronico.infCte.emit = new emit + { + CNPJ = config.Empresa.Cnpj, + IE = config.Empresa.InscricaoEstadual, + xNome = config.Empresa.Nome, + xFant = config.Empresa.NomeFantasia, + enderEmit = new enderEmit + { + xLgr = config.Empresa.Logradouro, + nro = config.Empresa.Numero, + xCpl = config.Empresa.Complemento, + xBairro = config.Empresa.Bairro, + cMun = config.Empresa.CodigoIbgeMunicipio, + xMun = config.Empresa.NomeMunicipio, + CEP = long.Parse(config.Empresa.Cep), + UF = config.Empresa.SiglaUf, + fone = config.Empresa.Telefone + } + }; + + + #endregion + + // Remetente , no caso adicionei os mesmos dados do emitente.. mas seriam o do remente. + + #region rem + + cteEletronico.infCte.rem = new rem + { + CNPJ = config.Empresa.Cnpj, + IE = config.Empresa.InscricaoEstadual, + xNome = config.Empresa.Nome, + xFant = config.Empresa.NomeFantasia, + fone = config.Empresa.Telefone, + enderReme = new enderReme + { + xLgr = config.Empresa.Logradouro, + nro = config.Empresa.Numero, + xCpl = config.Empresa.Complemento, + xBairro = config.Empresa.Bairro, + cMun = config.Empresa.CodigoIbgeMunicipio, + xMun = config.Empresa.NomeMunicipio, + CEP = long.Parse(config.Empresa.Cep), + UF = config.Empresa.SiglaUf + } + }; + + + #endregion + + // Destinatário + + #region dest + + cteEletronico.infCte.dest = new dest + { + CNPJ = config.Empresa.Cnpj, + IE = config.Empresa.InscricaoEstadual, + xNome = config.Empresa.Nome, + fone = config.Empresa.Telefone, + enderDest = new enderDest + { + xLgr = config.Empresa.Logradouro, + nro = config.Empresa.Numero, + xCpl = config.Empresa.Complemento, + xBairro = config.Empresa.Bairro, + cMun = config.Empresa.CodigoIbgeMunicipio, + xMun = config.Empresa.NomeMunicipio, + CEP = long.Parse(config.Empresa.Cep), + UF = config.Empresa.SiglaUf + } + }; + + + #endregion + + #region vPrest + + cteEletronico.infCte.vPrest = new vPrest {vTPrest = 100m, vRec = 100m}; + + #endregion + + #region imp + + cteEletronico.infCte.imp = new imp {ICMS = new ICMS()}; + + var icmsSimplesNacional = new ICMSSN(); + + cteEletronico.infCte.imp.ICMS.TipoICMS = icmsSimplesNacional; + + if (config.ConfigWebService.Versao == versao.ve300) icmsSimplesNacional.CST = CST.ICMS90; + + #endregion + + #region infCTeNorm + + cteEletronico.infCte.infCTeNorm = new infCTeNorm + { + infCarga = new infCarga + { + vCarga = 1000m, + proPred = "Linguiça com piqui", + infQ = new List {new infQ {cUnid = cUnid.KG, qCarga = 10000, tpMed = "quilos gramas"}} + }, + infDoc = new infDoc + { + infNFe = new List + { + new infNFe {chave = "52161021025760000123550010000087341557247948"} + } + } + }; + + + + if (config.ConfigWebService.Versao == versao.ve200) + { + cteEletronico.infCte.infCTeNorm.seg = new List {new seg {respSeg = respSeg.Destinatario}}; + } + + cteEletronico.infCte.infCTeNorm.infModal = new infModal(); + + switch (config.ConfigWebService.Versao) + { + case versao.ve200: + cteEletronico.infCte.infCTeNorm.infModal.versaoModal = versaoModal.veM200; + break; + case versao.ve300: + cteEletronico.infCte.infCTeNorm.infModal.versaoModal = versaoModal.veM300; + break; + } + + var rodoviario = new rodo {RNTRC = config.Empresa.RNTRC}; + + if (config.ConfigWebService.Versao == versao.ve200) + { + rodoviario.dPrev = DateTime.Now; + rodoviario.lota = lota.Nao; + } + + + cteEletronico.infCte.infCTeNorm.infModal.ContainerModal = rodoviario; + + #endregion + + + var numeroLote = RequisitarInput("Número Lote"); + + var servicoRecepcao = new ServicoCTeRecepcao(); + + // Evento executado antes do envio do CT-e para o WebService + // servicoRecepcao.AntesDeEnviar += AntesEnviarLoteCte; + + var retornoEnvio = + await servicoRecepcao.CTeRecepcaoAsync(int.Parse(numeroLote), new List {cteEletronico}, configuracaoServico); + + OnSucessoSync(new RetornoEEnvio(retornoEnvio)); + + config.ConfigWebService.Numeracao++; + new ConfiguracaoDao().SalvarConfiguracao(config); + } + + private void AntesEnviarLoteCte(object sender, AntesEnviarRecepcao e) + { + e.enviCTe.CTe.ForEach(cte => { Console.WriteLine(cte.Chave()); }); + } + + + private static int GetRandom() + { + var rand = new Random(); + return rand.Next(11111111, 99999999); + } + + private static async Task CriarEnviarCTeConsultaReciboAutomatico2e3() + { + var config = new ConfiguracaoDao().BuscarConfiguracao(); + //CarregarConfiguracoes(config); + var configuracaoServico = MontarConfiguracoes(config); + + #region infCte + + var cteEletronico = new CteEletronico + { + infCte = new infCte + { + versao = config.ConfigWebService.Versao, + ide = new ide(configuracaoServico) + { + cUF = config.Empresa.SiglaUf, + cCT = GetRandom(), + CFOP = 5353, + natOp = "PRESTAÇÃO DE SERVICO DE TRANSPORTE CT-E EXEMPLO" + } + } + }; + + #endregion + + #region ide + + if (config.ConfigWebService.Versao == versao.ve200) cteEletronico.infCte.ide.forPag = forPag.Pago; + cteEletronico.infCte.ide.mod = ModeloDocumento.CTe; + cteEletronico.infCte.ide.serie = config.ConfigWebService.Serie; + cteEletronico.infCte.ide.nCT = config.ConfigWebService.Numeracao; + cteEletronico.infCte.ide.dhEmi = DateTimeOffset.Now; + cteEletronico.infCte.ide.tpImp = tpImp.Retrado; + cteEletronico.infCte.ide.tpEmis = tpEmis.teNormal; + cteEletronico.infCte.ide.tpAmb = config.ConfigWebService.Ambiente; // o serviço adicionara automaticamente isso para você + cteEletronico.infCte.ide.tpCTe = tpCTe.Normal; + cteEletronico.infCte.ide.procEmi = procEmi.AplicativoContribuinte; + cteEletronico.infCte.ide.verProc = "0.0.0.1"; + cteEletronico.infCte.ide.cMunEnv = config.Empresa.CodigoIbgeMunicipio; + cteEletronico.infCte.ide.xMunEnv = config.Empresa.NomeMunicipio; + cteEletronico.infCte.ide.UFEnv = config.Empresa.SiglaUf; + cteEletronico.infCte.ide.modal = modal.rodoviario; + cteEletronico.infCte.ide.tpServ = tpServ.normal; + cteEletronico.infCte.ide.cMunIni = config.Empresa.CodigoIbgeMunicipio; + cteEletronico.infCte.ide.xMunIni = config.Empresa.NomeMunicipio; + cteEletronico.infCte.ide.UFIni = config.Empresa.SiglaUf; + cteEletronico.infCte.ide.cMunFim = config.Empresa.CodigoIbgeMunicipio; + cteEletronico.infCte.ide.xMunFim = config.Empresa.NomeMunicipio; + cteEletronico.infCte.ide.UFFim = config.Empresa.SiglaUf; + cteEletronico.infCte.ide.retira = retira.Nao; + + switch (config.ConfigWebService.Versao) + { + case versao.ve300: + cteEletronico.infCte.ide.indIEToma = indIEToma.ContribuinteIcms; + cteEletronico.infCte.ide.tomaBase3 = new toma3 + { + toma = toma.Remetente + }; + break; + case versao.ve200: + cteEletronico.infCte.ide.tomaBase3 = new toma03 + { + toma = toma.Remetente + }; + break; + } + + #endregion + + #region emit + + cteEletronico.infCte.emit = new emit + { + CNPJ = config.Empresa.Cnpj, + IE = config.Empresa.InscricaoEstadual, + xNome = config.Empresa.Nome, + xFant = config.Empresa.NomeFantasia, + enderEmit = new enderEmit + { + xLgr = config.Empresa.Logradouro, + nro = config.Empresa.Numero, + xCpl = config.Empresa.Complemento, + xBairro = config.Empresa.Bairro, + cMun = config.Empresa.CodigoIbgeMunicipio, + xMun = config.Empresa.NomeMunicipio, + CEP = long.Parse(config.Empresa.Cep), + UF = config.Empresa.SiglaUf, + fone = config.Empresa.Telefone + } + }; + + #endregion + + // Remetente , no caso adicionei os mesmos dados do emitente.. mas seriam o do remente. + + #region rem + + cteEletronico.infCte.rem = new rem + { + CNPJ = config.Empresa.Cnpj, + IE = config.Empresa.InscricaoEstadual, + xNome = config.Empresa.Nome, + xFant = config.Empresa.NomeFantasia, + fone = config.Empresa.Telefone, + enderReme = new enderReme + { + xLgr = config.Empresa.Logradouro, + nro = config.Empresa.Numero, + xCpl = config.Empresa.Complemento, + xBairro = config.Empresa.Bairro, + cMun = config.Empresa.CodigoIbgeMunicipio, + xMun = config.Empresa.NomeMunicipio, + CEP = long.Parse(config.Empresa.Cep), + UF = config.Empresa.SiglaUf + } + }; + + #endregion + + // Destinatário + + #region dest + + cteEletronico.infCte.dest = new dest + { + CNPJ = config.Empresa.Cnpj, + IE = config.Empresa.InscricaoEstadual, + xNome = config.Empresa.Nome, + fone = config.Empresa.Telefone, + enderDest = new enderDest + { + xLgr = config.Empresa.Logradouro, + nro = config.Empresa.Numero, + xCpl = config.Empresa.Complemento, + xBairro = config.Empresa.Bairro, + cMun = config.Empresa.CodigoIbgeMunicipio, + xMun = config.Empresa.NomeMunicipio, + CEP = long.Parse(config.Empresa.Cep), + UF = config.Empresa.SiglaUf + } + }; + + #endregion + + #region vPrest + + cteEletronico.infCte.vPrest = new vPrest {vTPrest = 100m, vRec = 100m}; + + #endregion + + #region imp + + cteEletronico.infCte.imp = new imp {ICMS = new ICMS()}; + + var icmsSimplesNacional = new ICMSSN(); + + cteEletronico.infCte.imp.ICMS.TipoICMS = icmsSimplesNacional; + + if (config.ConfigWebService.Versao == versao.ve300) icmsSimplesNacional.CST = CST.ICMS90; + + #endregion + + #region infCTeNorm + + cteEletronico.infCte.infCTeNorm = new infCTeNorm + { + infCarga = new infCarga + { + vCarga = 1000m, + proPred = "Linguiça com piqui", + infQ = new List {new infQ {cUnid = cUnid.KG, qCarga = 10000, tpMed = "quilos gramas"}} + } + }; + + + cteEletronico.infCte.infCTeNorm.infDoc = new infDoc + { + infNFe = new List {new infNFe {chave = "52161021025760000123550010000087341557247948"}} + }; + + if (config.ConfigWebService.Versao == versao.ve200) + cteEletronico.infCte.infCTeNorm.seg = new List {new seg {respSeg = respSeg.Destinatario}}; + + cteEletronico.infCte.infCTeNorm.infModal = new infModal(); + + switch (config.ConfigWebService.Versao) + { + case versao.ve200: + cteEletronico.infCte.infCTeNorm.infModal.versaoModal = versaoModal.veM200; + break; + case versao.ve300: + cteEletronico.infCte.infCTeNorm.infModal.versaoModal = versaoModal.veM300; + break; + } + + var rodoviario = new rodo {RNTRC = config.Empresa.RNTRC}; + + if (config.ConfigWebService.Versao == versao.ve200) + { + rodoviario.dPrev = DateTime.Now; + rodoviario.lota = lota.Nao; + } + + + cteEletronico.infCte.infCTeNorm.infModal.ContainerModal = rodoviario; + + #endregion + + + var numeroLote = RequisitarInput("Número Lote"); + + var servico = new ServicoEnviarCte(); + + var retorno = await servico.EnviarAsync(Convert.ToInt32(numeroLote), cteEletronico, configuracaoServico); + + var xmlRetorno = string.Empty; + + if (retorno.CteProc != null) + xmlRetorno = retorno.CteProc.ObterXmlString(); + + if (retorno.RetConsReciCTe.protCTe[0].infProt.cStat != 100) + xmlRetorno = retorno.RetConsReciCTe.RetornoXmlString; + + OnSucessoSync(new RetornoEEnvio(retorno.RetEnviCte.EnvioXmlString, xmlRetorno)); + + config.ConfigWebService.Numeracao++; + new ConfiguracaoDao().SalvarConfiguracao(config); + } + + private static async Task DistribuicaoDFe() + { + var config = new ConfiguracaoDao().BuscarConfiguracao(); + //CarregarConfiguracoes(config); + var configuracaoServico = MontarConfiguracoes(config); + + #region CTeDistribuicaoDFe + + var cnpj = RequisitarInput("CNPJ do destinatário do CTE:"); + if (string.IsNullOrEmpty(cnpj)) throw new Exception("O CNPJ deve ser informado!"); + if (cnpj.Length != 14) throw new Exception("O CNPJ deve conter 14 caracteres!"); + + + var ultNSU = RequisitarInput("Ultimo NSU NSU "); + if (string.IsNullOrEmpty(ultNSU)) + ultNSU = "0"; + + if (int.Parse(ultNSU) < 0) throw new Exception("ultNSU deve ser maior ou igual a 0"); + + + var nsu = RequisitarInput("NSU faltante"); + if (string.IsNullOrEmpty(nsu)) + nsu = "0"; + + if (int.Parse(nsu) < 0) throw new Exception("NSU deve ser maior ou igual a 0"); + + + var servicoCTe = new ServicoCTeDistribuicaoDFe(); + var retornoCTeDistDFe = + await servicoCTe.CTeDistDFeInteresseAsync(config.Empresa.SiglaUf.ToString(), cnpj, ultNSU, nsu, configuracaoServico); + + OnSucessoSync(new RetornoEEnvio(retornoCTeDistDFe.EnvioStr, retornoCTeDistDFe.RetornoStr)); + + #endregion + } + + private static string FormatXml(string xml) + { + try + { + var doc = XDocument.Parse(xml); + return doc.ToString(); + } + catch (Exception) + { + // Handle and throw if fatal exception here; don't just ignore them + return xml; + } + } + + private static byte[] GetArrayBytesCertificado() + { + throw new Exception("Coloque aqui a string do seu certificado, ou modifique " + + "o tipo de certificado nas configurações desta classe."); + return Convert.FromBase64String( + "String do Certificado em base64"); + } + } +} \ No newline at end of file diff --git a/CTeRefatorar/Assets/Schemas.Cte/cancCTeTiposBasico_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/cancCTeTiposBasico_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cancCTeTiposBasico_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/cancCTeTiposBasico_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cancCTeTiposBasico_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/cancCTeTiposBasico_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cancCTeTiposBasico_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/cancCTeTiposBasico_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/consCad_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/consCad_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/consCad_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/consCad_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/consReciCTeTiposBasico_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/consReciCTeTiposBasico_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/consReciCTeTiposBasico_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/consReciCTeTiposBasico_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/consReciCTeTiposBasico_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/consReciCTeTiposBasico_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/consReciCTeTiposBasico_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/consReciCTeTiposBasico_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/consReciCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/consReciCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/consReciCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/consReciCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/consReciCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/consReciCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/consReciCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/consReciCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/consSitCTeTiposBasico_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/consSitCTeTiposBasico_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/consSitCTeTiposBasico_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/consSitCTeTiposBasico_v2.00.xsd diff --git a/CTe.AppTeste.NetCore/schemas/consSitCTeTiposBasico_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/consSitCTeTiposBasico_v3.00.xsd new file mode 100644 index 000000000..8840a9d1c --- /dev/null +++ b/CTe.AppTeste.NetCore/schemas/consSitCTeTiposBasico_v3.00.xsd @@ -0,0 +1,142 @@ + + + + + + + Tipo Pedido de Consulta da Situação Atual do Conhecimento de Transporte eletrônico + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Serviço Solicitado + + + + + Chaves de acesso da CT-e, compostas por: UF do emitente, AAMM da emissão da CT-e, CNPJ do emitente, modelo, série e número da CT-e e código numérico + DV. + + + + + + + + + + + + Tipo Retorno de Pedido de Consulta da Situação Atual do Conhecimento de Transporte eletrônico + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Versão do Aplicativo que processou o CT-e + + + + + Código do status da mensagem enviada. + + + + + Descrição literal do status do serviço solicitado. + + + + + código da UF de atendimento + + + + + + + + + Retornar protCTe da versão correspondente do CT-e autorizado + + + + + + + + + + + + + + + + + + + + + + Retornar retCancCTe da versão correspondente do cancelamento CT-e autorizado + + + + + + + + + + + + + + + + + + + + + Retornar procEventoCTe da versão correspondente do evento CT-e autorizado + + + + + + + + + + + + + + + + + + + + + Tipo Versão do Consulta situação de CT-e - 2.00 + + + + + + diff --git a/CTeRefatorar/Assets/Schemas.Cte/consSitCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/consSitCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/consSitCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/consSitCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/consSitCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/consSitCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/consSitCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/consSitCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/consStatServCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/consStatServCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/consStatServCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/consStatServCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/consStatServCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/consStatServCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/consStatServCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/consStatServCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/consStatServTiposBasico_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/consStatServTiposBasico_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/consStatServTiposBasico_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/consStatServTiposBasico_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/consStatServTiposBasico_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/consStatServTiposBasico_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/consStatServTiposBasico_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/consStatServTiposBasico_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteModalAereo_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/cteModalAereo_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteModalAereo_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteModalAereo_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteModalAereo_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/cteModalAereo_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteModalAereo_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteModalAereo_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteModalAquaviario_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/cteModalAquaviario_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteModalAquaviario_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteModalAquaviario_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteModalAquaviario_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/cteModalAquaviario_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteModalAquaviario_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteModalAquaviario_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteModalDutoviario_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/cteModalDutoviario_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteModalDutoviario_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteModalDutoviario_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteModalDutoviario_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/cteModalDutoviario_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteModalDutoviario_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteModalDutoviario_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteModalFerroviario_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/cteModalFerroviario_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteModalFerroviario_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteModalFerroviario_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteModalFerroviario_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/cteModalFerroviario_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteModalFerroviario_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteModalFerroviario_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteModalRodoviarioOS_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/cteModalRodoviarioOS_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteModalRodoviarioOS_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteModalRodoviarioOS_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteModalRodoviario_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/cteModalRodoviario_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteModalRodoviario_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteModalRodoviario_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteModalRodoviario_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/cteModalRodoviario_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteModalRodoviario_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteModalRodoviario_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteMultiModal_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/cteMultiModal_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteMultiModal_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteMultiModal_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteMultiModal_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/cteMultiModal_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteMultiModal_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteMultiModal_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteOS_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/cteOS_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteOS_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteOS_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteTiposBasico_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/cteTiposBasico_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteTiposBasico_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteTiposBasico_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cteTiposBasico_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/cteTiposBasico_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cteTiposBasico_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/cteTiposBasico_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cte_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/cte_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cte_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/cte_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/cte_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/cte_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/cte_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/cte_v3.00.xsd diff --git a/CTe.AppTeste.NetCore/schemas/distDFeInt_v1.00.xsd b/CTe.AppTeste.NetCore/schemas/distDFeInt_v1.00.xsd new file mode 100644 index 000000000..dd125b0ee --- /dev/null +++ b/CTe.AppTeste.NetCore/schemas/distDFeInt_v1.00.xsd @@ -0,0 +1,71 @@ + + + + + + Schema de pedido de distribuição de DF-e de interesse + + + + + + + Identificação do Ambiente: + 1 - Produção + 2 - Homologação + + + + + + Código da UF do Autor + + + + + + CNPJ do interessado no DF-e + + + + + CPF do interessado no DF-e + + + + + + + Grupo para distribuir DF-e de interesse + + + + + + Último NSU recebido pelo ator. Caso seja informado com zero, ou com um NSU muito antigo, a consulta retornará unicamente as informações resumidas e documentos fiscais eletrônicos que tenham sido recepcionados pelo Ambiente Nacional nos últimos 3 meses. + + + + + + + + Grupo para consultar um DF-e a partir de um NSU específico + + + + + + Número Sequencial Único. Geralmente esta consulta será utilizada quando identificado pelo interessado um NSU faltante. O Web Service retornará o documento ou informará que o NSU não existe no Ambiente Nacional. Assim, esta consulta fechará a lacuna do NSU identificado como faltante. + + + + + + + + + + + + diff --git a/CTeRefatorar/Assets/Schemas.Cte/enviCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/enviCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/enviCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/enviCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/enviCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/enviCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/enviCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/enviCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/evCCeCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/evCCeCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/evCCeCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/evCCeCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/evCCeCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/evCCeCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/evCCeCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/evCCeCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/evCancCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/evCancCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/evCancCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/evCancCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/evCancCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/evCancCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/evCancCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/evCancCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/evEPECCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/evEPECCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/evEPECCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/evEPECCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/evEPECCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/evEPECCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/evEPECCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/evEPECCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/evGTV_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/evGTV_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/evGTV_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/evGTV_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/evPrestDesacordo_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/evPrestDesacordo_v3.00.xsd old mode 100755 new mode 100644 similarity index 96% rename from CTeRefatorar/Assets/Schemas.Cte/evPrestDesacordo_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/evPrestDesacordo_v3.00.xsd index a0a570875..22a2cf1e4 --- a/CTeRefatorar/Assets/Schemas.Cte/evPrestDesacordo_v3.00.xsd +++ b/CTe.AppTeste.NetCore/schemas/evPrestDesacordo_v3.00.xsd @@ -15,6 +15,7 @@ + diff --git a/CTeRefatorar/Assets/Schemas.Cte/evRegMultimodal_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/evRegMultimodal_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/evRegMultimodal_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/evRegMultimodal_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/evRegMultimodal_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/evRegMultimodal_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/evRegMultimodal_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/evRegMultimodal_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/eventoCTeTiposBasico_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/eventoCTeTiposBasico_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/eventoCTeTiposBasico_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/eventoCTeTiposBasico_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/eventoCTeTiposBasico_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/eventoCTeTiposBasico_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/eventoCTeTiposBasico_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/eventoCTeTiposBasico_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/eventoCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/eventoCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/eventoCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/eventoCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/eventoCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/eventoCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/eventoCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/eventoCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/inutCTeTiposBasico_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/inutCTeTiposBasico_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/inutCTeTiposBasico_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/inutCTeTiposBasico_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/inutCTeTiposBasico_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/inutCTeTiposBasico_v3.00.xsd old mode 100755 new mode 100644 similarity index 96% rename from CTeRefatorar/Assets/Schemas.Cte/inutCTeTiposBasico_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/inutCTeTiposBasico_v3.00.xsd index 01ebc7834..5a26ca820 --- a/CTeRefatorar/Assets/Schemas.Cte/inutCTeTiposBasico_v3.00.xsd +++ b/CTe.AppTeste.NetCore/schemas/inutCTeTiposBasico_v3.00.xsd @@ -45,9 +45,9 @@ CNPJ do emitente - + - Modelo da CT-e (57) + Modelo da CT-e (57 ou 67) @@ -148,9 +148,9 @@ CNPJ do emitente - + - Modelo da CT-e (57) + Modelo da CT-e (57 ou 67) diff --git a/CTeRefatorar/Assets/Schemas.Cte/inutCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/inutCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/inutCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/inutCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/inutCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/inutCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/inutCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/inutCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/leiauteConsultaCadastro_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/leiauteConsultaCadastro_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/leiauteConsultaCadastro_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/leiauteConsultaCadastro_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/procCTeOS_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/procCTeOS_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/procCTeOS_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/procCTeOS_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/procCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/procCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/procCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/procCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/procCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/procCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/procCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/procCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/procEventoCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/procEventoCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/procEventoCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/procEventoCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/procEventoCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/procEventoCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/procEventoCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/procEventoCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/procInutCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/procInutCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/procInutCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/procInutCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/procInutCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/procInutCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/procInutCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/procInutCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/retCTeOS_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/retCTeOS_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/retCTeOS_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/retCTeOS_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/retConsCad_v1.01.xsd b/CTe.AppTeste.NetCore/schemas/retConsCad_v1.01.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/retConsCad_v1.01.xsd rename to CTe.AppTeste.NetCore/schemas/retConsCad_v1.01.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/retConsReciCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/retConsReciCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/retConsReciCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/retConsReciCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/retConsReciCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/retConsReciCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/retConsReciCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/retConsReciCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/retConsSitCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/retConsSitCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/retConsSitCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/retConsSitCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/retConsSitCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/retConsSitCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/retConsSitCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/retConsSitCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/retConsStatServCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/retConsStatServCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/retConsStatServCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/retConsStatServCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/retConsStatServCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/retConsStatServCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/retConsStatServCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/retConsStatServCTe_v3.00.xsd diff --git a/CTe.AppTeste.NetCore/schemas/retDistDFeInt_v1.00.xsd b/CTe.AppTeste.NetCore/schemas/retDistDFeInt_v1.00.xsd new file mode 100644 index 000000000..d84a7617f --- /dev/null +++ b/CTe.AppTeste.NetCore/schemas/retDistDFeInt_v1.00.xsd @@ -0,0 +1,89 @@ + + + + + + Schema do resultado do pedido de distribuição de DF-e de interesse + + + + + + + Identificação do Ambiente: + 1 - Produção + 2 - Homologação + + + + + + Versão do Web Service CTeDistribuicaoDFe + + + + + Código do status de processamento da requisição + + + + + Descrição literal do status do processamento da requisição + + + + + Data e Hora de processamento da requisição no formato AAAA-MM-DDTHH:MM:SS + + + + + + + + + + + Último NSU pesquisado no Ambiente Nacional. Se for o caso, o solicitante pode continuar a consulta a partir deste NSU para obter novos resultados. + + + + + Maior NSU existente no Ambiente Nacional para o CNPJ/CPF informado + + + + + Conjunto de informações resumidas e documentos fiscais eletrônicos de interesse da pessoa ou empresa. + + + + + + Informação resumida ou documento fiscal eletrônico de interesse da pessoa ou empresa. O conteúdo desta tag estará compactado no padrão gZip. O tipo do campo é base64Binary. + + + + + + + NSU do documento fiscal + + + + + Identificação do Schema XML que será utilizado para validar o XML existente no conteúdo da tag docZip. Vai identificar o tipo do documento e sua versão. Exemplos: procCTe_v2.00.xsd, procEventoCTe_v2.00.xsd + + + + + + + + + + + + + + diff --git a/CTeRefatorar/Assets/Schemas.Cte/retEnviCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/retEnviCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/retEnviCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/retEnviCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/retEnviCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/retEnviCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/retEnviCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/retEnviCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/retEventoCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/retEventoCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/retEventoCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/retEventoCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/retEventoCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/retEventoCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/retEventoCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/retEventoCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/retInutCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/retInutCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/retInutCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/retInutCTe_v2.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/retInutCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/retInutCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/retInutCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/retInutCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/tiposBasico_v1.03.xsd b/CTe.AppTeste.NetCore/schemas/tiposBasico_v1.03.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/tiposBasico_v1.03.xsd rename to CTe.AppTeste.NetCore/schemas/tiposBasico_v1.03.xsd diff --git a/CTe.AppTeste.NetCore/schemas/tiposDistDFe_v1.00.xsd b/CTe.AppTeste.NetCore/schemas/tiposDistDFe_v1.00.xsd new file mode 100644 index 000000000..c05ae3f9d --- /dev/null +++ b/CTe.AppTeste.NetCore/schemas/tiposDistDFe_v1.00.xsd @@ -0,0 +1,243 @@ + + + + + Tipo número sequencial único + + + + + + + + Tipo quantidade de NSU + + + + + + + + + Tipo Finalidade da CT-e + + + + + + + + + + + + Tipo Modal transporte + + + + + + + + + + + + + + Tipo Versão dos leiautes do Web Service NFeDistribuicaoDFe + + + + + + + + + Tipo Ambiente + + + + + + + + + + Tipo Código da UF da tabela do IBGE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tipo Código de orgão (UF da tabela do IBGE + 90 RFB) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tipo Número do CNPJ + + + + + + + + + + Tipo Número do CPF + + + + + + + + + + Tipo Versão do Aplicativo + + + + + + + + + Tipo Código da Mensagem enviada + + + + + + + + + + Tipo Motivo + + + + + + + + + Tipo string genérico + + + + + + + + + Tipo Chave da Nota Fiscal Eletrônica + + + + + + + + + + Tipo Número do Protocolo de Status + + + + + + + + + + Data e Hora, formato UTC (AAAA-MM-DDThh:mm:ssTZD, onde TZD = +hh:mm ou -hh:mm) + + + + + + + + + Tipo Inscrição Estadual do Emitente // alterado EM 24/10/08 para aceitar ISENTO + + + + + + + + + + Tipo Decimal com 15 dígitos, sendo 13 de corpo e 2 decimais + + + + + + + diff --git a/CTeRefatorar/Assets/Schemas.Cte/tiposGeralCTe_v2.00-OPENSSL.xsd b/CTe.AppTeste.NetCore/schemas/tiposGeralCTe_v2.00-OPENSSL.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/tiposGeralCTe_v2.00-OPENSSL.xsd rename to CTe.AppTeste.NetCore/schemas/tiposGeralCTe_v2.00-OPENSSL.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/tiposGeralCTe_v2.00.xsd b/CTe.AppTeste.NetCore/schemas/tiposGeralCTe_v2.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/tiposGeralCTe_v2.00.xsd rename to CTe.AppTeste.NetCore/schemas/tiposGeralCTe_v2.00.xsd diff --git a/CTe.AppTeste.NetCore/schemas/tiposGeralCTe_v3.00-OPENSSL.xsd b/CTe.AppTeste.NetCore/schemas/tiposGeralCTe_v3.00-OPENSSL.xsd new file mode 100644 index 000000000..0126ebbff --- /dev/null +++ b/CTe.AppTeste.NetCore/schemas/tiposGeralCTe_v3.00-OPENSSL.xsd @@ -0,0 +1,615 @@ + + + + + Data e Hora, formato UTC (AAAA-MM-DDThh:mm:ssTZD, onde TZD = +hh:mm ou -hh:mm) + + + + + + + + + Tipo Ambiente + + + + + + + + + + Tipo ano + + + + + + + + + Tipo Código da UF da tabela do IBGE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tipo Código do Município da tabela do IBGE + + + + + + + + + Tipo Código de orgão (UF da tabela do IBGE + 90 SUFRAMA + 91 RFB) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tipo Chave da Nota Fiscal Eletrônica + + + + + + + + + + Tipo Número do CNPJ + + + + + + + + + Tipo Número do Telefone + + + + + + + + + Tipo Número do CNPJ tamanho varíavel (3-14) + + + + + + + + + Tipo Número do CNPJ Opcional + + + + + + + + + Tipo Número do CPF + + + + + + + + + Tipo Número do CPF de tamanho variável (3-11) + + + + + + + + + Tipo data AAAA-MM-DD + + + + + + + + + Tipo Decimal com 5 dígitos, sendo 3 de corpo e 2 decimais + + + + + + + + + Tipo Decimal com 6 dígitos, sendo 3 de corpo e 3 decimais + + + + + + + + + Tipo Decimal com 6 ou 5 dígitos, sendo 3 de corpo e 3 ou 2 decimais + + + + + + + + + Tipo Decimal com 5 dígitos, sendo 3 de corpo e 2 decimais, utilizado em tags opcionais + + + + + + + + + Tipo Decimal com 11 dígitos, sendo 8 de corpo e 3 decimais + + + + + + + + + Tipo Decimal com 11 dígitos, sendo 8 de corpo e 3 decimais utilizado em tags opcionais + + + + + + + + + Tipo Decimal com 12 dígitos, sendo 8 de corpo e 4decimais + + + + + + + + + Tipo Decimal com 12 dígitos, sendo 8 de corpo e 4 decimais, utilizado em tags opcionais + + + + + + + + + Tipo Decimal com 15 dígitos, sendo 9 de corpo e 6 decimais, utilizado em tags opcionais + + + + + + + + + Tipo Decimal com 15 dígitos, sendo 11 de corpo e 4 decimais + + + + + + + + + Tipo Decimal com 15 dígitos, sendo 11 de corpo e 4 decimais, utilizado em tags opcionais + + + + + + + + + Tipo Decimal com 15 dígitos, sendo 12 de corpo e 3 decimais + + + + + + + + + Tipo Decimal com 15 dígitos, sendo 12 de corpo e 3 decimais, utilizado em tags opcionais + + + + + + + + + Tipo Decimal com 16 dígitos, sendo 12 de corpo e 4 decimais + + + + + + + + + Tipo Decimal com 16 dígitos, sendo 12 de corpo e 4 decimais, utilizado em tags opcionais + + + + + + + + + Tipo Decimal com 15 dígitos, sendo 13 de corpo e 2 decimais + + + + + + + + + Tipo Decimal com 15 dígitos, sendo 13 de corpo e 2 decimais, utilizado em tags opcionais + + + + + + + + + Tipo Inscrição Estadual do Emitente + + + + + + + + + + Tipo Inscrição Estadual do Destinatário + + + + + + + + + + Tipo Justificativa + + + + + + + + + Tipo temp médio em segundos + + + + + + + + + Tipo Modelo Documento Fiscal + + + + + + + + + Tipo Modelo Documento Fiscal + + + + + + + + + + Tipo Modelo Documento Fiscal + + + + + + + + + Tipo Modelo Documento Fiscal - NF Remetente + + + + + + + + + + Tipo da Unidade de Transporte + + + + + + + + + + + + + + + Tipo da Unidade de Carga + + + + + + + + + + + + Tipo Motivo + + + + + + + + + Tipo Número do Documento Fiscal + + + + + + + + + Tipo Número do Protocolo de Status + + + + + + + + + Tipo Número do Recibo do envio de lote de NF-e + + + + + + + + + Tipo Série do Documento Fiscal + + + + + + + + + Tipo Serviço solicitado + + + + + + Tipo Código da Mensagem enviada + + + + + + + + + Tipo string genérico + + + + + + + + + Tipo Sigla da UF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tipo Sigla da UF, sem Exterior + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tipo Versão do Aplicativo + + + + + + + + + Coordenada geográfica Latitude + + + + + + + + Coordenada geográfica Longitude + + + + + + + + Tipo IP versão 4 + + + + + + + diff --git a/CTeRefatorar/Assets/Schemas.Cte/tiposGeralCTe_v3.00.xsd b/CTe.AppTeste.NetCore/schemas/tiposGeralCTe_v3.00.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/tiposGeralCTe_v3.00.xsd rename to CTe.AppTeste.NetCore/schemas/tiposGeralCTe_v3.00.xsd diff --git a/CTeRefatorar/Assets/Schemas.Cte/xmldsig-core-schema_v1.01.xsd b/CTe.AppTeste.NetCore/schemas/xmldsig-core-schema_v1.01.xsd old mode 100755 new mode 100644 similarity index 100% rename from CTeRefatorar/Assets/Schemas.Cte/xmldsig-core-schema_v1.01.xsd rename to CTe.AppTeste.NetCore/schemas/xmldsig-core-schema_v1.01.xsd diff --git a/CTe.AppTeste/App.config b/CTe.AppTeste/App.config index d1428ad71..4bfa00561 100644 --- a/CTe.AppTeste/App.config +++ b/CTe.AppTeste/App.config @@ -1,6 +1,6 @@ - + diff --git a/CTe.AppTeste/CTe.AppTeste.csproj b/CTe.AppTeste/CTe.AppTeste.csproj index 210acc612..e7087b778 100644 --- a/CTe.AppTeste/CTe.AppTeste.csproj +++ b/CTe.AppTeste/CTe.AppTeste.csproj @@ -9,7 +9,7 @@ Properties CTe.AppTeste CTe.AppTeste - v4.5 + v4.8 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4 @@ -103,9 +103,6 @@ - - Code - True True @@ -137,6 +134,14 @@ Designer Always + + Designer + Always + + + Designer + Always + Designer Always @@ -161,6 +166,10 @@ Designer Always + + Designer + Always + Designer Always @@ -169,6 +178,10 @@ Designer Always + + Designer + Always + Designer Always @@ -177,6 +190,10 @@ Designer Always + + Designer + Always + Designer Always @@ -185,6 +202,18 @@ Designer Always + + Designer + Always + + + Designer + Always + + + Designer + Always + Designer Always @@ -193,6 +222,10 @@ Designer Always + + Designer + Always + Designer Always @@ -201,6 +234,10 @@ Designer Always + + Designer + Always + Designer Always @@ -209,6 +246,10 @@ Designer Always + + Designer + Always + Designer Always @@ -217,10 +258,18 @@ Designer Always + + Designer + Always + Designer Always + + Designer + Always + Designer Always @@ -229,6 +278,10 @@ Designer Always + + Designer + Always + Designer Always @@ -237,10 +290,18 @@ Designer Always + + Designer + Always + Designer Always + + Designer + Always + Designer Always @@ -249,6 +310,10 @@ Designer Always + + Designer + Always + Designer Always @@ -257,6 +322,22 @@ Designer Always + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + Designer Always @@ -269,6 +350,18 @@ Designer Always + + Designer + Always + + + Designer + Always + + + Designer + Always + Designer Always @@ -277,6 +370,18 @@ Designer Always + + Designer + Always + + + Designer + Always + + + Designer + Always + Designer Always @@ -285,6 +390,70 @@ Designer Always + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + Designer Always @@ -293,6 +462,10 @@ Designer Always + + Designer + Always + Designer Always @@ -301,6 +474,10 @@ Designer Always + + Designer + Always + Designer Always @@ -309,14 +486,30 @@ Designer Always + + Designer + Always + Designer Always + + Designer + Always + + + Designer + Always + Designer Always + + Designer + Always + Designer Always @@ -325,6 +518,18 @@ Designer Always + + Designer + Always + + + Designer + Always + + + Designer + Always + Designer Always @@ -333,6 +538,10 @@ Designer Always + + Designer + Always + Designer Always @@ -341,14 +550,46 @@ Designer Always + + Designer + Always + + + Designer + Always + Designer Always + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + Designer Always + + Designer + Always + Designer Always @@ -357,6 +598,10 @@ Designer Always + + Designer + Always + Designer Always @@ -365,6 +610,18 @@ Designer Always + + Designer + Always + + + Designer + Always + + + Designer + Always + Designer Always @@ -373,10 +630,22 @@ Designer Always + + Designer + Always + Designer Always + + Designer + Always + + + Designer + Always + Designer Always @@ -393,6 +662,10 @@ Designer Always + + Designer + Always + Designer Always @@ -401,10 +674,42 @@ Designer Always + + Designer + Always + + + Designer + Always + Designer Always + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + Designer Always @@ -425,6 +730,18 @@ Designer Always + + Designer + Always + + + Designer + Always + + + Designer + Always + Designer Always @@ -433,6 +750,14 @@ Designer Always + + Designer + Always + + + Designer + Always + Designer Always @@ -457,6 +782,10 @@ Designer Always + + Designer + Always + Designer Always @@ -465,40 +794,40 @@ + + + False + Microsoft .NET Framework 4.5.2 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 + false + + - {c86e3921-f0b8-4bfe-9ef1-0e9084326b13} + {fc15197f-4f76-47d4-839e-0f442e1d47ce} CTe.Classes - {63227402-2B1E-4BC7-A6DF-362129923CF6} + {772ceb28-d73d-4d6f-9cb4-1fef4b96ff60} CTe.Servicos - {21a894ec-b79e-4936-bff3-abead2e5c44f} + {63c33fd7-81d5-4016-a8e9-656266e922b2} CTe.Utils - {9984ec15-18e1-4a87-b4db-18ac913dc4e8} + {a08ce194-9780-493d-a758-d5b3f44bd208} DFe.Classes - {B4E1A7A6-5D66-4326-8A8D-39338E6FC84C} + {97f3c222-fd10-488a-812b-e514c3a8863c} DFe.Utils - - - False - Microsoft .NET Framework 4.5.2 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 - false - - + + + + + Guia de Trasnsporte Eletrônica + + + diff --git a/CTe.AppTeste/schemas/GTVe_v4.00.xsd b/CTe.AppTeste/schemas/GTVe_v4.00.xsd new file mode 100644 index 000000000..66cd2adb3 --- /dev/null +++ b/CTe.AppTeste/schemas/GTVe_v4.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Guia de Trasnsporte Eletrônica + + + diff --git a/CTe.AppTeste/schemas/consNSUFaltCTe_v3.00.xsd b/CTe.AppTeste/schemas/consNSUFaltCTe_v3.00.xsd new file mode 100644 index 000000000..f952c98c6 --- /dev/null +++ b/CTe.AppTeste/schemas/consNSUFaltCTe_v3.00.xsd @@ -0,0 +1,9 @@ + + + + + + Schema XML de validação da área de dados da mensagem da consulta NSU Faltantes + + + diff --git a/CTe.AppTeste/schemas/consProtFaltCTe_v3.00.xsd b/CTe.AppTeste/schemas/consProtFaltCTe_v3.00.xsd new file mode 100644 index 000000000..cf77307e7 --- /dev/null +++ b/CTe.AppTeste/schemas/consProtFaltCTe_v3.00.xsd @@ -0,0 +1,9 @@ + + + + + + Pedido de consulta de Protocolos Faltantes de CT-e + + + diff --git a/CTe.AppTeste/schemas/consReciCTeTiposBasico_v3.00.xsd b/CTe.AppTeste/schemas/consReciCTeTiposBasico_v3.00.xsd index d6e285739..110b0c4e6 100644 --- a/CTe.AppTeste/schemas/consReciCTeTiposBasico_v3.00.xsd +++ b/CTe.AppTeste/schemas/consReciCTeTiposBasico_v3.00.xsd @@ -1,75 +1,9 @@ + - - - Tipo Protocolo de status resultado do processamento da CT-e - - - - - Dados do protocolo de status - - - - - - Identificação do Ambiente: -1 - Produção -2 - Homologação - - - - - Versão do Aplicativo que processou a NF-e - - - - - Chaves de acesso da CT-e, compostas por: UF do emitente, AAMM da emissão da NFe, CNPJ do emitente, modelo, subsérie e número da CT-e e código numérico+DV. - - - - - Data e hora de processamento, no formato AAAA-MM-DDTHH:MM:SS TZD. Deve ser preenchida com data e hora da gravação no Banco em caso de Confirmação. Em caso de Rejeição, com data e hora do recebimento do Lote de CT-e enviado. - - - - - Número do Protocolo de Status do CT-e. 1 posição tipo de autorizador (1 – Secretaria de Fazenda Estadual, 3 - SEFAZ Virtual RS, 5 - SEFAZ Virtual SP ); 2 posições ano; 10 seqüencial no ano. - - - - - Digest Value da CT-e processado. Utilizado para conferir a integridade do CT-e original. - - - - - Código do status do CT-e. - - - - - - - - Descrição literal do status do CT-e. - - - - - - - - - - - - - - + Tipo Pedido de Consulta do Recibo do Lote de CT-e diff --git a/CTe.AppTeste/schemas/consSitCTeTiposBasico_v3.00.xsd b/CTe.AppTeste/schemas/consSitCTeTiposBasico_v3.00.xsd index 8840a9d1c..1bbcc44e6 100644 --- a/CTe.AppTeste/schemas/consSitCTeTiposBasico_v3.00.xsd +++ b/CTe.AppTeste/schemas/consSitCTeTiposBasico_v3.00.xsd @@ -1,4 +1,5 @@ + @@ -63,50 +64,28 @@ código da UF de atendimento - - - - - - - Retornar protCTe da versão correspondente do CT-e autorizado - - - - - - - - - - - - - - - - - - - - - - Retornar retCancCTe da versão correspondente do cancelamento CT-e autorizado - - - - - - - - - - - - - - - + + + + + + Retornar protCTe da versão correspondente do CT-e autorizado + + + + + + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/consSitCTeTiposBasico_v4.00.xsd b/CTe.AppTeste/schemas/consSitCTeTiposBasico_v4.00.xsd new file mode 100644 index 000000000..27525a233 --- /dev/null +++ b/CTe.AppTeste/schemas/consSitCTeTiposBasico_v4.00.xsd @@ -0,0 +1,123 @@ + + + + + + + + Tipo Pedido de Consulta da Situação Atual do Conhecimento de Transporte eletrônico + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Serviço Solicitado + + + + + Chaves de acesso da CT-e + + + + + + + + + + + + Tipo Retorno de Pedido de Consulta da Situação Atual do Conhecimento de Transporte eletrônico + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Versão do Aplicativo que processou o CT-e + + + + + Código do status da mensagem enviada. + + + + + Descrição literal do status do serviço solicitado. + + + + + código da UF de atendimento + + + + + + + + Retornar protCTe da versão correspondente do CT-e autorizado + + + + + + + + + + + + + + + + + + + + + + + Retornar procEventoCTe da versão correspondente do evento CT-e autorizado + + + + + + + + + + + + + + + + + + + + + + Tipo Versão do Consulta situação de CT-e - 4.00 + + + + + + diff --git a/CTe.AppTeste/schemas/consSitCTe_v4.00.xsd b/CTe.AppTeste/schemas/consSitCTe_v4.00.xsd new file mode 100644 index 000000000..c9825f322 --- /dev/null +++ b/CTe.AppTeste/schemas/consSitCTe_v4.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Schema de validação XML dp Pedido de Consulta da Situação Atual do CT-e. + + + diff --git a/CTe.AppTeste/schemas/consStatServCTe_v4.00.xsd b/CTe.AppTeste/schemas/consStatServCTe_v4.00.xsd new file mode 100644 index 000000000..bc2ed3598 --- /dev/null +++ b/CTe.AppTeste/schemas/consStatServCTe_v4.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Schema XML de validação do Pedido de Consulta do Status do Serviço CT-e + + + diff --git a/CTe.AppTeste/schemas/consStatServTiposBasico_v4.00.xsd b/CTe.AppTeste/schemas/consStatServTiposBasico_v4.00.xsd new file mode 100644 index 000000000..a79fae2cc --- /dev/null +++ b/CTe.AppTeste/schemas/consStatServTiposBasico_v4.00.xsd @@ -0,0 +1,115 @@ + + + + + + + Tipo Pedido de Consulta do Status do Serviço CTe + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Código da UF a ser verificado o status + Utilizar a Tabela do IBGE. + + + + + Serviço Solicitado + + + + + + + + + + + + Tipo Resultado da Consulta do Status do Serviço CTe + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Versão do Aplicativo que processou o CT-e + + + + + + + + + + Código do status da mensagem enviada. + + + + + Descrição literal do status do serviço solicitado. + + + + + Código da UF responsável pelo serviço + + + + + AAAA-MM-DDTHH:MM:SS TZD + + + + + Tempo médio de resposta do serviço (em segundos) dos últimos 5 minutos + + + + + + + + + + AAAA-MM-DDTHH:MM:SSDeve ser preenchida com data e hora previstas para o retorno dos serviços prestados. + + + + + Campo observação utilizado para incluir informações ao contribuinte + + + + + + + + + + + + + + + Tipo Versão do Consulta do Status do Serviço CTe + + + + + + diff --git a/CTe.AppTeste/schemas/cteConsultaDFeTiposBasico_v1.00.xsd b/CTe.AppTeste/schemas/cteConsultaDFeTiposBasico_v1.00.xsd new file mode 100644 index 000000000..85935c021 --- /dev/null +++ b/CTe.AppTeste/schemas/cteConsultaDFeTiposBasico_v1.00.xsd @@ -0,0 +1,155 @@ + + + + + + + Tipo Pedido de Consulta do Conhecimento de Transporte eletrônico + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Serviço Solicitado + + + + + Chaves de acesso da CT-e, compostas por: UF do emitente, AAMM da emissão da CT-e, CNPJ do emitente, modelo, série e número da CT-e e código numérico + DV. + + + + + + + + + + + + Tipo Retorno de Pedido de Consulta do Conhecimento de Transporte eletrônico + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Versão do Aplicativo que processou a consulta do CT-e + + + + + Código do status da consulta do CT-e + + + + + Descrição literal do status da consulta do CT-e + + + + + + + + + Tipo Documento Fiscal Eletrônico CT-e + + + + + + + + Autorização de Uso do CT-e + + + + + + Versão do proc + + + + + + + + + + + + + + + + + + + + Solicitação de Cancelamento do CT-e + + + + + + Versão do procCancCTe + + + + + + + + + + + + + + + + + + Demais eventos vinculados ao CT-e + + + + + + Versão do procEventoCTe + + + + + + + + + + + + + + + + + + Tipo Versão do Consulta DFe de CT-e - 1.00 + + + + + + diff --git a/CTe.AppTeste/schemas/cteConsultaDFe_v1.00.xsd b/CTe.AppTeste/schemas/cteConsultaDFe_v1.00.xsd new file mode 100644 index 000000000..e859d3d3d --- /dev/null +++ b/CTe.AppTeste/schemas/cteConsultaDFe_v1.00.xsd @@ -0,0 +1,9 @@ + + + + + + Schema de validação XML do Pedido de Consulta do CT-e. + + + diff --git a/CTe.AppTeste/schemas/cteModalAereo_v3.00.xsd b/CTe.AppTeste/schemas/cteModalAereo_v3.00.xsd index e8297d5b8..f91e3beaa 100644 --- a/CTe.AppTeste/schemas/cteModalAereo_v3.00.xsd +++ b/CTe.AppTeste/schemas/cteModalAereo_v3.00.xsd @@ -1,4 +1,5 @@ + @@ -60,22 +61,37 @@ Informações de manuseio 01 - certificado do expedidor para embarque de animal vivo; + 02 - artigo perigoso conforme Declaração do Expedidor anexa; + 03 - somente em aeronave cargueira; + 04 - artigo perigoso - declaração do expedidor não requerida; + 05 - artigo perigoso em quantidade isenta; + 06 - gelo seco para refrigeração (especificar no campo observações a quantidade); -07 - não restrito (especificar a Disposição Especial no campo observações); + +07 - não restrito (especificar a Disposição Especial no campo observações); + 08 - artigo perigoso em carga consolidada (especificar a quantidade no campo observações) -; 09 - autorização da autoridade governamental anexa (especificar no campo observações); +; +09 - autorização da autoridade governamental anexa (especificar no campo observações); + 10 – baterias de íons de lítio em conformidade com a Seção II da PI965 – CAO -; 11 - baterias de íons de lítio em conformidade com a Seção II da PI966 -; 12 - baterias de íons de lítio em conformidade com a Seção II da PI967 -; 13 – baterias de metal lítio em conformidade com a Seção II da PI968 — CAO; +; +11 - baterias de íons de lítio em conformidade com a Seção II da PI966 +; +12 - baterias de íons de lítio em conformidade com a Seção II da PI967 +; +13 – baterias de metal lítio em conformidade com a Seção II da PI968 — CAO; + 14 - baterias de metal lítio em conformidade com a Seção II da PI969; + 15 - baterias de metal lítio em conformidade com a Seção II da PI970 -; 99 - outro (especificar no campo observações) - +; +99 - outro (especificar no campo observações) +. diff --git a/CTe.AppTeste/schemas/cteModalAereo_v4.00.xsd b/CTe.AppTeste/schemas/cteModalAereo_v4.00.xsd new file mode 100644 index 000000000..fbb254601 --- /dev/null +++ b/CTe.AppTeste/schemas/cteModalAereo_v4.00.xsd @@ -0,0 +1,240 @@ + + + + + + + Informações do modal Aéreo + + + + + + Número da Minuta + Documento que precede o CT-e, assinado pelo expedidor, espécie de pedido de serviço + + + + + + + + + + + Número Operacional do Conhecimento Aéreo + Representa o número de controle comumente utilizado pelo conhecimento aéreo composto por uma sequência numérica de onze dígitos. Os três primeiros dígitos representam um código que os operadores de transporte aéreo associados à IATA possuem. Em seguida um número de série de sete dígitos determinados pelo operador de transporte aéreo. Para finalizar, um dígito verificador, que é um sistema de módulo sete imponderado o qual divide o número de série do conhecimento aéreo por sete e usa o resto como dígito de verificação. + + + + + + + + + + + Data prevista da entrega + Formato AAAA-MM-DD + + + + + Natureza da carga + + + + + + Dimensão + Formato:1234X1234X1234 (cm). Esse campo deve sempre que possível ser preenchido. Entretanto, quando for impossível o preenchimento das dimensões, fica obrigatório o preenchimento da cubagem em metro cúbico do leiaute do CT-e da estrutura genérica (infQ). + + + + + + + + + + + + Informações de manuseio + 01 - certificado do expedidor para embarque de animal vivo; + +02 - artigo perigoso conforme Declaração do Expedidor anexa; + +03 - somente em aeronave cargueira; + +04 - artigo perigoso - declaração do expedidor não requerida; + +05 - artigo perigoso em quantidade isenta; + +06 - gelo seco para refrigeração (especificar no campo observações a quantidade); + +07 - não restrito (especificar a Disposição Especial no campo observações); + +08 - artigo perigoso em carga consolidada (especificar a quantidade no campo observações) +; +09 - autorização da autoridade governamental anexa (especificar no campo observações); + +10 – baterias de íons de lítio em conformidade com a Seção II da PI965 – CAO +; +11 - baterias de íons de lítio em conformidade com a Seção II da PI966 +; +12 - baterias de íons de lítio em conformidade com a Seção II da PI967 +; +13 – baterias de metal lítio em conformidade com a Seção II da PI968 — CAO; + +14 - baterias de metal lítio em conformidade com a Seção II da PI969; + +15 - baterias de metal lítio em conformidade com a Seção II da PI970 +; +99 - outro (especificar no campo observações) +. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Informações de tarifa + + + + + + Classe + Preencher com: + M - Tarifa Mínima; + G - Tarifa Geral; + E - Tarifa Específica + + + + + + + + + + + + + + Código da Tarifa + Deverão ser incluídos os códigos de três dígitos, correspondentes à tarifa. + + + + + + + + + + + Valor da Tarifa + Valor da tarifa por kg quando for o caso. + + + + + + + + Preenchido quando for transporte de produtos classificados pela ONU como perigosos. + O preenchimento desses campos não desobriga a empresa aérea de emitir os demais documentos que constam na legislação vigente. + + + + + + Número ONU/UN + Ver a legislação de transporte de produtos perigosos aplicadas ao modal + + + + + + + + + + + Quantidade total de volumes contendo artigos perigosos + Preencher com o número de volumes (unidades) de artigos perigosos, ou seja, cada embalagem devidamente marcada e etiquetada (por ex.: número de caixas, de tambores, de bombonas, dentre outros). Não deve ser preenchido com o número de ULD, pallets ou containers. + + + + + + + + + + + Grupo de informações das quantidades totais de artigos perigosos + Preencher conforme a legislação de transporte de produtos perigosos aplicada ao modal + + + + + + Quantidade total de artigos perigosos + 15 posições, sendo 11 inteiras e 4 decimais. +Deve indicar a quantidade total do artigo perigoso, tendo como base a unidade referenciada na Tabela 3-1 do Doc 9284, por exemplo: litros; quilogramas; quilograma bruto etc. O preenchimento não deve, entretanto, incluir a unidade de medida. No caso de transporte de material radioativo, deve-se indicar o somatório dos Índices de Transporte (TI). Não indicar a quantidade do artigo perigoso por embalagem. + + + + + Unidade de medida + 1 – KG; +2 – KG G (quilograma bruto); +3 – LITROS; +4 – TI (índice de transporte para radioativos); 5- Unidades (apenas para artigos perigosos medidos em unidades que não se enquadram nos itens acima. Exemplo: baterias, celulares, equipamentos, veículos, dentre outros) + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/cteModalAquaviario_v3.00.xsd b/CTe.AppTeste/schemas/cteModalAquaviario_v3.00.xsd index b18437a8c..a1de7d61f 100644 --- a/CTe.AppTeste/schemas/cteModalAquaviario_v3.00.xsd +++ b/CTe.AppTeste/schemas/cteModalAquaviario_v3.00.xsd @@ -1,4 +1,5 @@ + @@ -88,8 +89,8 @@ - Grupo de informações de detalhamento dos conteiners -(Somente para Redespacho Intermediario e serviço vinculado) + Grupo de informações de detalhamento dos conteiners +(Somente para Redespacho Intermediário e Serviço Vinculado a Multimodal) @@ -185,6 +186,21 @@ + + + Tipo de Navegação + Preencher com: + 0 - Interior; + 1 - Cabotagem + + + + + + + + + diff --git a/CTe.AppTeste/schemas/cteModalAquaviario_v4.00.xsd b/CTe.AppTeste/schemas/cteModalAquaviario_v4.00.xsd new file mode 100644 index 000000000..a4fe08399 --- /dev/null +++ b/CTe.AppTeste/schemas/cteModalAquaviario_v4.00.xsd @@ -0,0 +1,207 @@ + + + + + + + Informações do modal Aquaviário + + + + + + Valor da Prestação Base de Cálculo do AFRMM + + + + + AFRMM (Adicional de Frete para Renovação da Marinha Mercante) + + + + + Identificação do Navio + + + + + + + + + + + Grupo de informações das balsas + + + + + + Identificador da Balsa + + + + + + + + + + + + + + Número da Viagem + + + + + + + + + + + Direção + Preencher com: N-Norte, L-Leste, S-Sul, O-Oeste + + + + + + + + + + + + + + Irin do navio sempre deverá ser informado + + + + + + + + + + + + Grupo de informações de detalhamento dos conteiners +(Somente para Redespacho Intermediário e Serviço Vinculado a Multimodal) + + + + + + Identificação do Container + + + + + Grupo de informações dos lacres dos cointainers da qtde da carga + + + + + + Lacre + + + + + + + + + + + + + + Informações dos documentos dos conteiners + + + + + + Informações das NF + + + + + + Série + + + + + + + + + + + Número + + + + + + + + + + + Unidade de medida rateada (Peso,Volume) + + + + + + + + Informações das NFe + + + + + + Chave de acesso da NF-e + + + + + Unidade de medida rateada (Peso,Volume) + + + + + + + + + + + + + + Tipo de Navegação + Preencher com: + 0 - Interior; + 1 - Cabotagem + + + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/cteModalDutoviario_v4.00.xsd b/CTe.AppTeste/schemas/cteModalDutoviario_v4.00.xsd new file mode 100644 index 000000000..bc9c8940a --- /dev/null +++ b/CTe.AppTeste/schemas/cteModalDutoviario_v4.00.xsd @@ -0,0 +1,30 @@ + + + + + + + + Informações do modal Dutoviário + + + + + + Valor da tarifa + + + + + Data de Início da prestação do serviço + + + + + Data de Fim da prestação do serviço + + + + + + diff --git a/CTe.AppTeste/schemas/cteModalFerroviario_v4.00.xsd b/CTe.AppTeste/schemas/cteModalFerroviario_v4.00.xsd new file mode 100644 index 000000000..2a789ac65 --- /dev/null +++ b/CTe.AppTeste/schemas/cteModalFerroviario_v4.00.xsd @@ -0,0 +1,231 @@ + + + + + + + + Tipo Dados do Endereço + + + + + Logradouro + + + + + + + + + + + Número + + + + + + + + + + + Complemento + + + + + + + + + + + Bairro + + + + + + + + + + + Código do município + Utilizar a tabela do IBGE + Informar 9999999 para operações com o exterior. + + + + + Nome do município + Informar EXTERIOR para operações com o exterior. + + + + + + + + + + + CEP + + + + + + + + + + + Sigla da UF + Informar EX para operações com o exterior. + + + + + + + Informações do modal Ferroviário + + + + + + Tipo de Tráfego + Preencher com: + 0-Próprio; + 1-Mútuo; + 2-Rodoferroviário; + 3-Rodoviário. + + + + + + + + + + + + + + Detalhamento de informações para o tráfego mútuo + + + + + + Responsável pelo Faturamento + Preencher com: + 1-Ferrovia de origem; + 2-Ferrovia de destino + + + + + + + + + + + + Ferrovia Emitente do CTe + Preencher com: + 1-Ferrovia de origem; + 2-Ferrovia de destino + + + + + + + + + + + + Valor do Frete do Tráfego Mútuo + + + + + Chave de acesso do CT-e emitido pelo ferrovia de origem + + + + + Informações das Ferrovias Envolvidas + + + + + + Número do CNPJ + Informar o CNPJ da Ferrovia Envolvida. Caso a Ferrovia envolvida não seja inscrita no CNPJ o campo deverá preenchido com zeros. +Informar os zeros não significativos. + + + + + Código interno da Ferrovia envolvida + Uso da transportadora + + + + + + + + + + + Inscrição Estadual + + + + + Razão Social ou Nome + + + + + + + + + + + Dados do endereço da ferrovia envolvida + + + + + + + + + + + Fluxo Ferroviário + Trata-se de um número identificador do contrato firmado com o cliente + + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/cteModalRodoviarioOS_v3.00.xsd b/CTe.AppTeste/schemas/cteModalRodoviarioOS_v3.00.xsd index 47dbba17c..bfbe38e51 100644 --- a/CTe.AppTeste/schemas/cteModalRodoviarioOS_v3.00.xsd +++ b/CTe.AppTeste/schemas/cteModalRodoviarioOS_v3.00.xsd @@ -1,4 +1,5 @@ + @@ -32,14 +33,13 @@ Termo de Autorização de Fretamento – TAF - de acordo com a Resolução ANTT nº 4.777/2015 + Registro obrigatório do emitente do CT-e OS junto à ANTT, de acordo com a Resolução ANTT nº 4.777/2015 Número do Registro Estadual - Registro obrigatório do emitente do CT-e junto à ANTT para exercer a atividade de transportador rodoviário de cargas por conta de terceiros e mediante remuneração. - + Registro obrigatório do emitente do CT-e OS junto à Agência Reguladora Estadual. @@ -70,7 +70,7 @@ - Proprietários do Veículo. + Proprietário ou possuidor do Veículo. Só preenchido quando o veículo não pertencer à empresa emitente do CT-e OS @@ -99,8 +99,7 @@ Só preenchido quando o veículo não pertencer à empresa emitente do CT-e OS Número do Registro Estadual - Registro obrigatório do emitente do CT-e junto à ANTT para exercer a atividade de transportador rodoviário de cargas por conta de terceiros e mediante remuneração. - + Registro obrigatório do emitente do CT-e OS junto à Agência Reguladora Estadual @@ -132,7 +131,7 @@ Só preenchido quando o veículo não pertencer à empresa emitente do CT-e OS - Tipo Proprietário + Tipo Proprietário ou possuidor Preencher com: 0-TAC – Agregado; 1-TAC Independente; ou @@ -150,7 +149,7 @@ Só preenchido quando o veículo não pertencer à empresa emitente do CT-e OS - + UF em que veículo está licenciado Sigla da UF de licenciamento do veículo. @@ -159,6 +158,35 @@ Só preenchido quando o veículo não pertencer à empresa emitente do CT-e OS + + + Dados do fretamento (apenas para Transporte de Pessoas) + + + + + + Tipo Fretamento + Preencher com: + 1 - Eventual 2 - Continuo + + + + + + + + + + + + Data e hora da viagem (Apenas para fretamento eventual) + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + diff --git a/CTe.AppTeste/schemas/cteModalRodoviarioOS_v4.00.xsd b/CTe.AppTeste/schemas/cteModalRodoviarioOS_v4.00.xsd new file mode 100644 index 000000000..23bcb62a6 --- /dev/null +++ b/CTe.AppTeste/schemas/cteModalRodoviarioOS_v4.00.xsd @@ -0,0 +1,193 @@ + + + + + + + + Tipo Termo de Autorização de Fretamento – TAF + + + + + + + + + + Tipo Número de Registro Estadual + + + + + + + + + + Informações do modal Rodoviário + + + + + + + Termo de Autorização de Fretamento – TAF + Registro obrigatório do emitente do CT-e OS junto à ANTT, de acordo com a Resolução ANTT nº 4.777/2015 + + + + + Número do Registro Estadual + Registro obrigatório do emitente do CT-e OS junto à Agência Reguladora Estadual. + + + + + + Dados do Veículo + + + + + + Placa do veículo + + + + + + + + RENAVAM do veículo + + + + + + + + + + + Proprietário ou possuidor do Veículo. +Só preenchido quando o veículo não pertencer à empresa emitente do CT-e OS + + + + + + + Número do CPF + Informar os zeros não significativos. + + + + + Número do CNPJ + Informar os zeros não significativos. + + + + + + + Termo de Autorização de Fretamento – TAF + De acordo com a Resolução ANTT nº 4.777/2015 + + + + + Número do Registro Estadual + Registro obrigatório do emitente do CT-e OS junto à Agência Reguladora Estadual + + + + + + Razão Social ou Nome do proprietário + + + + + + + + + + + + Inscrição Estadual + + + + + + + + UF + + + + + + Tipo Proprietário ou possuidor + Preencher com: + 0-TAC – Agregado; + 1-TAC Independente; ou + 2 – Outros. + + + + + + + + + + + + + + + + UF em que veículo está licenciado + Sigla da UF de licenciamento do veículo. + + + + + + + + Dados do fretamento (apenas para Transporte de Pessoas) + + + + + + Tipo Fretamento + Preencher com: + 1 - Eventual 2 - Continuo + + + + + + + + + + + + Data e hora da viagem (Apenas para fretamento eventual) + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + + diff --git a/CTe.AppTeste/schemas/cteModalRodoviario_v4.00.xsd b/CTe.AppTeste/schemas/cteModalRodoviario_v4.00.xsd new file mode 100644 index 000000000..210232290 --- /dev/null +++ b/CTe.AppTeste/schemas/cteModalRodoviario_v4.00.xsd @@ -0,0 +1,102 @@ + + + + + + + + Informações do modal Rodoviário + + + + + + Registro Nacional de Transportadores Rodoviários de Carga + Registro obrigatório do emitente do CT-e junto à ANTT para exercer a atividade de transportador rodoviário de cargas por conta de terceiros e mediante remuneração. + + + + + + + + + Ordens de Coleta associados + + + + + + Série da OCC + + + + + + + + + + + Número da Ordem de coleta + + + + + + + + + + + Data de emissão da ordem de coleta + Formato AAAA-MM-DD + + + + + + + + Número do CNPJ + Informar os zeros não significativos. + + + + + Código interno de uso da transportadora + Uso intermo das transportadoras. + + + + + + + + + + + Inscrição Estadual + + + + + Sigla da UF + Informar EX para operações com o exterior. + + + + + Telefone + + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/cteMultiModal_v4.00.xsd b/CTe.AppTeste/schemas/cteMultiModal_v4.00.xsd new file mode 100644 index 000000000..05dc7949f --- /dev/null +++ b/CTe.AppTeste/schemas/cteMultiModal_v4.00.xsd @@ -0,0 +1,100 @@ + + + + + + + + Informações do Multimodal + + + + + + Número do Certificado do Operador de Transporte Multimodal + + + + + + + + + + + + + Indicador Negociável +Preencher com: 0 - Não Negociável; 1 - Negociável + + + + + + + + + + + + Informações de Seguro do Multimodal + + + + + + Informações da seguradora + + + + + + Nome da Seguradora + + + + + + + + + + + Número do CNPJ da seguradora + Obrigatório apenas se responsável pelo seguro for (2) responsável pela contratação do transporte - pessoa jurídica + + + + + + + + Número da Apólice + Obrigatório pela lei 11.442/07 (RCTRC) + + + + + + + + + + + Número da Averbação + Não é obrigatório, pois muitas averbações ocorrem aapós a emissão do CT, mensalmente, por exemplo. + + + + + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/cteOS_v4.00.xsd b/CTe.AppTeste/schemas/cteOS_v4.00.xsd new file mode 100644 index 000000000..9ac66b268 --- /dev/null +++ b/CTe.AppTeste/schemas/cteOS_v4.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Conhecimento de Transporte Eletrônico Outros Serviços + + + diff --git a/CTe.AppTeste/schemas/cteTiposBasico_v3.00.xsd b/CTe.AppTeste/schemas/cteTiposBasico_v3.00.xsd index 8818962df..014573d76 100644 --- a/CTe.AppTeste/schemas/cteTiposBasico_v3.00.xsd +++ b/CTe.AppTeste/schemas/cteTiposBasico_v3.00.xsd @@ -1,10 +1,1109 @@ + + + + Tipo Modal transporte GTVe + + + + + + + + + + Tipo Finalidade da GTV-e + + + + + + + + + Tipo Guia de Transporte de Valores Eletrônica (Modelo 64) + + + + + Informações do CT-e do tipo GTV-e + + + + + + Identificação da GTV-e + + + + + + Código da UF do emitente da GTV-e. + Utilizar a Tabela do IBGE. + + + + + Código numérico que compõe a Chave de Acesso. + Número aleatório gerado pelo emitente para cada CT-e, com o objetivo de evitar acessos indevidos ao documento. + + + + + + + + + + + Código Fiscal de Operações e Prestações + + + + + Natureza da Operação + + + + + + + + + + + Modelo do documento fiscal + Utilizar o código 64 para identificação do CT-e Guia de Transporte de Valores + + + + + Série da GTV-e + Preencher com "0" no caso de série única + + + + + + + + Número da GTV-e + + + + + Data e hora de emissão da GTV-e + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + Formato de impressão do DACTE + Preencher com: 1 - Retrato; 2 - Paisagem. + + + + + + + + + + + + Forma de emissão da GTV-e + Preencher com: +1 - Normal; + 2- Contingencia offline +7 - Autorização pela SVC-RS; + 8 - Autorização pela SVC-SP + + + + + + + + + + + + + + Digito Verificador da chave de acesso da GTV-e + Informar o dígito de controle da chave de acesso do CT-e, que deve ser calculado com a aplicação do algoritmo módulo 11 (base 2,9) da chave de acesso. + + + + + + + + + + + Tipo do Ambiente + Preencher com:1 - Produção; 2 - Homologação + + + + + Tipo da GTV-e + Preencher com: + 4 - GTV-e + + + + + + + + Versão do processo de emissão + Iinformar a versão do aplicativo emissor de CT-e. + + + + + + + + + + + Código do Município de envio da GTV-e (de onde o documento foi transmitido) + Utilizar a tabela do IBGE. Informar 9999999 para as operações com o exterior. + + + + + Nome do Município de envio da GTV-e (de onde o documento foi transmitido) + Informar PAIS/Municipio para as operações com o exterior. + + + + + + + + + + + Sigla da UF de envio da GTV-e (de onde o documento foi transmitido) + Informar 'EX' para operações com o exterior. + + + + + Modal da GTV-e + Preencher com: +01-Rodoviário +06-Multimodal + + + + + + + + + + + Tipo do Serviço + Preencher com: + +9 - GTV + + + + + + + + + + + Indicador da IE do tomador: +1 – Contribuinte ICMS; +2 – Contribuinte isento de inscrição; +9 – Não Contribuinte + Aplica-se ao tomador que for indicado no toma3 ou toma4 + + + + + + + + + + + + + Data e hora de saida da origem + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + Data e hora de chegada no destino + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + + Indicador do "papel" do tomador do serviço no GT-e + + + + + + Tomador do Serviço + Preencher com: + 0-Remetente; + 1-Destinatário + + + + + + + + + + + + + + + + Indicador do "papel" do tomador do serviço no CTV-e + + + + + + Tomador do Serviço + Preencher com: + 4 - Outros + Obs: Informar os dados cadastrais do tomador do serviço + + + + + + + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. +Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + Inscrição Estadual + Informar a IE do tomador ou ISENTO se tomador é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o tomador não seja contribuinte do ICMS não informar o conteúdo. + + + + + + + + Razão Social ou Nome + + + + + + + + + + + Nome Fantasia + + + + + + + + + + + Telefone + + + + + Dados do endereço + + + + + Endereço de email + + + + + + + + + Informar apenas +para tpEmis diferente de 1 + + + + Data e Hora da entrada em contingência + Informar a data e hora no formato AAAA-MM-DDTHH:MM:SS + + + + + Justificativa da entrada em contingência + + + + + + + + + + + + + + + Dados complementares da GTV-e para fins operacionais ou comerciais + + + + + + Característica adicional do transporte + Texto livre: +REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc + + + + + + + + + + + Característica adicional do serviço + Texto livre: + ENTREGA EXPRESSA; LOGÍSTICA REVERSA; CONVENCIONAL; EMERGENCIAL; etc + + + + + + + + + + + Funcionário emissor da GTV-e + + + + + + + + + + + Observações Gerais + + + + + + + + + + + Campo de uso livre do contribuinte + Informar o nome do campo no atributo xCampo e o conteúdo do campo no XTexto + + + + + + Conteúdo do campo + + + + + + + + + + + + Identificação do campo + + + + + + + + + + + + + Campo de uso livre do contribuinte + Informar o nome do campo no atributo xCampo e o conteúdo do campo no XTexto + + + + + + Conteúdo do campo + + + + + + + + + + + + Identificação do campo + + + + + + + + + + + + + + + + Identificação do Emitente da GTV-e + + + + + + CNPJ do emitente + Informar zeros não significativos + + + + + Inscrição Estadual do Emitente + + + + + + + + Inscrição Estadual do Substituto Tributário + + + + + + + + Razão social ou Nome do emitente + + + + + + + + + + + Nome fantasia + + + + + + + + + + + Endereço do emitente + + + + + + + + Informações do Remetente + Poderá não ser informado para os CT-e de redespacho intermediário e serviço vinculado a multimodal. Nos demais casos deverá sempre ser informado. + + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. + Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + Inscrição Estadual + Informar a IE do remetente ou ISENTO se remetente é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o remetente não seja contribuinte do ICMS não informar a tag. + + + + + + + + Razão social ou nome do remetente + + + + + + + + + + + Nome fantasia + + + + + + + + + + + Telefone + + + + + Dados do endereço + + + + + Endereço de email + + + + + + + + + + + Informações do Destinatário + Poderá não ser informado para os CT-e de redespacho intermediário e serviço vinculado a multimodal. Nos demais casos deverá sempre ser informado. + + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. + Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + Inscrição Estadual + Informar a IE do destinatário ou ISENTO se destinatário é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o destinatário não seja contribuinte do ICMS não informar o conteúdo. + + + + + + + + Razão Social ou Nome do destinatário + + + + + + + + + + + Telefone + + + + + Inscrição na SUFRAMA + (Obrigatório nas operações com as áreas com benefícios de incentivos fiscais sob controle da SUFRAMA) + + + + + + + + + + + Dados do endereço + + + + + Endereço de email + + + + + + + + Informações do endereço da origem do serviço + + + + + Informações do endereço do destino do serviço + + + + + Grupo de informações detalhadas da GTV-e + + + + + + Informações das Espécies transportadas + + + + + + Tipo da Espécie + 1 - Cédula +2 - Cheque +3 - Moeda +4 - Outros + + + + + + + + + + + + + + Valor Transportada em Espécie indicada + + + + + Nacionalidade do Numerário + 1 - Nacional +2 - Estrangeiro + + + + + + + + + + + + Nome da Moeda + Informar somente se tipo de numerário for 2 - Estrangeiro + + + + + + + + + + + + + + Quantidade de volumes/malotes + + + + + Grupo de informações dos veículos utilizados no transporte de valores + + + + + + Placa do veículo + + + + + UF em que veículo está licenciado + Sigla da UF de licenciamento do veículo. + + + + + RNTRC do transportador + + + + + + + + + + + + + + + + + Autorizados para download do XML do DF-e + Informar CNPJ ou CPF. Preencher os zeros não significativos. + + + + + + + CNPJ do autorizado + Informar zeros não significativos + + + + + CPF do autorizado + Informar zeros não significativos + + + + + + + + + Informações do Responsável Técnico pela emissão do DF-e + + + + + + Versão do leiaute + Ex: "3.00" + + + + + + + + Identificador da tag a ser assinada + Informar a chave de acesso do CT-e OS e precedida do literal "CTe" + + + + + + + + + + + + Informações suplementares da GTV-e + + + + + + Texto com o QR-Code impresso no DACTE + + + + + + + + + + + + + + + + + + Versão do leiaute + + + + + + + + + Tipo Protocolo de status resultado do processamento da CT-e + + + + + Dados do protocolo de status + + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Versão do Aplicativo que processou o CT-e + + + + + Chaves de acesso da CT-e, + + + + + Data e hora de processamento, no formato AAAA-MM-DDTHH:MM:SS TZD. + + + + + Número do Protocolo de Status do CT-e. + + + + + Digest Value da CT-e processado. Utilizado para conferir a integridade do CT-e original. + + + + + Código do status do CT-e. + + + + + + + + Descrição literal do status do CT-e. + + + + + + + + + Mensagem do Fisco + + + + + + Código do status da mensagem do fisco + + + + + + + + Mensagem do Fisco + + + + + + + + + + + + + - Tipo Protocolo de status resultado do processamento do CT-e OS (Modelo 67) + Tipo Protocolo de status resultado do processamento do CT-e OS (Modelo 67) + + + + + Dados do protocolo de status + + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Versão do Aplicativo que processou o CT-e + + + + + Chaves de acesso da CT-e + + + + + Data e hora de processamento, no formato AAAA-MM-DDTHH:MM:SS TZD. + + + + + Número do Protocolo de Status do CT-e. + + + + + Digest Value da CT-e processado. Utilizado para conferir a integridade do CT-e original. + + + + + Código do status do CT-e. + + + + + + + + Descrição literal do status do CT-e. + + + + + + + + + Mensagem do Fisco + + + + + + Código do status da mensagem do fisco + + + + + + + + Mensagem do Fisco + + + + + + + + + + + + + + + + Tipo Protocolo de status resultado do processamento da GTV-e (Modelo 64) @@ -22,32 +1121,32 @@ - Versão do Aplicativo que processou a NF-e + Versão do Aplicativo que processou a GTV-e - Chaves de acesso da CT-e, compostas por: UF do emitente, AAMM da emissão da NFe, CNPJ do emitente, modelo, subsérie e número da CT-e e código numérico+DV. + Chaves de acesso da CT-e - Data e hora de processamento, no formato AAAA-MM-DDTHH:MM:SS TZD. Deve ser preenchida com data e hora da gravação no Banco em caso de Confirmação. Em caso de Rejeição, com data e hora do recebimento do Lote de CT-e enviado. + Data e hora de processamento, no formato AAAA-MM-DDTHH:MM:SS TZD. - Número do Protocolo de Status do CT-e. 1 posição tipo de autorizador (1 – Secretaria de Fazenda Estadual, 3 - SEFAZ Virtual RS, 5 - SEFAZ Virtual SP ); 2 posições ano; 10 seqüencial no ano. + Número do Protocolo de Status da GTV-e - Digest Value da CT-e processado. Utilizado para conferir a integridade do CT-e original. + Digest Value da GTV-e processado. Utilizado para conferir a integridade da GTV-e original. - Código do status do CT-e. + Código do status da GTV-e. @@ -55,13 +1154,35 @@ - Descrição literal do status do CT-e. + Descrição literal do status da GTV-e. + + + Mensagem do Fisco + + + + + + Código do status da mensagem do fisco + + + + + + + + Mensagem do Fisco + + + + + @@ -70,6 +1191,86 @@ + + + Tipo Retorno do Pedido de Autorização de CT-e (Modelo 57) + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Identificação da UF + + + + + Versão do Aplicativo que processou a CT-e + + + + + código do status do retorno da consulta. + + + + + Descrição literal do status do do retorno da consulta. + + + + + Reposta ao processamento do CT-e + + + + + + + + Tipo Retorno do Pedido de Autorização de GTV-e (Modelo 64) + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Identificação da UF + + + + + Versão do Aplicativo que processou a GTV-e + + + + + código do status do retorno da consulta. + + + + + Descrição literal do status do do retorno da consulta. + + + + + Reposta ao processamento do CT-e + + + + + Tipo Retorno do Pedido de Autorização de CT-e OS (Modelo 67) @@ -208,14 +1409,15 @@ Forma de emissão do CT-e Preencher com: 1 - Normal; - 4-EPEC pela SVC; 5 - Contingência FSDA; + 3-Regime Especial NFF; 4-EPEC pela SVC; 5 - Contingência FSDA; 7 - Autorização pela SVC-RS; - 8 - Autorização pela SVC-SP + 8 - Autorização pela SVC-SP + @@ -238,7 +1440,7 @@ Tipo do Ambiente - Preencher com:1 - Produção; 2 - Homologação + Preencher com:1 - Produção; 2 - Homologação. @@ -247,7 +1449,7 @@ Preencher com: 0 - CT-e Normal; 1 - CT-e de Complemento de Valores; 2 - CT-e de Anulação; - 3 - CT-e Substituto + 3 - CT-e de Substituição @@ -255,7 +1457,7 @@ Identificador do processo de emissão do CT-e Preencher com: 0 - emissão de CT-e com aplicativo do contribuinte; - 3- emissão CT-e pelo contribuinte com aplicativo fornecido pelo Fisco. + 3- emissão CT-e pelo contribuinte com aplicativo fornecido pelo SEBRAE. @@ -800,9 +2002,9 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc Tipo de hora Preencher com: - 1--No horário; - 2-Até o horário; - 3-A partir do horário + 1 - No horário; + 2 - Até o horário; + 3 - A partir do horário. @@ -965,15 +2167,26 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc - - - CNPJ do emitente - Informar zeros não significativos - - - + + + + CNPJ do emitente + Informar zeros não significativos + + + + + CPF do emitente + Informar zeros não significativos. + +Usar com série específica 920-969 para emitente pessoa física com inscrição estadual + + + + Inscrição Estadual do Emitente + A IE do emitente somente ficará sem informação para o caso do Regime Especial da NFF (tpEmis=3) @@ -1014,6 +2227,15 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc Endereço do emitente + + + Código do Regime Tributário + Informar: 1=Simples Nacional; +2=Simples Nacional, excesso sublimite de receita bruta; +3=Regime Normal. + + + @@ -1212,7 +2434,7 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc Informações do Destinatário do CT-e - Só pode ser omitido em caso de redespacho intermediário + Poderá não ser informado para os CT-e de redespacho intermediário e serviço vinculado a multimodal. Nos demais casos deverá sempre ser informado. @@ -1387,16 +2609,6 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc - - - Percentual provisório de partilha entre os estados - Percentual de partilha para a UF do destinatário: -- 40% em 2016; -- 60% em 2017; -- 80% em 2018; -- 100% a partir de 2019. - - Valor do ICMS relativo ao Fundo de Combate á Pobreza (FCP) da UF de término da prestação @@ -1529,7 +2741,7 @@ PESO BRUTO, PESO DECLARADO, PESO CUBADO, PESO AFORADO, PESO AFERIDO, PESO BASE D Informações dos documentos transportados pelo CT-e Opcional para Redespacho Intermediario e Serviço vinculado a multimodal. - Poderá não ser informado para os CT-e de redespacho intermediário. Nos demais casos deverá sempre ser informado. + Poderá não ser informado para os CT-e de redespacho intermediário e serviço vinculado a multimodal. Nos demais casos deverá sempre ser informado. @@ -2239,7 +3451,6 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo, Indicador de CT-e Alteração de Tomador - Tag com efeito e utilização aguardando legislação, não utilizar antes de NT específica tratar desse procedimento @@ -2359,6 +3570,32 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo, + + + Informações do Responsável Técnico pela emissão do DF-e + + + + + Grupo de informações do pedido de emissão da Nota Fiscal Fácil + + + + + + Solicitação do pedido de emissão da NFF. + Será preenchido com a totalidade de campos informados no aplicativo emissor serializado. + + + + + + + + + + + @@ -2382,6 +3619,28 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo, + + + Informações suplementares do CT-e + + + + + + Texto com o QR-Code impresso no DACTE + + + + + + + + + + + + + @@ -2483,7 +3742,7 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo, Forma de emissão do CT-e Preencher com: 1 - Normal; -5 - Contingência FSDA; + 5 - Contingência FSDA; 7 - Autorização pela SVC-RS; 8 - Autorização pela SVC-SP @@ -2519,7 +3778,10 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo, Tipo do CT-e OS Preencher com: - 0 - CT-e Normal; 1 - CT-e Complementar; 2 - Anulação; 3 - Substituição +0 - CT-e Normal; +1 - CT-e Complementar; +2 - CT-e de Anulação; +3 - CT-e de Substituição. @@ -2569,14 +3831,21 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo, Modal do CT-e OS - Preencher com:01-Rodoviário + Preencher com: +01-Rodoviário; +02- Aéreo; +03 - Aquaviário; +04 - Ferroviário. Tipo do Serviço Preencher com: -6 - Transporte de Pessoas;7 - Transporte de Valores;8 - Excesso de Bagagem + +6 - Transporte de Pessoas; +7 - Transporte de Valores; +8 - Excesso de Bagagem. @@ -2869,6 +4138,15 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc Endereço do emitente + + + Código do Regime Tributário + Informar: 1=Simples Nacional; +2=Simples Nacional, excesso sublimite de receita bruta; +3=Regime Normal. + + + @@ -2897,7 +4175,7 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc Inscrição Estadual - Informar a IE do remetente ou ISENTO se remetente é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o remetente não seja contribuinte do ICMS não informar o conteúdo. + Informar a IE do tomador ou ISENTO se tomador é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o tomador não seja contribuinte do ICMS não informar o conteúdo. @@ -3052,16 +4330,6 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc - - - Percentual provisório de partilha entre os estados - Percentual de partilha para a UF do destinatário: -- 40% em 2016; -- 60% em 2017; -- 80% em 2018; -- 100% a partir de 2019. - - Valor do ICMS relativo ao Fundo de Combate á Pobreza (FCP) da UF de término da prestação @@ -3145,7 +4413,7 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc Informações de quantidades da Carga do CT-e - Para Transporte de Pessoas indicar núimero de passageiros, para excesso de bagagem e transporte de valores indicar Nro de Volumes/Malotes + Para Transporte de Pessoas indicar número de passageiros, para excesso de bagagem e transporte de valores indicar número de Volumes/Malotes @@ -3165,52 +4433,62 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc Informações dos documentos referenciados - - - - Número - - - - - - - - - - - Série - - - - - - - - - + + + + + Número + + + + + + + + + + + Série + + + + + + + + + + + Subsérie + + + + + + + + + + + Data de Emissão + Formato AAAA-MM-DD + + + + + Valor Transportado + + + + - Subsérie + Chave de acesso do BP-e que possui eventos excesso de bagagem - - - - + - - - Data de Emissão - Formato AAAA-MM-DD - - - - - Valor Transportado - - - + @@ -3223,7 +4501,9 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc Responsável pelo seguro Preencher com: - 4 - Emitente do CT-e; + +4 - Emitente do CT-e; + 5 - Tomador de Serviço. @@ -3402,6 +4682,156 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo, + + + Chave de acesso do CT-e Cancelado +Somente para Transporte de Valores + + + + + + + + Dados da cobrança do CT-e + + + + + + Dados da fatura + + + + + + Número da fatura + + + + + + + + + + + Valor original da fatura + + + + + Valor do desconto da fatura + + + + + Valor líquido da fatura + + + + + + + + Dados das duplicatas + + + + + + Número da duplicata + + + + + + + + + + + Data de vencimento da duplicata (AAAA-MM-DD) + + + + + Valor da duplicata + + + + + + + + + + + Informações das GTV-e relacionadas ao CT-e OS + + + + + + Chave de acesso da GTV-e + + + + + + + + + + Componentes do Valor da GTVe + + + + + + Tipo do Componente + 1-Custodia +2-Embarque +3-Tempo de espera +4-Malote +5-Ad Valorem +6-Outros + + + + + + + + + + + + + + + + Valor do componente + + + + + Nome do componente (informar apenas para outros) + Exemplos: FRETE PESO, FRETE VALOR, SEC/CAT, ADEME, AGENDAMENTO, etc + + + + + + + + + + + + + + @@ -3468,6 +4898,11 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo, + + + Informações do Responsável Técnico pela emissão do DF-e + + @@ -3481,7 +4916,7 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo, Identificador da tag a ser assinada - Informar a chave de acesso do CT-e e precedida do literal "CTe" + Informar a chave de acesso do CT-e OS e precedida do literal "CTe" @@ -3491,6 +4926,28 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo, + + + Informações suplementares do CT-e + + + + + + Texto com o QR-Code impresso no DACTE + + + + + + + + + + + + + @@ -4410,6 +5867,47 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo, + + + Prestação sujeito à tributação com redução de BC do ICMS + + + + + + Classificação Tributária do serviço + 20 - tributação com BC reduzida do ICMS + + + + + + + + + + + Percentual de redução da BC + + + + + Valor da BC do ICMS + + + + + Alíquota do ICMS + + + + + Valor do ICMS + + + + + ICMS Isento, não Tributado ou diferido @@ -4662,6 +6160,74 @@ Por exemplo: para rodoviário tração ou reboque deverá preencher com a placa + + + Tipo Dados da Responsável Técnico + + + + + CNPJ da pessoa jurídica responsável técnica pelo sistema utilizado na emissão do documento fiscal eletrônico + Informar o CNPJ da pessoa jurídica desenvolvedora do sistema utilizado na emissão do documento fiscal eletrônico. + + + + + Nome da pessoa a ser contatada + Informar o nome da pessoa a ser contatada na empresa desenvolvedora do sistema utilizado na emissão do documento fiscal eletrônico. No caso de pessoa física, informar o respectivo nome. + + + + + + + + + + + Email da pessoa jurídica a ser contatada + + + + + Telefone da pessoa jurídica a ser contatada + Preencher com o Código DDD + número do telefone. + + + + + + + + + + + + Identificador do código de segurança do responsável técnico + Identificador do CSRT utilizado para geração do hash + + + + + + + + + + Hash do token do código de segurança do responsável técnico + O hashCSRT é o resultado das funções SHA-1 e base64 do token CSRT fornecido pelo fisco + chave de acesso do DF-e. (Implementação em futura NT) + +Observação: 28 caracteres são representados no schema como 20 bytes do tipo base64Binary + + + + + + + + + + Tipo CFOP @@ -5012,22 +6578,26 @@ Por exemplo: para rodoviário tração ou reboque deverá preencher com a placa - + - Tipo Placa + Tipo CIOT - Código Identificador da Operação de Transporte - + - + - Tipo CIOT - Código Identificador da Operação de Transporte + Tipo Código Regime Tributário - + + + + + diff --git a/CTe.AppTeste/schemas/cteTiposBasico_v4.00.xsd b/CTe.AppTeste/schemas/cteTiposBasico_v4.00.xsd new file mode 100644 index 000000000..3cf5e8845 --- /dev/null +++ b/CTe.AppTeste/schemas/cteTiposBasico_v4.00.xsd @@ -0,0 +1,6361 @@ + + + + + + + + Tipo Modal transporte GTVe + + + + + + + + + + Tipo Finalidade da GTV-e + + + + + + + + + Tipo Guia de Transporte de Valores Eletrônica (Modelo 64) + + + + + Informações do CT-e do tipo GTV-e + + + + + + Identificação da GTV-e + + + + + + Código da UF do emitente da GTV-e. + Utilizar a Tabela do IBGE. + + + + + Código numérico que compõe a Chave de Acesso. + Número aleatório gerado pelo emitente para cada CT-e, com o objetivo de evitar acessos indevidos ao documento. + + + + + + + + + + + Código Fiscal de Operações e Prestações + + + + + Natureza da Operação + + + + + + + + + + + Modelo do documento fiscal + Utilizar o código 64 para identificação do CT-e Guia de Transporte de Valores + + + + + Série da GTV-e + Preencher com "0" no caso de série única + + + + + + + + Número da GTV-e + + + + + Data e hora de emissão da GTV-e + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + Formato de impressão do DACTE + Preencher com: 1 - Retrato; 2 - Paisagem. + + + + + + + + + + + + Forma de emissão da GTV-e + Preencher com: +1 - Normal; + 2- Contingencia offline +7 - Autorização pela SVC-RS; + 8 - Autorização pela SVC-SP + + + + + + + + + + + + + + Digito Verificador da chave de acesso da GTV-e + Informar o dígito de controle da chave de acesso do CT-e, que deve ser calculado com a aplicação do algoritmo módulo 11 (base 2,9) da chave de acesso. + + + + + + + + + + + Tipo do Ambiente + Preencher com:1 - Produção; 2 - Homologação + + + + + Tipo da GTV-e + Preencher com: + 4 - GTV-e + + + + + + + + Versão do processo de emissão + Iinformar a versão do aplicativo emissor de CT-e. + + + + + + + + + + + Código do Município de envio da GTV-e (de onde o documento foi transmitido) + Utilizar a tabela do IBGE. Informar 9999999 para as operações com o exterior. + + + + + Nome do Município de envio da GTV-e (de onde o documento foi transmitido) + Informar PAIS/Municipio para as operações com o exterior. + + + + + + + + + + + Sigla da UF de envio da GTV-e (de onde o documento foi transmitido) + Informar 'EX' para operações com o exterior. + + + + + Modal da GTV-e + Preencher com: +01-Rodoviário +06-Multimodal + + + + + + + + + + + Tipo do Serviço + Preencher com: + +9 - GTV + + + + + + + + + + + Indicador da IE do tomador: +1 – Contribuinte ICMS; +2 – Contribuinte isento de inscrição; +9 – Não Contribuinte + Aplica-se ao tomador que for indicado no toma3 ou toma4 + + + + + + + + + + + + + Data e hora de saida da origem + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + Data e hora de chegada no destino + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + + Indicador do "papel" do tomador do serviço no GT-e + + + + + + Tomador do Serviço + Preencher com: + 0-Remetente; + 1-Destinatário + + + + + + + + + + + + + + + + Indicador do "papel" do tomador do serviço no CTV-e + + + + + + Tomador do Serviço + Preencher com: + 4 - Outros + Obs: Informar os dados cadastrais do tomador do serviço + + + + + + + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. +Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + Inscrição Estadual + Informar a IE do tomador ou ISENTO se tomador é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o tomador não seja contribuinte do ICMS não informar o conteúdo. + + + + + + + + Razão Social ou Nome + + + + + + + + + + + Nome Fantasia + + + + + + + + + + + Telefone + + + + + Dados do endereço + + + + + Endereço de email + + + + + + + + + Informar apenas +para tpEmis diferente de 1 + + + + Data e Hora da entrada em contingência + Informar a data e hora no formato AAAA-MM-DDTHH:MM:SS + + + + + Justificativa da entrada em contingência + + + + + + + + + + + + + + + Dados complementares da GTV-e para fins operacionais ou comerciais + + + + + + Característica adicional do transporte + Texto livre: +REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc + + + + + + + + + + + Característica adicional do serviço + Texto livre: + ENTREGA EXPRESSA; LOGÍSTICA REVERSA; CONVENCIONAL; EMERGENCIAL; etc + + + + + + + + + + + Funcionário emissor da GTV-e + + + + + + + + + + + Observações Gerais + + + + + + + + + + + Campo de uso livre do contribuinte + Informar o nome do campo no atributo xCampo e o conteúdo do campo no XTexto + + + + + + Conteúdo do campo + + + + + + + + + + + + Identificação do campo + + + + + + + + + + + + + Campo de uso livre do contribuinte + Informar o nome do campo no atributo xCampo e o conteúdo do campo no XTexto + + + + + + Conteúdo do campo + + + + + + + + + + + + Identificação do campo + + + + + + + + + + + + + + + + Identificação do Emitente da GTV-e + + + + + + CNPJ do emitente + Informar zeros não significativos + + + + + Inscrição Estadual do Emitente + + + + + + + + Inscrição Estadual do Substituto Tributário + + + + + + + + Razão social ou Nome do emitente + + + + + + + + + + + Nome fantasia + + + + + + + + + + + Endereço do emitente + + + + + + + + Informações do Remetente + Poderá não ser informado para os CT-e de redespacho intermediário e serviço vinculado a multimodal. Nos demais casos deverá sempre ser informado. + + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. + Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + Inscrição Estadual + Informar a IE do remetente ou ISENTO se remetente é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o remetente não seja contribuinte do ICMS não informar a tag. + + + + + + + + Razão social ou nome do remetente + + + + + + + + + + + Nome fantasia + + + + + + + + + + + Telefone + + + + + Dados do endereço + + + + + Endereço de email + + + + + + + + + + + Informações do Destinatário + Poderá não ser informado para os CT-e de redespacho intermediário e serviço vinculado a multimodal. Nos demais casos deverá sempre ser informado. + + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. + Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + Inscrição Estadual + Informar a IE do destinatário ou ISENTO se destinatário é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o destinatário não seja contribuinte do ICMS não informar o conteúdo. + + + + + + + + Razão Social ou Nome do destinatário + + + + + + + + + + + Telefone + + + + + Inscrição na SUFRAMA + (Obrigatório nas operações com as áreas com benefícios de incentivos fiscais sob controle da SUFRAMA) + + + + + + + + + + + Dados do endereço + + + + + Endereço de email + + + + + + + + Informações do endereço da origem do serviço + + + + + Informações do endereço do destino do serviço + + + + + Grupo de informações detalhadas da GTV-e + + + + + + Informações das Espécies transportadas + + + + + + Tipo da Espécie + 1 - Cédula +2 - Cheque +3 - Moeda +4 - Outros + + + + + + + + + + + + + + Valor Transportada em Espécie indicada + + + + + Nacionalidade do Numerário + 1 - Nacional +2 - Estrangeiro + + + + + + + + + + + + Nome da Moeda + Informar somente se tipo de numerário for 2 - Estrangeiro + + + + + + + + + + + + + + Quantidade de volumes/malotes + + + + + Grupo de informações dos veículos utilizados no transporte de valores + + + + + + Placa do veículo + + + + + UF em que veículo está licenciado + Sigla da UF de licenciamento do veículo. + + + + + RNTRC do transportador + + + + + + + + + + + + + + + + + Autorizados para download do XML do DF-e + Informar CNPJ ou CPF. Preencher os zeros não significativos. + + + + + + + CNPJ do autorizado + Informar zeros não significativos + + + + + CPF do autorizado + Informar zeros não significativos + + + + + + + + + Informações do Responsável Técnico pela emissão do DF-e + + + + + + Versão do leiaute + Ex: "4.00" + + + + + + + + Identificador da tag a ser assinada + Informar a chave de acesso do CT-e OS e precedida do literal "CTe" + + + + + + + + + + + + Informações suplementares da GTV-e + + + + + + Texto com o QR-Code impresso no DACTE + + + + + + + + + + + + + + + + + + Versão do leiaute + + + + + + + + + Tipo Protocolo de status resultado do processamento da CT-e + + + + + Dados do protocolo de status + + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Versão do Aplicativo que processou o CT-e + + + + + Chaves de acesso da CT-e, + + + + + Data e hora de processamento, no formato AAAA-MM-DDTHH:MM:SS TZD. + + + + + Número do Protocolo de Status do CT-e. + + + + + Digest Value da CT-e processado. Utilizado para conferir a integridade do CT-e original. + + + + + Código do status do CT-e. + + + + + + + + Descrição literal do status do CT-e. + + + + + + + + + Mensagem do Fisco + + + + + + Código do status da mensagem do fisco + + + + + + + + Mensagem do Fisco + + + + + + + + + + + + + + + + Tipo Protocolo de status resultado do processamento do CT-e OS (Modelo 67) + + + + + Dados do protocolo de status + + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Versão do Aplicativo que processou o CT-e + + + + + Chaves de acesso da CT-e + + + + + Data e hora de processamento, no formato AAAA-MM-DDTHH:MM:SS TZD. + + + + + Número do Protocolo de Status do CT-e. + + + + + Digest Value da CT-e processado. Utilizado para conferir a integridade do CT-e original. + + + + + Código do status do CT-e. + + + + + + + + Descrição literal do status do CT-e. + + + + + + + + + Mensagem do Fisco + + + + + + Código do status da mensagem do fisco + + + + + + + + Mensagem do Fisco + + + + + + + + + + + + + + + + Tipo Protocolo de status resultado do processamento da GTV-e (Modelo 64) + + + + + Dados do protocolo de status + + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Versão do Aplicativo que processou a GTV-e + + + + + Chaves de acesso da CT-e + + + + + Data e hora de processamento, no formato AAAA-MM-DDTHH:MM:SS TZD. + + + + + Número do Protocolo de Status da GTV-e + + + + + Digest Value da GTV-e processado. Utilizado para conferir a integridade da GTV-e original. + + + + + Código do status da GTV-e. + + + + + + + + Descrição literal do status da GTV-e. + + + + + + + + + Mensagem do Fisco + + + + + + Código do status da mensagem do fisco + + + + + + + + Mensagem do Fisco + + + + + + + + + + + + + + + + Tipo Retorno do Pedido de Autorização de CT-e (Modelo 57) + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Identificação da UF + + + + + Versão do Aplicativo que processou a CT-e + + + + + código do status do retorno da consulta. + + + + + Descrição literal do status do do retorno da consulta. + + + + + Reposta ao processamento do CT-e + + + + + + + + Tipo Retorno do Pedido de Autorização de GTV-e (Modelo 64) + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Identificação da UF + + + + + Versão do Aplicativo que processou a GTV-e + + + + + código do status do retorno da consulta. + + + + + Descrição literal do status do do retorno da consulta. + + + + + Reposta ao processamento do CT-e + + + + + + + + Tipo Retorno do Pedido de Autorização de CT-e OS (Modelo 67) + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Identificação da UF + + + + + Versão do Aplicativo que processou a CT-e + + + + + código do status do retorno da consulta. + + + + + Descrição literal do status do do retorno da consulta. + + + + + Reposta ao processamento do CT-e + + + + + + + + Tipo Conhecimento de Transporte Eletrônico (Modelo 57) + + + + + Informações do CT-e + + + + + + Identificação do CT-e + + + + + + Código da UF do emitente do CT-e. + Utilizar a Tabela do IBGE. + + + + + Código numérico que compõe a Chave de Acesso. + Número aleatório gerado pelo emitente para cada CT-e, com o objetivo de evitar acessos indevidos ao documento. + + + + + + + + + + + Código Fiscal de Operações e Prestações + + + + + Natureza da Operação + + + + + + + + + + + Modelo do documento fiscal + Utilizar o código 57 para identificação do CT-e, emitido em substituição aos modelos de conhecimentos em papel. + + + + + Série do CT-e + Preencher com "0" no caso de série única + + + + + + + + Número do CT-e + + + + + Data e hora de emissão do CT-e + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + Formato de impressão do DACTE + Preencher com: 1 - Retrato; 2 - Paisagem. + + + + + + + + + + + + Forma de emissão do CT-e + Preencher com: +1 - Normal; + 3-Regime Especial NFF; 4-EPEC pela SVC; 5 - Contingência FSDA; + 7 - Autorização pela SVC-RS; + 8 - Autorização pela SVC-SP + + + + + + + + + + + + + + + + Digito Verificador da chave de acesso do CT-e + Informar o dígito de controle da chave de acesso do CT-e, que deve ser calculado com a aplicação do algoritmo módulo 11 (base 2,9) da chave de acesso. + + + + + + + + + + + Tipo do Ambiente + Preencher com:1 - Produção; 2 - Homologação. + + + + + Tipo do CT-e + Preencher com: + 0 - CT-e Normal; + 1 - CT-e de Complemento de Valores; + 3 - CT-e de Substituição + + + + + Identificador do processo de emissão do CT-e + Preencher com: + 0 - emissão de CT-e com aplicativo do contribuinte; + 3- emissão CT-e pelo contribuinte com aplicativo fornecido pelo SEBRAE. + + + + + Versão do processo de emissão + Iinformar a versão do aplicativo emissor de CT-e. + + + + + + + + + + + Indicador de CT-e Globalizado + Informar valor 1 quando for Globalizado e não informar a tag quando não tratar de CT-e Globalizado + + + + + + + + + + Código do Município de envio do CT-e (de onde o documento foi transmitido) + Utilizar a tabela do IBGE. Informar 9999999 para as operações com o exterior. + + + + + Nome do Município de envio do CT-e (de onde o documento foi transmitido) + Informar PAIS/Municipio para as operações com o exterior. + + + + + + + + + + + Sigla da UF de envio do CT-e (de onde o documento foi transmitido) + Informar 'EX' para operações com o exterior. + + + + + Modal + Preencher com:01-Rodoviário; +02-Aéreo;03-Aquaviário;04-Ferroviário;05-Dutoviário;06-Multimodal; + + + + + Tipo do Serviço + Preencher com: +0 - Normal;1 - Subcontratação; +2 - Redespacho;3 - Redespacho Intermediário; 4 - Serviço Vinculado a Multimodal + + + + + + + + + + + + + + + Código do Município de início da prestação + Utilizar a tabela do IBGE. Informar 9999999 para operações com o exterior. + + + + + Nome do Município do início da prestação + Informar 'EXTERIOR' para operações com o exterior. + + + + + + + + + + + UF do início da prestação + Informar 'EX' para operações com o exterior. + + + + + Código do Município de término da prestação + Utilizar a tabela do IBGE. Informar 9999999 para operações com o exterior. + + + + + Nome do Município do término da prestação + Informar 'EXTERIOR' para operações com o exterior. + + + + + + + + + + + UF do término da prestação + Informar 'EX' para operações com o exterior. + + + + + Indicador se o Recebedor retira no Aeroporto, Filial, Porto ou Estação de Destino? + Preencher com: 0 - sim; 1 - não + + + + + + + + + + + + Detalhes do retira + + + + + + + + + + + Indicador do papel do tomador na prestação do serviço: +1 – Contribuinte ICMS; +2 – Contribuinte isento de inscrição; +9 – Não Contribuinte + Aplica-se ao tomador que for indicado no toma3 ou toma4 + + + + + + + + + + + + + + Indicador do "papel" do tomador do serviço no CT-e + + + + + + Tomador do Serviço + Preencher com: + 0-Remetente; + 1-Expedidor; + 2-Recebedor; + 3-Destinatário + Serão utilizadas as informações contidas no respectivo grupo, conforme indicado pelo conteúdo deste campo + + + + + + + + + + + + + + + + + Indicador do "papel" do tomador do serviço no CT-e + + + + + + Tomador do Serviço + Preencher com: + 4 - Outros + Obs: Informar os dados cadastrais do tomador do serviço + + + + + + + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. +Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + Inscrição Estadual + Informar a IE do tomador ou ISENTO se tomador é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o tomador não seja contribuinte do ICMS não informar o conteúdo. + + + + + + + + + Razão Social ou Nome + + + + + + + + + + + Nome Fantasia + + + + + + + + + + + Telefone + + + + + Dados do endereço + + + + + Endereço de email + + + + + + + + + + Informar apenas +para tpEmis diferente de 1 + + + + Data e Hora da entrada em contingência + Informar a data e hora no formato AAAA-MM-DDTHH:MM:SS + + + + + Justificativa da entrada em contingência + + + + + + + + + + + + + + + Dados complementares do CT-e para fins operacionais ou comerciais + + + + + + Característica adicional do transporte + Texto livre: +REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc + + + + + + + + + + + Característica adicional do serviço + Texto livre: + ENTREGA EXPRESSA; LOGÍSTICA REVERSA; CONVENCIONAL; EMERGENCIAL; etc + + + + + + + + + + + Funcionário emissor do CTe + + + + + + + + + + + Previsão do fluxo da carga + Preenchimento obrigatório para o modal aéreo. + + + + + + Sigla ou código interno da Filial/Porto/Estação/ Aeroporto de Origem + Observações para o modal aéreo: + - Preenchimento obrigatório para o modal aéreo. + - O código de três letras IATA do aeroporto de partida deverá ser incluído como primeira anotação. Quando não for possível, utilizar a sigla OACI. + + + + + + + + + + + + + + Sigla ou código interno da Filial/Porto/Estação/Aeroporto de Passagem + Observação para o modal aéreo: + - O código de três letras IATA, referente ao aeroporto de transferência, deverá ser incluído, quando for o caso. Quando não for possível, utilizar a sigla OACI. Qualquer solicitação de itinerário deverá ser incluída. + + + + + + + + + + + + + + Sigla ou código interno da Filial/Porto/Estação/Aeroporto de Destino + Observações para o modal aéreo: + - Preenchimento obrigatório para o modal aéreo. + - Deverá ser incluído o código de três letras IATA do aeroporto de destino. Quando não for possível, utilizar a sigla OACI. + + + + + + + + + + + Código da Rota de Entrega + + + + + + + + + + + + + + Informações ref. a previsão de entrega + + + + + + + Entrega sem data definida + Esta opção é proibida para o modal aéreo. + + + + + + Tipo de data/período programado para entrega + 0- Sem data definida + + + + + + + + + + + + + + Entrega com data definida + + + + + + Tipo de data/período programado para entrega + Preencher com: + 1-Na data; + 2-Até a data; + 3-A partir da data + + + + + + + + + + + + + Data programada + Formato AAAA-MM-DD + + + + + + + + Entrega no período definido + + + + + + Tipo período + 4-no período + + + + + + + + + + + Data inicial + Formato AAAA-MM-DD + + + + + Data final + Formato AAAA-MM-DD + + + + + + + + + + Entrega sem hora definida + + + + + + Tipo de hora + 0- Sem hora definida + + + + + + + + + + + + + + Entrega com hora definida + + + + + + Tipo de hora + Preencher com: + 1 - No horário; + 2 - Até o horário; + 3 - A partir do horário. + + + + + + + + + + + + + Hora programada + Formato HH:MM:SS + + + + + + + + Entrega no intervalo de horário definido + + + + + + Tipo de hora + 4 - No intervalo de tempo + + + + + + + + + + + Hora inicial + Formato HH:MM:SS + + + + + Hora final + Formato HH:MM:SS + + + + + + + + + + + + Município de origem para efeito de cálculo do frete + + + + + + + + + + + Município de destino para efeito de cálculo do frete + + + + + + + + + + + Observações Gerais + + + + + + + + + + + Campo de uso livre do contribuinte + Informar o nome do campo no atributo xCampo e o conteúdo do campo no XTexto + + + + + + Conteúdo do campo + + + + + + + + + + + + Identificação do campo + + + + + + + + + + + + + Campo de uso livre do contribuinte + Informar o nome do campo no atributo xCampo e o conteúdo do campo no XTexto + + + + + + Conteúdo do campo + + + + + + + + + + + + Identificação do campo + + + + + + + + + + + + + + + + Identificação do Emitente do CT-e + + + + + + + CNPJ do emitente + Informar zeros não significativos + + + + + CPF do emitente + Informar zeros não significativos. + +Usar com série específica 920-969 para emitente pessoa física com inscrição estadual + + + + + + Inscrição Estadual do Emitente + A IE do emitente somente ficará sem informação para o caso do Regime Especial da NFF (tpEmis=3) + + + + + + + + Inscrição Estadual do Substituto Tributário + + + + + + + + Razão social ou Nome do emitente + + + + + + + + + + + Nome fantasia + + + + + + + + + + + Endereço do emitente + + + + + Código do Regime Tributário + Informar: 1=Simples Nacional; +2=Simples Nacional, excesso sublimite de receita bruta; +3=Regime Normal. +4=Simples Nacional - Microempreendedor Individual – MEI. + + + + + + + + + Informações do Remetente das mercadorias transportadas pelo CT-e + Poderá não ser informado para os CT-e de redespacho intermediário e serviço vinculado a multimodal. Nos demais casos deverá sempre ser informado. + + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. + Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + Inscrição Estadual + Informar a IE do remetente ou ISENTO se remetente é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o remetente não seja contribuinte do ICMS não informar a tag. + + + + + + + + Razão social ou nome do remetente + + + + + + + + + + + Nome fantasia + + + + + + + + + + + Telefone + + + + + Dados do endereço + + + + + Endereço de email + + + + + + + + + + + Informações do Expedidor da Carga + + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. + Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + Inscrição Estadual + Informar a IE do expedidor ou ISENTO se expedidor é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o expedidor não seja contribuinte do ICMS não informar a tag. + + + + + + + + Razão Social ou Nome + + + + + + + + + + + Telefone + + + + + Dados do endereço + + + + + Endereço de email + + + + + + + + Informações do Recebedor da Carga + + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. + Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + Inscrição Estadual + Informar a IE do recebedor ou ISENTO se recebedor é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o recebedor não seja contribuinte do ICMS não informar o conteúdo. + + + + + + + + Razão Social ou Nome + + + + + + + + + + + Telefone + + + + + Dados do endereço + + + + + Endereço de email + + + + + + + + Informações do Destinatário do CT-e + Poderá não ser informado para os CT-e de redespacho intermediário e serviço vinculado a multimodal. Nos demais casos deverá sempre ser informado. + + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. + Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + Inscrição Estadual + Informar a IE do destinatário ou ISENTO se destinatário é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o destinatário não seja contribuinte do ICMS não informar o conteúdo. + + + + + + + + Razão Social ou Nome do destinatário + + + + + + + + + + + Telefone + + + + + Inscrição na SUFRAMA + (Obrigatório nas operações com as áreas com benefícios de incentivos fiscais sob controle da SUFRAMA) + + + + + + + + + + + Dados do endereço + + + + + Endereço de email + + + + + + + + Valores da Prestação de Serviço + + + + + + Valor Total da Prestação do Serviço + Pode conter zeros quando o CT-e for de complemento de ICMS + + + + + Valor a Receber + + + + + Componentes do Valor da Prestação + + + + + + Nome do componente + Exxemplos: FRETE PESO, FRETE VALOR, SEC/CAT, ADEME, AGENDAMENTO, etc + + + + + + + + + + + Valor do componente + + + + + + + + + + + Informações relativas aos Impostos + + + + + + Informações relativas ao ICMS + + + + + + Valor Total dos Tributos + + + + + Informações adicionais de interesse do Fisco + Norma referenciada, informações complementares, etc + + + + + + + + + + + Informações do ICMS de partilha com a UF de término do serviço de transporte na operação interestadual + Grupo a ser informado nas prestações interestaduais para consumidor final, não contribuinte do ICMS + + + + + + Valor da BC do ICMS na UF de término da prestação do serviço de transporte + + + + + Percentual do ICMS relativo ao Fundo de Combate à pobreza (FCP) na UF de término da prestação do serviço de transporte + Alíquota adotada nas operações internas na UF do destinatário + + + + + Alíquota interna da UF de término da prestação do serviço de transporte + Alíquota adotada nas operações internas na UF do destinatário + + + + + Alíquota interestadual das UF envolvidas + Alíquota interestadual das UF envolvidas + + + + + + Valor do ICMS relativo ao Fundo de Combate á Pobreza (FCP) da UF de término da prestação + + + + + Valor do ICMS de partilha para a UF de término da prestação do serviço de transporte + + + + + Valor do ICMS de partilha para a UF de início da prestação do serviço de transporte + + + + + + + + + + + + Grupo de informações do CT-e Normal e Substituto + + + + + + Informações da Carga do CT-e + + + + + + Valor total da carga + Dever ser informado para todos os modais, com exceção para o Dutoviário. + + + + + Produto predominante + Informar a descrição do produto predominante + + + + + + + + + + + Outras características da carga + "FRIA", "GRANEL", "REFRIGERADA", "Medidas: 12X12X12" + + + + + + + + + + + Informações de quantidades da Carga do CT-e + Para o Aéreo é obrigatório o preenchimento desse campo da seguinte forma. +1 - Peso Bruto, sempre em quilogramas (obrigatório); +2 - Peso Cubado; sempre em quilogramas; +3 - Quantidade de volumes, sempre em unidades (obrigatório); +4 - Cubagem, sempre em metros cúbicos (obrigatório apenas quando for impossível preencher as dimensões da(s) embalagem(ens) na tag xDime do leiaute do Aéreo). + + + + + + Código da Unidade de Medida + Preencher com: + 00-M3; + 01-KG; + 02-TON; + 03-UNIDADE; + 04-LITROS; + 05-MMBTU + + + + + + + + + + + + + + + + Tipo da Medida + Exemplos: +PESO BRUTO, PESO DECLARADO, PESO CUBADO, PESO AFORADO, PESO AFERIDO, PESO BASE DE CÁLCULO, LITRAGEM, CAIXAS e etc + + + + + + + + + + + Quantidade + + + + + + + + Valor da Carga para efeito de averbação + Normalmente igual ao valor declarado da mercadoria, diferente por exemplo, quando a mercadoria transportada é isenta de tributos nacionais para exportação, onde é preciso averbar um valor maior, pois no caso de indenização, o valor a ser pago será maior + + + + + + + + Informações dos documentos transportados pelo CT-e +Opcional para Redespacho Intermediario e Serviço vinculado a multimodal. + Poderá não ser informado para os CT-e de redespacho intermediário e serviço vinculado a multimodal. Nos demais casos deverá sempre ser informado. + + + + + + + Informações das NF + Este grupo deve ser informado quando o documento originário for NF + + + + + + Número do Romaneio da NF + + + + + + + + + + + Número do Pedido da NF + + + + + + + + + + + Modelo da Nota Fiscal + Preencher com: +01 - NF Modelo 01/1A e Avulsa; +04 - NF de Produtor + + + + + Série + + + + + + + + + + + Número + + + + + + + + + + + Data de Emissão + Formato AAAA-MM-DD + + + + + Valor da Base de Cálculo do ICMS + + + + + Valor Total do ICMS + + + + + Valor da Base de Cálculo do ICMS ST + + + + + Valor Total do ICMS ST + + + + + Valor Total dos Produtos + + + + + Valor Total da NF + + + + + CFOP Predominante + CFOP da NF ou, na existência de mais de um, predominância pelo critério de valor econômico. + + + + + Peso total em Kg + + + + + PIN SUFRAMA + PIN atribuído pela SUFRAMA para a operação. + + + + + + + + + + + + + Data prevista de entrega + Formato AAAA-MM-DD + + + + + + Informações das Unidades de Carga (Containeres/ULD/Outros) + Dispositivo de carga utilizada (Unit Load Device - ULD) significa todo tipo de contêiner de carga, vagão, contêiner de avião, palete de aeronave com rede ou palete de aeronave com rede sobre um iglu. + + + + + Informações das Unidades de Transporte (Carreta/Reboque/Vagão) + Deve ser preenchido com as informações das unidades de transporte utilizadas. + + + + + + + + + Informações das NF-e + + + + + + Chave de acesso da NF-e + + + + + PIN SUFRAMA + PIN atribuído pela SUFRAMA para a operação. + + + + + + + + + + + + + Data prevista de entrega + Formato AAAA-MM-DD + + + + + + Informações das Unidades de Carga (Containeres/ULD/Outros) + Dispositivo de carga utilizada (Unit Load Device - ULD) significa todo tipo de contêiner de carga, vagão, contêiner de avião, palete de aeronave com rede ou palete de aeronave com rede sobre um iglu. + + + + + Informações das Unidades de Transporte (Carreta/Reboque/Vagão) + Deve ser preenchido com as informações das unidades de transporte utilizadas. + + + + + + + + + Informações dos demais documentos + + + + + + Tipo de documento originário + Preencher com: + 00 - Declaração; + 10 - Dutoviário; + + +59 - CF-e SAT; + +65 - NFC-e; + 99 - Outros + + + + + + + + + + + + + + + Descrição do documento + + + + + + + + + + + Número + + + + + + + + + + + Data de Emissão + Formato AAAA-MM-DD + + + + + Valor do documento + + + + + Data prevista de entrega + Formato AAAA-MM-DD + + + + + + Informações das Unidades de Carga (Containeres/ULD/Outros) + Dispositivo de carga utilizada (Unit Load Device - ULD) significa todo tipo de contêiner de carga, vagão, contêiner de avião, palete de aeronave com rede ou palete de aeronave com rede sobre um iglu. + + + + + Informações das Unidades de Transporte (Carreta/Reboque/Vagão) + Deve ser preenchido com as informações das unidades de transporte utilizadas. + + + + + + + + + + + + + Documentos de Transporte Anterior + + + + + + Emissor do documento anterior + + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. + Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + + Inscrição Estadual + + + + + Sigla da UF + Informar EX para operações com o exterior. + + + + + + Razão Social ou Nome do expedidor + + + + + + + + + + + Informações de identificação dos documentos de Transporte Anterior + + + + + + Documentos de transporte anterior em papel + + + + + + Tipo do Documento de Transporte Anterior + Preencher com: +07-ATRE; +08-DTA (Despacho de Transito Aduaneiro); +09-Conhecimento Aéreo Internacional; +10 – Conhecimento - Carta de Porte Internacional; +11 – Conhecimento Avulso; +12-TIF (Transporte Internacional Ferroviário); 13-BL (Bill of Lading) + + + + + + + + Série do Documento Fiscal + + + + + + + + + + + Série do Documento Fiscal + + + + + + + + + + + Número do Documento Fiscal + + + + + + + + + + + Data de emissão (AAAA-MM-DD) + + + + + + + + Documentos de transporte anterior eletrônicos + + + + + + Chave de acesso do CT-e + + + + + + + + + + + + + + + + + Informações do modal + + + + + + XML do modal +Insira neste local o XML específico do modal (rodoviário, aéreo, ferroviário, aquaviário ou dutoviário). + O elemento do tipo -any- permite estender o documento XML com elementos não especificados pelo schema. + Insira neste local - any- o XML específico do modal (rodoviário, aéreo, ferroviário, aquaviário ou dutoviário). A especificação do schema XML para cada modal pode ser encontrada nos arquivos que acompanham este pacote de liberação: + Rodoviário - ver arquivo CTeModalRodoviario_v9.99 + Aéreo - ver arquivo CTeModalAereo_v9.99 + Aquaviário - arquivo CTeModalAquaviario_v9.99 + Ferroviário - arquivo CTeModalFerroviario_v9.99 + Dutoviário - arquivo CTeModalDutoviario_v9.99 + +Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo, o arquivo para o schema do modal Rodoviário na versão 1.04 será denominado "CTeModalRodoviario_v1.04". + + + + + + Versão do leiaute específico para o Modal + + + + + + + + + + + + + informações dos veículos transportados + + + + + + Chassi do veículo + + + + + + + + + + + + Cor do veículo + Código de cada montadora + + + + + + + + + + + Descrição da cor + + + + + + + + + + + Código Marca Modelo + Utilizar tabela RENAVAM + + + + + + + + + + + Valor Unitário do Veículo + + + + + Frete Unitário + + + + + + + + Dados da cobrança do CT-e + + + + + + Dados da fatura + + + + + + Número da fatura + + + + + + + + + + + Valor original da fatura + + + + + Valor do desconto da fatura + + + + + Valor líquido da fatura + + + + + + + + Dados das duplicatas + + + + + + Número da duplicata + + + + + + + + + + + Data de vencimento da duplicata (AAAA-MM-DD) + + + + + Valor da duplicata + + + + + + + + + + + Informações do CT-e de substituição + + + + + + Chave de acesso do CT-e a ser substituído (original) + + + + + + + + + + Indicador de CT-e Alteração de Tomador + + + + + + + + + + + + + Informações do CT-e Globalizado + + + + + + Preencher com informações adicionais, legislação do regime especial, etc + + + + + + + + + + + + + + Informações do Serviço Vinculado a Multimodal + + + + + + informações do CT-e multimodal vinculado + + + + + + Chave de acesso do CT-e Multimodal + + + + + + + + + + + + + + Detalhamento do CT-e complementado + + + + + + Chave do CT-e complementado + + + + + + + + + Autorizados para download do XML do DF-e + Informar CNPJ ou CPF. Preencher os zeros não significativos. + + + + + + + CNPJ do autorizado + Informar zeros não significativos + + + + + CPF do autorizado + Informar zeros não significativos + + + + + + + + + Informações do Responsável Técnico pela emissão do DF-e + + + + + Grupo de informações do pedido de emissão da Nota Fiscal Fácil + + + + + + Solicitação do pedido de emissão da NFF. + Será preenchido com a totalidade de campos informados no aplicativo emissor serializado. + + + + + + + + + + + + + + Grupo de Informação do Provedor de Assinatura e Autorização + + + + + + CNPJ do Provedor de Assinatura e Autorização + + + + + Assinatura RSA do Emitente para DFe gerados por PAA + + + + + + Assinatura digital padrão RSA + Converter o atributo Id do DFe para array de bytes e assinar com a chave privada do RSA com algoritmo SHA1 gerando um valor no formato base64. + + + + + Chave Publica no padrão XML RSA Key + + + + + + + + + + + + Versão do leiaute + Ex: "4.00" + + + + + + + + Identificador da tag a ser assinada + Informar a chave de acesso do CT-e e precedida do literal "CTe" + + + + + + + + + + + + Informações suplementares do CT-e + + + + + + Texto com o QR-Code impresso no DACTE + + + + + + + + + + + + + + + + + + + Tipo Conhecimento de Transporte Eletrônico Outros Serviços (Modelo 67) + + + + + Informações do CT-e Outros Serviços + + + + + + Identificação do CT-e Outros Serviços + + + + + + Código da UF do emitente do CT-e. + Utilizar a Tabela do IBGE. + + + + + Código numérico que compõe a Chave de Acesso. + Número aleatório gerado pelo emitente para cada CT-e, com o objetivo de evitar acessos indevidos ao documento. + + + + + + + + + + + Código Fiscal de Operações e Prestações + + + + + Natureza da Operação + + + + + + + + + + + Modelo do documento fiscal + Utilizar o código 67 para identificação do CT-e Outros Serviços, emitido em substituição a Nota Fiscal Modelo 7 para transporte de pessoas, valores e excesso de bagagem. + + + + + Série do CT-e OS + Preencher com "0" no caso de série única + + + + + + + + Número do CT-e OS + + + + + Data e hora de emissão do CT-e OS + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + Formato de impressão do DACTE OS + Preencher com: 1 - Retrato; 2 - Paisagem. + + + + + + + + + + + + Forma de emissão do CT-e + Preencher com: +1 - Normal; + 5 - Contingência FSDA; +7 - Autorização pela SVC-RS; + 8 - Autorização pela SVC-SP + + + + + + + + + + + + + + Digito Verificador da chave de acesso do CT-e + Informar o dígito de controle da chave de acesso do CT-e, que deve ser calculado com a aplicação do algoritmo módulo 11 (base 2,9) da chave de acesso. + + + + + + + + + + + Tipo do Ambiente + Preencher com:1 - Produção; 2 - Homologação + + + + + Tipo do CT-e OS + Preencher com: +0 - CT-e Normal; +1 - CT-e Complementar; + +3 - CT-e de Substituição. + + + + + Identificador do processo de emissão do CT-e OS + Preencher com: + 0 - emissão de CT-e com aplicativo do contribuinte; + 3- emissão CT-e pelo contribuinte com aplicativo fornecido pelo Fisco. + + + + + Versão do processo de emissão + Iinformar a versão do aplicativo emissor de CT-e. + + + + + + + + + + + Código do Município de envio do CT-e (de onde o documento foi transmitido) + Utilizar a tabela do IBGE. Informar 9999999 para as operações com o exterior. + + + + + Nome do Município de envio do CT-e (de onde o documento foi transmitido) + Informar PAIS/Municipio para as operações com o exterior. + + + + + + + + + + + Sigla da UF de envio do CT-e (de onde o documento foi transmitido) + Informar 'EX' para operações com o exterior. + + + + + Modal do CT-e OS + Preencher com: +01-Rodoviário; +02- Aéreo; +03 - Aquaviário; +04 - Ferroviário. + + + + + Tipo do Serviço + Preencher com: + +6 - Transporte de Pessoas; +7 - Transporte de Valores; +8 - Excesso de Bagagem. + + + + + + + + + + + + + Indicador da IE do tomador: +1 – Contribuinte ICMS; +2 – Contribuinte isento de inscrição; +9 – Não Contribuinte + Aplica-se ao tomador que for indicado no toma3 ou toma4 + + + + + + + + + + + + + Código do Município de início da prestação + Utilizar a tabela do IBGE. Informar 9999999 para operações com o exterior. + + + + + Nome do Município do início da prestação + Informar 'EXTERIOR' para operações com o exterior. + + + + + + + + + + + UF do início da prestação + Informar 'EX' para operações com o exterior. + + + + + Código do Município de término da prestação + Utilizar a tabela do IBGE. Informar 9999999 para operações com o exterior. + + + + + Nome do Município do término da prestação + Informar 'EXTERIOR' para operações com o exterior. + + + + + + + + + + + UF do término da prestação + Informar 'EX' para operações com o exterior. + + + + + Informações do Percurso do CT-e Outros Serviços + + + + + + Sigla das Unidades da Federação do percurso do veículo. + Não é necessário repetir as UF de Início e Fim + + + + + + + + Informar apenas +para tpEmis diferente de 1 + + + + Data e Hora da entrada em contingência + Informar a data e hora no formato AAAA-MM-DDTHH:MM:SS + + + + + Justificativa da entrada em contingência + + + + + + + + + + + + + + + Dados complementares do CT-e para fins operacionais ou comerciais + + + + + + Característica adicional do transporte + Texto livre: +REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc + + + + + + + + + + + Característica adicional do serviço + Texto livre: + ENTREGA EXPRESSA; LOGÍSTICA REVERSA; CONVENCIONAL; EMERGENCIAL; etc + + + + + + + + + + + Funcionário emissor do CTe + + + + + + + + + + + Observações Gerais + + + + + + + + + + + Campo de uso livre do contribuinte + Informar o nome do campo no atributo xCampo e o conteúdo do campo no XTexto + + + + + + Conteúdo do campo + + + + + + + + + + + + Identificação do campo + + + + + + + + + + + + + Campo de uso livre do contribuinte + Informar o nome do campo no atributo xCampo e o conteúdo do campo no XTexto + + + + + + Conteúdo do campo + + + + + + + + + + + + Identificação do campo + + + + + + + + + + + + + + + + Identificação do Emitente do CT-e OS + + + + + + CNPJ do emitente + Informar zeros não significativos + + + + + Inscrição Estadual do Emitente + + + + + + + + Inscrição Estadual do Substituto Tributário + + + + + + + + Razão social ou Nome do emitente + + + + + + + + + + + Nome fantasia + + + + + + + + + + + Endereço do emitente + + + + + Código do Regime Tributário + Informar: 1=Simples Nacional; +2=Simples Nacional, excesso sublimite de receita bruta; +3=Regime Normal; +4=Simples Nacional - Microempreendedor Individual – MEI. + + + + + + + + + Informações do Tomador/Usuário do Serviço + Opcional para Excesso de Bagagem + + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. + Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + Inscrição Estadual + Informar a IE do tomador ou ISENTO se tomador é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o tomador não seja contribuinte do ICMS não informar o conteúdo. + + + + + + + + Razão social ou nome do tomador + + + + + + + + + + + Nome fantasia + + + + + + + + + + + Telefone + + + + + Dados do endereço + + + + + Endereço de email + + + + + + + + + + + Valores da Prestação de Serviço + + + + + + Valor Total da Prestação do Serviço + Pode conter zeros quando o CT-e for de complemento de ICMS + + + + + Valor a Receber + + + + + Componentes do Valor da Prestação + + + + + + Nome do componente + Exxemplos: FRETE PESO, FRETE VALOR, SEC/CAT, ADEME, AGENDAMENTO, etc + + + + + + + + + + + Valor do componente + + + + + + + + + + + Informações relativas aos Impostos + + + + + + Informações relativas ao ICMS + + + + + + Valor Total dos Tributos + + + + + Informações adicionais de interesse do Fisco + Norma referenciada, informações complementares, etc + + + + + + + + + + + Informações do ICMS de partilha com a UF de término do serviço de transporte na operação interestadual + Grupo a ser informado nas prestações interestaduais para consumidor final, não contribuinte do ICMS + + + + + + Valor da BC do ICMS na UF de término da prestação do serviço de transporte + + + + + Percentual do ICMS relativo ao Fundo de Combate à pobreza (FCP) na UF de término da prestação do serviço de transporte + Alíquota adotada nas operações internas na UF do destinatário + + + + + Alíquota interna da UF de término da prestação do serviço de transporte + Alíquota adotada nas operações internas na UF do destinatário + + + + + Alíquota interestadual das UF envolvidas + Alíquota interestadual das UF envolvidas + + + + + + Valor do ICMS relativo ao Fundo de Combate á Pobreza (FCP) da UF de término da prestação + + + + + Valor do ICMS de partilha para a UF de término da prestação do serviço de transporte + + + + + Valor do ICMS de partilha para a UF de início da prestação do serviço de transporte + + + + + + + + Informações dos tributos federais + Grupo a ser informado nas prestações interestaduais para consumidor final, não contribuinte do ICMS + + + + + + Valor do PIS + + + + + Valor COFINS + + + + + Valor de Imposto de Renda + + + + + Valor do INSS + + + + + Valor do CSLL + + + + + + + + + + + + Grupo de informações do CT-e OS Normal + + + + + + Informações da Prestação do Serviço + + + + + + Descrição do Serviço prestado + + + + + + + + + + + Informações de quantidades da Carga do CT-e + Para Transporte de Pessoas indicar número de passageiros, para excesso de bagagem e transporte de valores indicar número de Volumes/Malotes + + + + + + Quantidade + + + + + + + + + + + Informações dos documentos referenciados + + + + + + + Número + + + + + + + + + + + Série + + + + + + + + + + + Subsérie + + + + + + + + + + + Data de Emissão + Formato AAAA-MM-DD + + + + + Valor Transportado + + + + + + Chave de acesso do BP-e que possui eventos excesso de bagagem + + + + + + + + + + + Informações de Seguro da Carga + + + + + + Responsável pelo seguro + Preencher com: + +4 - Emitente do CT-e; + +5 - Tomador de Serviço. + + + + + + + + + + + + + + + Nome da Seguradora + + + + + + + + + + + Número da Apólice + Obrigatório pela lei 11.442/07 (RCTRC) + + + + + + + + + + + + + + Informações do modal +Obrigatório para Pessoas e Bagagem + + + + + + XML do modal +Insira neste local o XML específico do modal + O elemento do tipo -any- permite estender o documento XML com elementos não especificados pelo schema. + Insira neste local - any- o XML específico do modal (rodoviário). A especificação do schema XML para cada modal pode ser encontrada nos arquivos que acompanham este pacote de liberação: + Rodoviário - ver arquivo CTeModalRodoviarioOS_v9.99 + +Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo, o arquivo para o schema do modal Rodoviário na versão 4.00 será denominado "CTeModalRodoviarioOS_v4.00". + + + + + + Versão do leiaute específico para o Modal + + + + + + + + + + + + + Informações do CT-e de substituição + + + + + + Chave de acesso do CT-e a ser substituído (original) + + + + + + + + + + + + + Chave de acesso do CT-e Cancelado +Somente para Transporte de Valores + + + + + + + + Dados da cobrança do CT-e + + + + + + Dados da fatura + + + + + + Número da fatura + + + + + + + + + + + Valor original da fatura + + + + + Valor do desconto da fatura + + + + + Valor líquido da fatura + + + + + + + + Dados das duplicatas + + + + + + Número da duplicata + + + + + + + + + + + Data de vencimento da duplicata (AAAA-MM-DD) + + + + + Valor da duplicata + + + + + + + + + + + Informações das GTV-e relacionadas ao CT-e OS + + + + + + Chave de acesso da GTV-e + + + + + + + + + + Componentes do Valor da GTVe + + + + + + Tipo do Componente + 1-Custodia +2-Embarque +3-Tempo de espera +4-Malote +5-Ad Valorem +6-Outros + + + + + + + + + + + + + + + + Valor do componente + + + + + Nome do componente (informar apenas para outros) + Exemplos: FRETE PESO, FRETE VALOR, SEC/CAT, ADEME, AGENDAMENTO, etc + + + + + + + + + + + + + + + + + + + + Detalhamento do CT-e complementado + + + + + + Chave do CT-e complementado + + + + + + + + + Autorizados para download do XML do DF-e + Informar CNPJ ou CPF. Preencher os zeros não significativos. + + + + + + + CNPJ do autorizado + Informar zeros não significativos + + + + + CPF do autorizado + Informar zeros não significativos + + + + + + + + + Informações do Responsável Técnico pela emissão do DF-e + + + + + + Versão do leiaute + Ex: "4.00" + + + + + + + + Identificador da tag a ser assinada + Informar a chave de acesso do CT-e OS e precedida do literal "CTe" + + + + + + + + + + + + Informações suplementares do CT-e + + + + + + Texto com o QR-Code impresso no DACTE + + + + + + + + + + + + + + + + + + Versão do leiaute + + + + + + + + + Tipo Dados do Endereço + + + + + Logradouro + + + + + + + + + + + Número + + + + + + + + + + + Complemento + + + + + + + + + + + Bairro + + + + + + + + + + + Código do município (utilizar a tabela do IBGE) + + + + + Nome do município + + + + + + + + + + + CEP + Informar zeros não significativos + + + + + + + + + + + Sigla da UF + + + + + Telefone + + + + + + + Tipo Dados do Endereço + + + + + Logradouro + + + + + + + + + + + Número + + + + + + + + + + + Complemento + + + + + + + + + + + Bairro + + + + + + + + + + + Código do município (utilizar a tabela do IBGE) + Informar 9999999 para operações com o exterior. + + + + + Nome do município + Informar EXTERIOR para operações com o exterior. + + + + + + + + + + + CEP + Informar os zeros não significativos + + + + + + + + + + + Sigla da UF + Informar EX para operações com o exterior. + + + + + Código do país + Utilizar a tabela do BACEN + + + + + + + + + + + Nome do país + + + + + + + + + + + + + Tipo Dados do Endereço + + + + + Logradouro + + + + + + + + + + + Número + + + + + + + + + + + Complemento + + + + + + + + + + + Bairro + + + + + + + + + + + Código do município (utilizar a tabela do IBGE), informar 9999999 para operações com o exterior. + + + + + Nome do município, , informar EXTERIOR para operações com o exterior. + + + + + + + + + + + CEP + + + + + + + + + + + Sigla da UF + Informar EX para operações com o exterior. + + + + + + + Tipo Dados do Endereço + + + + + Logradouro + + + + + + + + + + + Número + + + + + + + + + + + Complemento + + + + + + + + + + + Bairro + + + + + + + + + + + Código do município (utilizar a tabela do IBGE), informar 9999999 para operações com o exterior. + + + + + Nome do município + Informar EXTERIOR para operações com o exterior. + + + + + + + + + + + CEP + + + + + + + + + + + Sigla da UF + Informar EX para operações com o exterior. + + + + + Código do país + + + + + + + + + + + Nome do país + + + + + + + + + + + Telefone + + + + + + + Tipo Dados do Local de Origem ou Destino + + + + + Código do município (utilizar a tabela do IBGE) + + + + + Nome do município + + + + + + + + + + + Sigla da UF + + + + + + + Tipo Dados do Local de Retirada ou Entrega + + + + + + Número do CNPJ + + + + + Número do CPF + + + + + + Razão Social ou Nome + + + + + + + + + + + Logradouro + + + + + + + + + + + Número + + + + + + + + + + + Complemento + + + + + + + + + + + Bairro + + + + + + + + + + + Código do município (utilizar a tabela do IBGE) + Informar 9999999 para operações com o exterior. + + + + + Nome do município + Informar EXTERIOR para operações com o exterior. + + + + + + + + + + + Sigla da UF + Informar EX para operações com o exterior. + + + + + + + Tipo Dados do Imposto CT-e + + + + + Prestação sujeito à tributação normal do ICMS + + + + + + classificação Tributária do Serviço + 00 - tributação normal ICMS + + + + + + + + + + + Valor da BC do ICMS + + + + + Alíquota do ICMS + + + + + Valor do ICMS + + + + + + + + Prestação sujeito à tributação com redução de BC do ICMS + + + + + + Classificação Tributária do serviço + 20 - tributação com BC reduzida do ICMS + + + + + + + + + + + Percentual de redução da BC + + + + + Valor da BC do ICMS + + + + + Alíquota do ICMS + + + + + Valor do ICMS + + + + + + + + ICMS Isento, não Tributado ou diferido + + + + + + Classificação Tributária do Serviço + Preencher com: + 40 - ICMS isenção; + 41 - ICMS não tributada; + 51 - ICMS diferido + + + + + + + + + + + + + + + + Tributação pelo ICMS60 - ICMS cobrado por substituição tributária.Responsabilidade do recolhimento do ICMS atribuído ao tomador ou 3º por ST + + + + + + Classificação Tributária do Serviço + 60 - ICMS cobrado por substituição tributária + + + + + + + + + + + Valor da BC do ICMS ST retido + Valor do frete sobre o qual será calculado o ICMS a ser substituído na Prestação. + + + + + Valor do ICMS ST retido + Resultado da multiplicação do “vBCSTRet” x “pICMSSTRet” – que será valor do ICMS a ser retido pelo Substituto. Podendo o valor do ICMS a ser retido efetivamente, sofrer ajustes conforme a opção tributaria do transportador substituído. + + + + + Alíquota do ICMS + Percentual de Alíquota incidente na prestação de serviço de transporte. + + + + + Valor do Crédito outorgado/Presumido + Preencher somente quando o transportador substituído, for optante pelo crédito outorgado previsto no Convênio 106/96 e corresponde ao percentual de 20% do valor do ICMS ST retido. + + + + + + + + ICMS Outros + + + + + + Classificação Tributária do Serviço + 90 - ICMS outros + + + + + + + + + + + Percentual de redução da BC + + + + + Valor da BC do ICMS + + + + + Alíquota do ICMS + + + + + Valor do ICMS + + + + + Valor do Crédito Outorgado/Presumido + + + + + + + + ICMS devido à UF de origem da prestação, quando diferente da UF do emitente + + + + + + Classificação Tributária do Serviço + 90 - ICMS Outra UF + + + + + + + + + + + Percentual de redução da BC + + + + + Valor da BC do ICMS + + + + + Alíquota do ICMS + + + + + Valor do ICMS devido outra UF + + + + + + + + Simples Nacional + + + + + + Classificação Tributária do Serviço + 90 - ICMS Simples Nacional + + + + + + + + + + + Indica se o contribuinte é Simples Nacional 1=Sim + + + + + + + + + + + + + + + + Tipo Dados do Imposto para CT-e OS + + + + + Prestação sujeito à tributação normal do ICMS + + + + + + classificação Tributária do Serviço + 00 - tributação normal ICMS + + + + + + + + + + + Valor da BC do ICMS + + + + + Alíquota do ICMS + + + + + Valor do ICMS + + + + + + + + Prestação sujeito à tributação com redução de BC do ICMS + + + + + + Classificação Tributária do serviço + 20 - tributação com BC reduzida do ICMS + + + + + + + + + + + Percentual de redução da BC + + + + + Valor da BC do ICMS + + + + + Alíquota do ICMS + + + + + Valor do ICMS + + + + + + + + ICMS Isento, não Tributado ou diferido + + + + + + Classificação Tributária do Serviço + Preencher com: + 40 - ICMS isenção; + 41 - ICMS não tributada; + 51 - ICMS diferido + + + + + + + + + + + + + + + + ICMS Outros + + + + + + Classificação Tributária do Serviço + 90 - Outros + + + + + + + + + + + Percentual de redução da BC + + + + + Valor da BC do ICMS + + + + + Alíquota do ICMS + + + + + Valor do ICMS + + + + + Valor do Crédito Outorgado/Presumido + + + + + + + + ICMS devido à UF de origem da prestação, quando diferente da UF do emitente + + + + + + Classificação Tributária do Serviço + 90 - ICMS Outra UF + + + + + + + + + + + Percentual de redução da BC + + + + + Valor da BC do ICMS + + + + + Alíquota do ICMS + + + + + Valor do ICMS devido outra UF + + + + + + + + Simples Nacional + + + + + + Classificação Tributária do Serviço + 90 - ICMS Simples Nacional + + + + + + + + + + + Indica se o contribuinte é Simples Nacional 1=Sim + + + + + + + + + + + + + + + + Tipo Dados Unidade de Transporte + + + + + Tipo da Unidade de Transporte + 1 - Rodoviário Tração +2 - Rodoviário Reboque +3 - Navio +4 - Balsa +5 - Aeronave +6 - Vagão +7 - Outros + + + + + Identificação da Unidade de Transporte + Informar a identificação conforme o tipo de unidade de transporte. +Por exemplo: para rodoviário tração ou reboque deverá preencher com a placa do veículo. + + + + + + Lacres das Unidades de Transporte + + + + + + Número do lacre + + + + + + + + + + + + + + Informações das Unidades de Carga (Containeres/ULD/Outros) + Dispositivo de carga utilizada (Unit Load Device - ULD) significa todo tipo de contêiner de carga, vagão, contêiner de avião, palete de aeronave com rede ou palete de aeronave com rede sobre um iglu. + + + + + Quantidade rateada (Peso,Volume) + + + + + + + Tipo Dados Unidade de Carga + + + + + Tipo da Unidade de Carga + 1 - Container +2 - ULD +3 - Pallet +4 - Outros + + + + + Identificação da Unidade de Carga + Informar a identificação da unidade de carga, por exemplo: número do container. + + + + + Lacres das Unidades de Carga + + + + + + Número do lacre + + + + + + + + + + + + + + Quantidade rateada (Peso,Volume) + + + + + + + Tipo Dados da Responsável Técnico + + + + + CNPJ da pessoa jurídica responsável técnica pelo sistema utilizado na emissão do documento fiscal eletrônico + Informar o CNPJ da pessoa jurídica desenvolvedora do sistema utilizado na emissão do documento fiscal eletrônico. + + + + + Nome da pessoa a ser contatada + Informar o nome da pessoa a ser contatada na empresa desenvolvedora do sistema utilizado na emissão do documento fiscal eletrônico. No caso de pessoa física, informar o respectivo nome. + + + + + + + + + + + Email da pessoa jurídica a ser contatada + + + + + Telefone da pessoa jurídica a ser contatada + Preencher com o Código DDD + número do telefone. + + + + + + + + + + + + Identificador do código de segurança do responsável técnico + Identificador do CSRT utilizado para geração do hash + + + + + + + + + + Hash do token do código de segurança do responsável técnico + O hashCSRT é o resultado das funções SHA-1 e base64 do token CSRT fornecido pelo fisco + chave de acesso do DF-e. (Implementação em futura NT) + +Observação: 28 caracteres são representados no schema como 20 bytes do tipo base64Binary + + + + + + + + + + + + + Tipo CFOP + + + + + + + + + Tipo Código da Lista de Serviços LC 116/2003 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tipo Número do Container + + + + + + + + + + + Tipo Documento Associado + + + + + + + + + + + + + + + Tipo Email + + + + + + + + + + + Tipo Finalidade da CT-e + + + + + + + + + + + Tipo Identificador de controle do envio do lote. Número seqüencial auto-incremental, de controle correspondente ao identificador único do lote enviado. A responsabilidade de gerar e controlar esse número é do próprio contribuinte. + + + + + + + + + Tipo Modelo do Documento + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tipo Modal transporte Outros Serviços + + + + + + + + + + + + Tipo Modal transporte + + + + + + + + + + + + + + Tipo RNTRC - Registro Nacional Transportadores Rodoviários de Carga + + + + + + + + + Tipo CIOT - Código Identificador da Operação de Transporte + + + + + + + + + Tipo Código Regime Tributário + + + + + + + + + + + + + + Tipo processo de emissão do CT-e + + + + + + + + + + Tipo hora + + + + + + + + + Tipo Versão do CT-e - 4.00 + + + + + + + diff --git a/CTe.AppTeste/schemas/cte_v4.00.xsd b/CTe.AppTeste/schemas/cte_v4.00.xsd new file mode 100644 index 000000000..b0cb9c1a9 --- /dev/null +++ b/CTe.AppTeste/schemas/cte_v4.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Conhecimento de Transporte Eletrônico + + + diff --git a/CTe.AppTeste/schemas/distCTePorUF_v3.00.xsd b/CTe.AppTeste/schemas/distCTePorUF_v3.00.xsd new file mode 100644 index 000000000..e70c9f3e4 --- /dev/null +++ b/CTe.AppTeste/schemas/distCTePorUF_v3.00.xsd @@ -0,0 +1,9 @@ + + + + + + solicitação de distribuição de CT-e para o Ambiente Nacional + + + diff --git a/CTe.AppTeste/schemas/distCTe_v3.00.xsd b/CTe.AppTeste/schemas/distCTe_v3.00.xsd new file mode 100644 index 000000000..fc98f85de --- /dev/null +++ b/CTe.AppTeste/schemas/distCTe_v3.00.xsd @@ -0,0 +1,9 @@ + + + + + + solicitação de distribuição de CT-e para o Ambiente Nacional + + + diff --git a/CTe.AppTeste/schemas/distChCTe_v3.00.xsd b/CTe.AppTeste/schemas/distChCTe_v3.00.xsd new file mode 100644 index 000000000..828d15e89 --- /dev/null +++ b/CTe.AppTeste/schemas/distChCTe_v3.00.xsd @@ -0,0 +1,9 @@ + + + + + + solicitação de distribuição de dados de controle dos DF-e + + + diff --git a/CTe.AppTeste/schemas/evCCeCTe_v4.00.xsd b/CTe.AppTeste/schemas/evCCeCTe_v4.00.xsd new file mode 100644 index 000000000..92e786909 --- /dev/null +++ b/CTe.AppTeste/schemas/evCCeCTe_v4.00.xsd @@ -0,0 +1,98 @@ + + + + + + + Schema XML de validação do evento carta de correção +110110 + + + + + + Descrição do Evento - “Carta de Correção” + + + + + + + + + + + + Grupo de Informações de Correção + + + + + + Indicar o grupo de informações que pertence o campoAlterado. Ex: ide + + + + + + + + + + + + Nome do campo modificado do CT-e Original. + + + + + + + + + + + + Valor correspondente à alteração. + + + + + + + + + + + + Preencher com o indice do item alterado caso a alteração ocorra em uma lista. +OBS: O indice inicia sempre em 1 + + + + + + + + + + + + + + Condições de uso da Carta de Correção, + informar a literal :Condições de uso da Carta de Correção, informar a literal: +“A Carta de Correção é disciplinada pelo Art. 58-B do CONVÊNIO/SINIEF 06/89: Fica permitida a utilização de carta de correção, para regularização de erro ocorrido na emissão de documentos fiscais relativos à prestação de serviço de transporte, desde que o erro não esteja relacionado com: I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, quantidade, valor da prestação;II - a correção de dados cadastrais que implique mudança do emitente, tomador, remetente ou do destinatário;III - a data de emissão ou de saída.” (texto com acentuação) ou “A Carta de Correcao e disciplinada pelo Art. 58-B do CONVENIO/SINIEF 06/89: Fica permitida a utilizacao de carta de correcao, para regularizacao de erro ocorrido na emissao de documentos fiscais relativos a prestacao de servico de transporte, desde que o erro nao esteja relacionado com: I - as variaveis que determinam o valor do imposto tais como: base de calculo, aliquota, diferenca de preco, quantidade, valor da prestacao;II - a correcao de dados cadastrais que implique mudança do emitente, tomador, remetente ou do destinatario;III - a data de emissao ou de saida.” (texto sem acentuação) + + + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/evCECTe_v3.00.xsd b/CTe.AppTeste/schemas/evCECTe_v3.00.xsd new file mode 100644 index 000000000..80b202309 --- /dev/null +++ b/CTe.AppTeste/schemas/evCECTe_v3.00.xsd @@ -0,0 +1,108 @@ + + + + + + + Schema XML de validação do evento comprovante de entrega eletrônico do CT-e +110180 + + + + + + Descrição do Evento - “Comprovante de Entrega do CT-e” + + + + + + + + + + + Número do Protocolo de autorização do CT-e + + + + + Data e hora de conclusão da entrega da NF-e + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + Número do Documento de identificação da pessoa que recebeu a entrega + + + + + + + + + + + Nome da pessoa que recebeu a entrega + + + + + + + + + + + Latitude do ponto de entrega + + + + + Longitude do ponto de entrega + + + + + Hash (SHA1) no formato Base64 resultante da concatenação: Chave de acesso do CT-e + Base64 da imagem capturada da entrega (Exemplo: imagem capturada da assinatura eletrônica, digital do recebedor, foto, etc) + O hashCSRT é o resultado das funções SHA-1 e base64 do token CSRT fornecido pelo fisco + chave de acesso do DF-e. (Implementação em futura NT) +Observação: 28 caracteres são representados no schema como 20 bytes do tipo base64Binary + + + + + + + + + + Data e hora de geração do hash entrega + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + Grupo de informações das NF-e que foram entregues ao Destinatário + Informar o grupo apenas para CT-e com tipo de serviço Normal + + + + + + Chave de acesso da NF-e entregue + + + + + + + + + diff --git a/CTe.AppTeste/schemas/evCECTe_v4.00.xsd b/CTe.AppTeste/schemas/evCECTe_v4.00.xsd new file mode 100644 index 000000000..17f9c36c4 --- /dev/null +++ b/CTe.AppTeste/schemas/evCECTe_v4.00.xsd @@ -0,0 +1,108 @@ + + + + + + + Schema XML de validação do evento comprovante de entrega eletrônico do CT-e +110180 + + + + + + Descrição do Evento - “Comprovante de Entrega do CT-e” + + + + + + + + + + + Número do Protocolo de autorização do CT-e + + + + + Data e hora de conclusão da entrega da NF-e + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + Número do Documento de identificação da pessoa que recebeu a entrega + + + + + + + + + + + Nome da pessoa que recebeu a entrega + + + + + + + + + + + Latitude do ponto de entrega + + + + + Longitude do ponto de entrega + + + + + Hash (SHA1) no formato Base64 resultante da concatenação: Chave de acesso do CT-e + Base64 da imagem capturada da entrega (Exemplo: imagem capturada da assinatura eletrônica, digital do recebedor, foto, etc) + O hashCSRT é o resultado das funções SHA-1 e base64 do token CSRT fornecido pelo fisco + chave de acesso do DF-e. (Implementação em futura NT) +Observação: 28 caracteres são representados no schema como 20 bytes do tipo base64Binary + + + + + + + + + + Data e hora de geração do hash entrega + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + Grupo de informações das NF-e que foram entregues ao Destinatário + Informar o grupo apenas para CT-e com tipo de serviço Normal + + + + + + Chave de acesso da NF-e entregue + + + + + + + + + diff --git a/CTe.AppTeste/schemas/evCTeAnulado_v3.00.xsd b/CTe.AppTeste/schemas/evCTeAnulado_v3.00.xsd new file mode 100644 index 000000000..95662873f --- /dev/null +++ b/CTe.AppTeste/schemas/evCTeAnulado_v3.00.xsd @@ -0,0 +1,39 @@ + + + + + + Schema XML de validação do evento de marcação do CT-e de Anulação 240150 + + + + + + Descrição do Evento - "CT-e Anulado" + + + + + + + + + + + Informar a chave de acesso do CT-e de Anulação de Valores que referenciou o CT-e Original + + + + + Data e hora de processamento do CT-e de Anulação, no formato AAAA-MM-DDTHH:MM:SS TZD. Deve ser preenchida com data e hora da gravação no Banco em caso de Confirmação. Em caso de Rejeição, com data e hora do recebimento do Lote de CT-e enviado. + + + + + Número do Protocolo de Autorização do CT-e de Anulação. 1 posição tipo de autorizador (1 – Secretaria de Fazenda Estadual, 3 - SEFAZ Virtual RS, 5 - SEFAZ Virtual SP ); 2 posições ano; 10 seqüencial no ano. + + + + + + diff --git a/CTe.AppTeste/schemas/evCTeAutorizadoMDFe_v3.00.xsd b/CTe.AppTeste/schemas/evCTeAutorizadoMDFe_v3.00.xsd new file mode 100644 index 000000000..a52772d4d --- /dev/null +++ b/CTe.AppTeste/schemas/evCTeAutorizadoMDFe_v3.00.xsd @@ -0,0 +1,97 @@ + + + + + + Schema XML de validação do evento MDF-e Autorizado 310610 + + + + + + Descrição do Evento - "MDF-e Autorizado" + + + + + + + + + + + Dados do MDF-e + + + + + + Chave de Acesso do MDF-e + + + + + Modal do MDF-e + + + + + + + + + + + + + + Data de Emissão do MDF-e, formato AAAA-MM-DDThh:mm:ss TZD + + + + + Número do Protocolo de Status do MDF-e. 1 posição tipo de autorizador (9- Ambiente Autorizador do MDF-e ); 2 posições ano; 10 seqüencial no ano. + + + + + Data e hora de processamento, no formato AAAA-MM-DDTHH:MM:SS TZD. + + + + + + + + Dados do Emitente do MDF-e + + + + + + CNPJ do emitente + + + + + IE do emitente + + + + + Razão social ou Nome do Emitente + + + + + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/evCTeCanceladoMDFe_v3.00.xsd b/CTe.AppTeste/schemas/evCTeCanceladoMDFe_v3.00.xsd new file mode 100644 index 000000000..024ed93f7 --- /dev/null +++ b/CTe.AppTeste/schemas/evCTeCanceladoMDFe_v3.00.xsd @@ -0,0 +1,43 @@ + + + + + + Schema XML de validação do evento MDF-e Cancelado 310611 + + + + + + Descrição do Evento - "MDF-e Cancelado" + + + + + + + + + + + Dados do MDF-e + + + + + + Chave de Acesso do MDF-e + + + + + Número do Protocolo de Cancelamento do MDF-e. 1 posição tipo de autorizador (9- Ambiente Autorizador do MDF-e ); 2 posições ano; 10 seqüencial no ano. + + + + + + + + + diff --git a/CTe.AppTeste/schemas/evCTeComplementar_v3.00.xsd b/CTe.AppTeste/schemas/evCTeComplementar_v3.00.xsd new file mode 100644 index 000000000..db4f2d44a --- /dev/null +++ b/CTe.AppTeste/schemas/evCTeComplementar_v3.00.xsd @@ -0,0 +1,39 @@ + + + + + + Schema XML de validação do evento de marcação Autorizado CT-e Complementar 240130 + + + + + + Descrição do Evento - “Autorizado CT-e Complementar” + + + + + + + + + + + Informar a chave de acesso do CT-e Complementar que referenciou o CT-e Original + + + + + Data e hora de processamento do CT-e Complementar, no formato AAAA-MM-DDTHH:MM:SS TZD. Deve ser preenchida com data e hora da gravação no Banco em caso de Confirmação. Em caso de Rejeição, com data e hora do recebimento do Lote de CT-e enviado. + + + + + Número do Protocolo de Autorização do CT-e Complementar. 1 posição tipo de autorizador (1 – Secretaria de Fazenda Estadual, 3 - SEFAZ Virtual RS, 5 - SEFAZ Virtual SP ); 2 posições ano; 10 seqüencial no ano. + + + + + + diff --git a/CTe.AppTeste/schemas/evCTeLiberaEPEC_v3.00.xsd b/CTe.AppTeste/schemas/evCTeLiberaEPEC_v3.00.xsd new file mode 100644 index 000000000..b91ae0c18 --- /dev/null +++ b/CTe.AppTeste/schemas/evCTeLiberaEPEC_v3.00.xsd @@ -0,0 +1,36 @@ + + + + + + Schema XML de validação do evento de Liberação de EPEC 240160 + + + + + + Descrição do Evento - “Liberação EPEC” + + + + + + + + + + + Motivo da Liberação do Bloqueio da EPEC informado pela UF. + Norma referenciada, informações complementares, etc + + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/evCTeLiberaPrazoCanc_v3.00.xsd b/CTe.AppTeste/schemas/evCTeLiberaPrazoCanc_v3.00.xsd new file mode 100644 index 000000000..e2ad92ab5 --- /dev/null +++ b/CTe.AppTeste/schemas/evCTeLiberaPrazoCanc_v3.00.xsd @@ -0,0 +1,36 @@ + + + + + + Schema XML de validação do evento de Liberação do Prazo de Cancelamento 240170 + + + + + + Descrição do Evento - “Liberação Prazo Cancelamento” + + + + + + + + + + + Motivo da Liberação do Prazo de Cancelamento informado pela UF. + Norma referenciada, informações complementares, etc + + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/evCTeMultimodal_v3.00.xsd b/CTe.AppTeste/schemas/evCTeMultimodal_v3.00.xsd new file mode 100644 index 000000000..409c8c1cd --- /dev/null +++ b/CTe.AppTeste/schemas/evCTeMultimodal_v3.00.xsd @@ -0,0 +1,39 @@ + + + + + + Schema XML de validação do evento de marcação Autorizado Serviço Vinculado a Multimodal 440160 + + + + + + Descrição do Evento - “Autorizado Serviço Vinculado a Multimodal” + + + + + + + + + + + Informar a chave de acesso do CT-e que referenciou o CT-e Multimodal + + + + + Data e hora de processamento do CT-e que referenciou o Multimodal, no formato AAAA-MM-DDTHH:MM:SS TZD. Deve ser preenchida com data e hora da gravação no Banco em caso de Confirmação. Em caso de Rejeição, com data e hora do recebimento do Lote de CT-e enviado. + + + + + Número do Protocolo de Autorização do CT-e que referenciou o Multimodal. 1 posição tipo de autorizador (1 – Secretaria de Fazenda Estadual, 3 - SEFAZ Virtual RS, 5 - SEFAZ Virtual SP ); 2 posições ano; 10 seqüencial no ano. + + + + + + diff --git a/CTe.AppTeste/schemas/evCTeRedespachoInter_v3.00.xsd b/CTe.AppTeste/schemas/evCTeRedespachoInter_v3.00.xsd new file mode 100644 index 000000000..d73c9c636 --- /dev/null +++ b/CTe.AppTeste/schemas/evCTeRedespachoInter_v3.00.xsd @@ -0,0 +1,39 @@ + + + + + + Schema XML de validação do evento de marcação Autorizado Redespacho Intermediário 440140 + + + + + + Descrição do Evento - “Autorizado Redespacho Intermediário” + + + + + + + + + + + Informar a chave de acesso do CT-e de Redespacho Intermediário que referenciou o CT-e + + + + + Data e hora de processamento do CT-e de Redespacho Intermediário que referenciou o CT-e, no formato AAAA-MM-DDTHH:MM:SS TZD. Deve ser preenchida com data e hora da gravação no Banco em caso de Confirmação. Em caso de Rejeição, com data e hora do recebimento do Lote de CT-e enviado. + + + + + Número do Protocolo de Autorização do CT-e Redespacho Intermediário que referenciou o CT-e. 1 posição tipo de autorizador (1 – Secretaria de Fazenda Estadual, 3 - SEFAZ Virtual RS, 5 - SEFAZ Virtual SP ); 2 posições ano; 10 seqüencial no ano. + + + + + + diff --git a/CTe.AppTeste/schemas/evCTeRedespacho_v3.00.xsd b/CTe.AppTeste/schemas/evCTeRedespacho_v3.00.xsd new file mode 100644 index 000000000..d68d8bde3 --- /dev/null +++ b/CTe.AppTeste/schemas/evCTeRedespacho_v3.00.xsd @@ -0,0 +1,39 @@ + + + + + + Schema XML de validação do evento de marcação Autorizado Redespacho 440130 + + + + + + Descrição do Evento - “Autorizado Redespacho” + + + + + + + + + + + Informar a chave de acesso do CT-e de Redespacho que referenciou o CT-e + + + + + Data e hora de processamento do CT-e de Redespacho que referenciou o CT-e, no formato AAAA-MM-DDTHH:MM:SS TZD. Deve ser preenchida com data e hora da gravação no Banco em caso de Confirmação. Em caso de Rejeição, com data e hora do recebimento do Lote de CT-e enviado. + + + + + Número do Protocolo de Autorização do CT-e Redespacho que referenciou o CT-e. 1 posição tipo de autorizador (1 – Secretaria de Fazenda Estadual, 3 - SEFAZ Virtual RS, 5 - SEFAZ Virtual SP ); 2 posições ano; 10 seqüencial no ano. + + + + + + diff --git a/CTe.AppTeste/schemas/evCTeRegPassagemAuto_v3.00.xsd b/CTe.AppTeste/schemas/evCTeRegPassagemAuto_v3.00.xsd new file mode 100644 index 000000000..9abbfa75c --- /dev/null +++ b/CTe.AppTeste/schemas/evCTeRegPassagemAuto_v3.00.xsd @@ -0,0 +1,149 @@ + + + + + + Schema XML de validação do evento de Registro de Passagem Automatico do CT-e 510620 + + + + + + Descrição do Evento - “Registro de Passagem Automático” + + + + + + + + + + + Tipo de Transmissão: N – Normal; R – Retransmissão; A - Atraso Processamento + + + + + + + + + + + + + Informações do Registro de Passagem + + + + + + Informar o codigo da UF onde foi registrada a passagem. Deverá ser utilizada a tabela do IBGE. + Informar 'EX' para operações com o exterior. + + + + + Codigo Identificação do Equipamento (SLD, OCR) ou 99999 para tpEquip=3 + + + + + + + + + + + Nome Identificação do Equiipamento (SLD, OCR) ou Sem Equipamento para tpEquip=3 + + + + + + + + + + + Tipo de Equipamento: +1 – SLD (Antena); 2 – OCR; 3 - Leitura Sen Equipamento + + + + + + + + + + + + + Placa do Veiculo de Tracao + + + + + + + + Sentido da Passagem: +E – Entrada; S – Saída; I - Indeterminado + + + + + + + + + + + + + + Data e hora do Registro de Passagem + Formato AAAA-MM-DDTHH:MM:DD + + + + + Latitude do ponto geográfico onde foi registrada a passagem + + + + + Latitude do ponto geográfico onde foi registrada a passagem + + + + + NSU do registro na base do ONE + + + + + + + + Chave de Acesso do MDF-e que originou o registro + + + + + Informações complementares do Fisco de Registro de Passagem + Norma referenciada, informações complementares, etc + + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/evCTeRegPassagem_v3.00.xsd b/CTe.AppTeste/schemas/evCTeRegPassagem_v3.00.xsd new file mode 100644 index 000000000..9a61cd06b --- /dev/null +++ b/CTe.AppTeste/schemas/evCTeRegPassagem_v3.00.xsd @@ -0,0 +1,145 @@ + + + + + + Schema XML de validação do evento de Registro de Passagem do CT-e 310620 + + + + + + Descrição do Evento - “Registro de Passagem” + + + + + + + + + + + Informar o código da UF onde foi registrada a passagem. Deverá ser utilizada a tabela do IBGE. + Informar 'EX' para operações com o exterior. + + + + + Código da Unidade Fiscal + + + + + + + + + + Nome da Unidade Fiscal + + + + + + + + + + + Data e hora do Registro de Passagem + Formato AAAA-MM-DDTHH:MM:DD + + + + + Identificação do funcionário responsável pelo registro de passagem + + + + + Nome do funcionário responsável pelo registro de passagem + + + + + + + + + + + Tipo de Transmissão: N – Normal; A – Atrasada + + + + + + + + + + + + Sentido da Passagem: +E – Entrada; S – Saída; I - Indeterminado + + + + + + + + + + + + + + Latitude do ponto geográfico onde foi registrada a passagem + + + + + Latitude do ponto geográfico onde foi registrada a passagem + + + + + Placa do Veiculo de Tracao + + + + + + + + Segundo código de barras do CT-e em contingência + + + + + + + + + + Chave de Acesso do MDF-e que originou o registro + + + + + Informações complementares do Fisco de Registro de Passagem + Norma referenciada, informações complementares, etc + + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/evCTeSubcontratacao_v3.00.xsd b/CTe.AppTeste/schemas/evCTeSubcontratacao_v3.00.xsd new file mode 100644 index 000000000..fd2171b67 --- /dev/null +++ b/CTe.AppTeste/schemas/evCTeSubcontratacao_v3.00.xsd @@ -0,0 +1,39 @@ + + + + + + Schema XML de validação do evento de marcação Autorizado Subcontratação 440150 + + + + + + Descrição do Evento - “Autorizado Subcontratação” + + + + + + + + + + + Informar a chave de acesso do CT-e de Subcontratação que referenciou o CT-e + + + + + Data e hora de processamento do CT-e de Subcontratação que referenciou o CT-e, no formato AAAA-MM-DDTHH:MM:SS TZD. Deve ser preenchida com data e hora da gravação no Banco em caso de Confirmação. Em caso de Rejeição, com data e hora do recebimento do Lote de CT-e enviado. + + + + + Número do Protocolo de Autorização do CT-e de Subcontratação que referenciou o CT-e. 1 posição tipo de autorizador (1 – Secretaria de Fazenda Estadual, 3 - SEFAZ Virtual RS, 5 - SEFAZ Virtual SP ); 2 posições ano; 10 seqüencial no ano. + + + + + + diff --git a/CTe.AppTeste/schemas/evCTeSubstituido_v3.00.xsd b/CTe.AppTeste/schemas/evCTeSubstituido_v3.00.xsd new file mode 100644 index 000000000..0a258f3e0 --- /dev/null +++ b/CTe.AppTeste/schemas/evCTeSubstituido_v3.00.xsd @@ -0,0 +1,39 @@ + + + + + + Schema XML de validação do evento de marcação do CT-e de Substituição 240140 + + + + + + Descrição do Evento - "CT-e Substituido" + + + + + + + + + + + Informar a chave de acesso do CT-e de Substituicao que referenciou o CT-e Original + + + + + Data e hora de processamento do CT-e de Substituição, no formato AAAA-MM-DDTHH:MM:SS TZD. Deve ser preenchida com data e hora da gravação no Banco em caso de Confirmação. Em caso de Rejeição, com data e hora do recebimento do Lote de CT-e enviado. + + + + + Número do Protocolo de Autorização do CT-e de Substituição. 1 posição tipo de autorizador (1 – Secretaria de Fazenda Estadual, 3 - SEFAZ Virtual RS, 5 - SEFAZ Virtual SP ); 2 posições ano; 10 seqüencial no ano. + + + + + + diff --git a/CTe.AppTeste/schemas/evCancCECTe_v3.00.xsd b/CTe.AppTeste/schemas/evCancCECTe_v3.00.xsd new file mode 100644 index 000000000..6f557453c --- /dev/null +++ b/CTe.AppTeste/schemas/evCancCECTe_v3.00.xsd @@ -0,0 +1,36 @@ + + + + + + + Schema XML de validação do evento cancelamento do comprovante de entrega eletrônico do CT-e +110181 + + + + + + Descrição do Evento - “Cancelamento do Comprovante de Entrega do CT-e” + + + + + + + + + + + Número do Protocolo de autorização do CT-e + + + + + Número do Protocolo de autorização do evento a ser cancelado + + + + + + diff --git a/CTe.AppTeste/schemas/evCancCECTe_v4.00.xsd b/CTe.AppTeste/schemas/evCancCECTe_v4.00.xsd new file mode 100644 index 000000000..0a9f3ef59 --- /dev/null +++ b/CTe.AppTeste/schemas/evCancCECTe_v4.00.xsd @@ -0,0 +1,36 @@ + + + + + + + Schema XML de validação do evento cancelamento do comprovante de entrega eletrônico do CT-e +110181 + + + + + + Descrição do Evento - “Cancelamento do Comprovante de Entrega do CT-e” + + + + + + + + + + + Número do Protocolo de autorização do CT-e + + + + + Número do Protocolo de autorização do evento a ser cancelado + + + + + + diff --git a/CTe.AppTeste/schemas/evCancCTeComplementar_v3.00.xsd b/CTe.AppTeste/schemas/evCancCTeComplementar_v3.00.xsd new file mode 100644 index 000000000..44796b9f6 --- /dev/null +++ b/CTe.AppTeste/schemas/evCancCTeComplementar_v3.00.xsd @@ -0,0 +1,39 @@ + + + + + + Schema XML de validação do evento de marcação Cancelado CT-e Complementar 240131 + + + + + + Descrição do Evento - “Cancelado CT-e Complementar” + + + + + + + + + + + Informar a chave de acesso do CT-e Complementar que referenciou o CT-e Original + + + + + Data e hora de recebimento do Cancelamento do CT-e Complementar, no formato AAAA-MM-DDTHH:MM:SS TZD. Deve ser preenchida com data e hora da gravação no Banco em caso de Confirmação. Em caso de Rejeição, com data e hora do recebimento do Lote de CT-e enviado. + + + + + Número do Protocolo de Homologação do Cancelamento do CT-e Complementar. 1 posição tipo de autorizador (1 – Secretaria de Fazenda Estadual, 3 - SEFAZ Virtual RS, 5 - SEFAZ Virtual SP ); 2 posições ano; 10 seqüencial no ano. + + + + + + diff --git a/CTe.AppTeste/schemas/evCancCTe_v4.00.xsd b/CTe.AppTeste/schemas/evCancCTe_v4.00.xsd new file mode 100644 index 000000000..af1f280bf --- /dev/null +++ b/CTe.AppTeste/schemas/evCancCTe_v4.00.xsd @@ -0,0 +1,36 @@ + + + + + + + Schema XML de validação do evento do cancelamento +110111 + + + + + + Descrição do Evento - “Cancelamento” + + + + + + + + + + + Número do Protocolo de Status do CT-e + + + + + Justificativa do Cancelamento + + + + + + diff --git a/CTe.AppTeste/schemas/evCancIECTe_v4.00.xsd b/CTe.AppTeste/schemas/evCancIECTe_v4.00.xsd new file mode 100644 index 000000000..20ce3b5ff --- /dev/null +++ b/CTe.AppTeste/schemas/evCancIECTe_v4.00.xsd @@ -0,0 +1,36 @@ + + + + + + + Schema XML de validação do evento cancelamento do insucesso de entrega eletrônico do CT-e +110191 + + + + + + Descrição do Evento - “Cancelamento do Insucesso de Entrega do CT-e” + + + + + + + + + + + Número do Protocolo de autorização do CT-e + + + + + Número do Protocolo de autorização do evento a ser cancelado + + + + + + diff --git a/CTe.AppTeste/schemas/evCancPrestDesacordo.xsd b/CTe.AppTeste/schemas/evCancPrestDesacordo.xsd new file mode 100644 index 000000000..a3404d254 --- /dev/null +++ b/CTe.AppTeste/schemas/evCancPrestDesacordo.xsd @@ -0,0 +1,32 @@ + + + + + + + Schema XML de validação do evento Cancelamento Prestação do Serviço em Desacordo 610111 + + + + + + Descrição do Evento - “Cancelamento Prestação do Serviço em Desacordo” + + + + + + + + + + + + Protocolo do evento que será cancelado + Informar o número do protocolo de autorização do evento de prestação de serviço em desacordo que será cancelado + + + + + + diff --git a/CTe.AppTeste/schemas/evEPECCTe_v3.00.xsd b/CTe.AppTeste/schemas/evEPECCTe_v3.00.xsd index e5f633994..5bf2bae5d 100644 --- a/CTe.AppTeste/schemas/evEPECCTe_v3.00.xsd +++ b/CTe.AppTeste/schemas/evEPECCTe_v3.00.xsd @@ -1,4 +1,5 @@ + @@ -29,6 +30,11 @@ Valor do ICMS + + + Valor do ICMS ST + + Valor Total da Prestação do Serviço @@ -140,6 +146,15 @@ Informar os zeros não significativos. + + + Data e hora de emissão do CT-e + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + diff --git a/CTe.AppTeste/schemas/evEPECCTe_v4.00.xsd b/CTe.AppTeste/schemas/evEPECCTe_v4.00.xsd new file mode 100644 index 000000000..be7452cdf --- /dev/null +++ b/CTe.AppTeste/schemas/evEPECCTe_v4.00.xsd @@ -0,0 +1,161 @@ + + + + + + + Schema XML de validação do evento de emissão prévia de emissão em contingência +110113 + + + + + + Descrição do Evento - “EPEC” + + + + + + + + + + + Justificativa da Entrada em Contingencia + + + + + Valor do ICMS + + + + + Valor do ICMS ST + + + + + Valor Total da Prestação do Serviço + Pode conter zeros quando o CT-e for de complemento de ICMS + + + + + Valor total da carga + Dever ser informado para todos os modais, com exceção para o Dutoviário. + + + + + Indicador do "papel" do tomador do serviço no CT-e + + + + + + Tomador do Serviço + Preencher com: +0-Remetente; +1-Expedidor;2-Recebedor;3-Destinatário +;4 - Outros + + + + + + + + + + + + + + + UF do tomador do serviço + Informar 'EX' para operações com o exterior. + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. +Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + Inscrição Estadual + Informar a IE do tomador ou ISENTO se tomador é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o tomador não seja contribuinte do ICMS não informar o conteúdo. + + + + + + + + Modal + Preencher com: + +01-Rodoviário; + +02-Aéreo; +03-Aquaviário; + +04-Ferroviário; + +05-Dutoviário; +06-Multimodal; + + + + + UF do início da prestação + Informar 'EX' para operações com o exterior. + + + + + UF do término da prestação + Informar 'EX' para operações com o exterior. + + + + + Tipo do CT-e - Aceitar apenas Tipo Normal = 0 + Preencher com: + 0 - CT-e Normal; + 1 - CT-e de Complemento de Valores; 2 - CT-e de Anulação; + 3 - CT-e Substituto + + + + + + + + + + + + Data e hora de emissão do CT-e + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + + diff --git a/CTe.AppTeste/schemas/evGTV_v3.00.xsd b/CTe.AppTeste/schemas/evGTV_v3.00.xsd index 8c6c20d49..e2a9a5c8c 100644 --- a/CTe.AppTeste/schemas/evGTV_v3.00.xsd +++ b/CTe.AppTeste/schemas/evGTV_v3.00.xsd @@ -1,4 +1,5 @@ + @@ -15,6 +16,7 @@ + diff --git a/CTe.AppTeste/schemas/evGTV_v4.00.xsd b/CTe.AppTeste/schemas/evGTV_v4.00.xsd new file mode 100644 index 000000000..9b9cd01a3 --- /dev/null +++ b/CTe.AppTeste/schemas/evGTV_v4.00.xsd @@ -0,0 +1,255 @@ + + + + + + + Schema XML de validação do evento informações da GTV 110170 + + + + + + Descrição do Evento - “Informações da GTV” + + + + + + + + + + + + Grupo de Informações das GTV + + + + + + Número da GTV + + + + + + + + + + + Identificador para diferenciar GTV de mesmo número (Usar número do AIDF ou identificador interno da empresa), + + + + + + + + + + + Série + + + + + + + + + + + Subsérie + + + + + + + + + + + Data de Emissão + Formato AAAA-MM-DD + + + + + Número Dígito Verificador + + + + + + + + + + + Quantidade de volumes/malotes + + + + + Informações das Espécies transportadas + + + + + + Tipo da Espécie + 1 - Numerário +2 - Cheque +3 - Moeda +4 - Outros + + + + + + + + + + + + + + Valor Transportada em Espécie indicada + + + + + + + + Informações do Remetente da GTV + + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. + Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + Inscrição Estadual + Informar a IE do remetente ou ISENTO se remetente é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o remetente não seja contribuinte do ICMS não informar o conteúdo. + + + + + + + + Sigla da UF + Informar EX para operações com o exterior. + + + + + Razão social ou nome do remetente + + + + + + + + + + + + + + Informações do Destinatário da GTV + + + + + + + Número do CNPJ + Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros. + Informar os zeros não significativos. + + + + + Número do CPF + Informar os zeros não significativos. + + + + + + Inscrição Estadual + Informar a IE do destinatário ou ISENTO se remetente é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o remetente não seja contribuinte do ICMS não informar o conteúdo. + + + + + + + + Sigla da UF + Informar EX para operações com o exterior. + + + + + Razão social ou nome do destinatário + + + + + + + + + + + + + + Placa do veículo + + + + + UF em que veículo está licenciado + Sigla da UF de licenciamento do veículo. + + + + + RNTRC do transportador + + + + + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/evIECTe_v4.00.xsd b/CTe.AppTeste/schemas/evIECTe_v4.00.xsd new file mode 100644 index 000000000..09266903f --- /dev/null +++ b/CTe.AppTeste/schemas/evIECTe_v4.00.xsd @@ -0,0 +1,126 @@ + + + + + + + Schema XML de validação do evento insucesso na entrega eletrônico do CT-e +110190 + + + + + + Descrição do Evento - “Insucesso na Entrega do CT-e” + + + + + + + + + + + Número do Protocolo de autorização do CT-e + + + + + Data e hora da tentativa da entrega da NF-e + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + Número da tentativa de entrega que não teve insucesso + + + + + + + + + + + Motivo do insucesso + 1- Recebedor não encontrado; +2- Recusa do recebedor; +3- Endereço inexistente; +4- Outros (exige informar justificativa) + + + + + + + + + + + + + + Justificativa do Motivo de insucesso, informar apenas para tpMotivo = 4 + + + + + + + + + + + Latitude do ponto de entrega + + + + + Longitude do ponto de entrega + + + + + Hash (SHA1) no formato Base64 resultante da concatenação: Chave de acesso do CT-e + Base64 da imagem capturada da tentativa com insucesso da entrega (Exemplo: foto do local que não recebeu a entrega ou do local sem recebedor) + O hashCSRT é o resultado das funções SHA-1 e base64 do token CSRT fornecido pelo fisco + chave de acesso do DF-e. (Implementação em futura NT) +Observação: 28 caracteres são representados no schema como 20 bytes do tipo base64Binary + + + + + + + + + + Data e hora de geração do hash tentativa entrega + Formato AAAA-MM-DDTHH:MM:DD TZD + + + + + + + + Grupo de informações das NF-e que não tiveram sucesso na entrega ao Destinatário + Informar o grupo apenas para CT-e com tipo de serviço Normal + + + + + + Chave de acesso da NF-e com insucesso na tentativa de entrega + + + + + + + + + diff --git a/CTe.AppTeste/schemas/evPrestDesacordo_v3.00.xsd b/CTe.AppTeste/schemas/evPrestDesacordo_v3.00.xsd index a0a570875..f6560fd3f 100644 --- a/CTe.AppTeste/schemas/evPrestDesacordo_v3.00.xsd +++ b/CTe.AppTeste/schemas/evPrestDesacordo_v3.00.xsd @@ -1,4 +1,5 @@ + @@ -15,6 +16,7 @@ + diff --git a/CTe.AppTeste/schemas/evPrestDesacordo_v4.00.xsd b/CTe.AppTeste/schemas/evPrestDesacordo_v4.00.xsd new file mode 100644 index 000000000..34542d33e --- /dev/null +++ b/CTe.AppTeste/schemas/evPrestDesacordo_v4.00.xsd @@ -0,0 +1,49 @@ + + + + + + + Schema XML de validação do evento Prestação do Serviço em Desacordo 610110 + + + + + + Descrição do Evento - “Prestação do Serviço em Desacordo” + + + + + + + + + + + + Indicador de operação em desacordo + + + + + + + + + + Observações do tomador + + + + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/evRegMultimodal_v4.00.xsd b/CTe.AppTeste/schemas/evRegMultimodal_v4.00.xsd new file mode 100644 index 000000000..6ba3eccd6 --- /dev/null +++ b/CTe.AppTeste/schemas/evRegMultimodal_v4.00.xsd @@ -0,0 +1,51 @@ + + + + + + + Schema XML de validação do evento Registro Multimodal 110160 + + + + + + Descrição do Evento - “Registro Multimodal” + + + + + + + + + + + Informação complementar sobre o registro, indicação do tipo de documento utilizado e demais situações ocorridas no Multimodal (Texto Livre). + + + + + + + + + + + + + Numero do Documento lançado no CT-e Multimodal + + + + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/eventoCTeTiposBasico_v3.00.xsd b/CTe.AppTeste/schemas/eventoCTeTiposBasico_v3.00.xsd index ff000f516..c5ae9560f 100644 --- a/CTe.AppTeste/schemas/eventoCTeTiposBasico_v3.00.xsd +++ b/CTe.AppTeste/schemas/eventoCTeTiposBasico_v3.00.xsd @@ -1,4 +1,5 @@ + @@ -22,11 +23,21 @@ 2 - Homologação - - - CNPJ do emissor do evento - - + + + + CNPJ do emissor do evento + + + + + CPF do emissor do evento + Informar zeros não significativos. + +Usar com série específica 920-969 para emitente pessoa física com inscrição estadual + + + Chave de Acesso do CT-e vinculado ao evento @@ -82,6 +93,27 @@ Insira neste local o XML específico do tipo de evento (cancelamento, encerramen + + + Grupo de informações do pedido de registro de evento da Nota Fiscal Fácil + + + + + + Solicitação do pedido de registro de evento da NFF. + Será preenchido com a totalidade de campos informados no aplicativo emissor serializado. + + + + + + + + + + + @@ -210,7 +242,26 @@ Insira neste local o XML específico do tipo de evento (cancelamento, encerramen - + + + IP do transmissor do documento fiscal para o ambiente autorizador + + + + + Porta de origem utilizada na conexão (De 0 a 65535) + + + + + + + + + + Data e Hora da Conexão de Origem + + @@ -243,13 +294,4 @@ Insira neste local o XML específico do tipo de evento (cancelamento, encerramen - - - Tipo Placa - - - - - - diff --git a/CTe.AppTeste/schemas/eventoCTeTiposBasico_v4.00.xsd b/CTe.AppTeste/schemas/eventoCTeTiposBasico_v4.00.xsd new file mode 100644 index 000000000..71ce7421d --- /dev/null +++ b/CTe.AppTeste/schemas/eventoCTeTiposBasico_v4.00.xsd @@ -0,0 +1,331 @@ + + + + + + + + Tipo Evento + + + + + + + + Código do órgão de recepção do Evento. Utilizar a Tabela do IBGE extendida, utilizar 90 para identificar SUFRAMA + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + + CNPJ do emissor do evento + + + + + CPF do emissor do evento + Informar zeros não significativos. + +Usar com série específica 920-969 para emitente pessoa física com inscrição estadual + + + + + + Chave de Acesso do CT-e vinculado ao evento + + + + + Data e Hora do Evento, formato UTC (AAAA-MM-DDThh:mm:ssTZD) + + + + + Tipo do Evento + + + + + + + + + + + Seqüencial do evento para o mesmo tipo de evento. Para maioria dos eventos será 1, nos casos em que possa existir mais de um evento o autor do evento deve numerar de forma seqüencial. + + + + + + + + + + + Detalhamento do evento específico + + + + + + XML do evento +Insira neste local o XML específico do tipo de evento (cancelamento, encerramento, registro de passagem). + + + + + + + + + + + + + + + + Grupo de informações do pedido de registro de evento da Nota Fiscal Fácil + + + + + + Solicitação do pedido de registro de evento da NFF. + Será preenchido com a totalidade de campos informados no aplicativo emissor serializado. + + + + + + + + + + + + + + Grupo de Informação do Provedor de Assinatura e Autorização + + + + + + CNPJ do Provedor de Assinatura e Autorização + + + + + Assinatura RSA do Emitente para DFe gerados por PAA + + + + + + Assinatura digital padrão RSA + Converter o atributo Id do DFe para array de bytes e assinar com a chave privada do RSA com algoritmo SHA1 gerando um valor no formato base64. + + + + + Chave Publica no padrão XML RSA Key + + + + + + + + + + + + Identificador da TAG a ser assinada, a regra de formação do Id é: +“ID” + tpEvento + chave do CT-e + nSeqEvento + + + + + + + + + + + + + + + + Tipo retorno do Evento + + + + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Versão do Aplicativo que recebeu o Evento + + + + + Código do órgão de recepção do Evento. Utilizar a Tabela do IBGE extendida, utilizar 90 para identificar SUFRAMA + + + + + Código do status da registro do Evento + + + + + Descrição literal do status do registro do Evento + + + + + Chave de Acesso CT-e vinculado + + + + + Tipo do Evento vinculado + + + + + + + + + + + Descrição do Evento + + + + + + + + + + + Seqüencial do evento + + + + + + + + + + + Data e Hora de do recebimento do evento ou do registro do evento formato AAAA-MM-DDThh:mm:ssTZD + + + + + Número do protocolo de registro do evento + + + + + + + + + + + + + + + + + + + + + + + Tipo procEvento + + + + + + + + + IP do transmissor do documento fiscal para o ambiente autorizador + + + + + Porta de origem utilizada na conexão (De 0 a 65535) + + + + + + + + + + Data e Hora da Conexão de Origem + + + + + + Tipo Versão do Evento + + + + + + + + + Tipo Modal transporte + + + + + + + + + + + + + + Tipo número sequencial único do AN + + + + + + diff --git a/CTe.AppTeste/schemas/eventoCTe_v4.00.xsd b/CTe.AppTeste/schemas/eventoCTe_v4.00.xsd new file mode 100644 index 000000000..a61975004 --- /dev/null +++ b/CTe.AppTeste/schemas/eventoCTe_v4.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Schema XML de validação do Pedido de Registro de Evento do CT-e + + + diff --git a/CTe.AppTeste/schemas/inutCTeTiposBasico_v3.00.xsd b/CTe.AppTeste/schemas/inutCTeTiposBasico_v3.00.xsd index 5a26ca820..d1c6e57d9 100644 --- a/CTe.AppTeste/schemas/inutCTeTiposBasico_v3.00.xsd +++ b/CTe.AppTeste/schemas/inutCTeTiposBasico_v3.00.xsd @@ -1,4 +1,5 @@ + @@ -195,7 +196,26 @@ - + + + IP do transmissor do documento fiscal para o ambiente autorizador + + + + + Porta de origem utilizada na conexão (De 0 a 65535) + + + + + + + + + + Data e Hora da Conexão de Origem + + diff --git a/CTe.AppTeste/schemas/inutCTeTiposBasico_v4.00.xsd b/CTe.AppTeste/schemas/inutCTeTiposBasico_v4.00.xsd new file mode 100644 index 000000000..36228c762 --- /dev/null +++ b/CTe.AppTeste/schemas/inutCTeTiposBasico_v4.00.xsd @@ -0,0 +1,228 @@ + + + + + + + + Tipo Pedido de Inutilização de Numeração do Conhecimento de Transporte eletrônico + + + + + Dados do Pedido de Inutilização de Numeração do Conhecimento de Transporte eletrônico + + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Serviço Solicitado + + + + + Código da UF solicitada + + + + + Ano de inutilização da numeração + + + + + + + + + + CNPJ do emitente + + + + + Modelo da CT-e (57 ou 67) + + + + + Série da CT-e + + + + + Número da CT-e inicial + + + + + Número da CT-e final + + + + + Justificativa do pedido de inutilização + + + + + + + + + + + + + + + + + + + + + + + Tipo retorno do Pedido de Inutilização de Numeração do Conhecimento de Transporte eletrônico + + + + + Dados do Retorno do Pedido de Inutilização de Numeração do Conhecimento de Transporte eletrônico + + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Versão do Aplicativo que processou a CT-e + + + + + Código do status da mensagem enviada. + + + + + Descrição literal do status do serviço solicitado. + + + + + + + + + + + + Código da UF solicitada + + + + + Ano de inutilização da numeração + + + + + + + + + + CNPJ do emitente + + + + + Modelo da CT-e (57 ou 67) + + + + + Série da CT-e + + + + + Número da CT-e inicial + + + + + Número da CT-e final + + + + + Data e hora de recebimento, no formato AAAA-MM-DDTHH:MM:SS TZD. Deve ser preenchida com data e hora da gravação no Banco em caso de Confirmação. Em caso de Rejeição, com data e hora do recebimento do Pedido de Inutilização. + + + + + Número do Protocolo de Status do CT-e. 1 posição (1 – Secretaria de Fazenda Estadual , 3 - SEFAZ Virtual RS, 5 - SEFAZ Virtual SP); 2 - código da UF - 2 posições ano; 10 seqüencial no ano. + + + + + + + + + + + + + Tipo Pedido de inutilzação de númeração de CT-e processado + + + + + + + + + IP do transmissor do documento fiscal para o ambiente autorizador + + + + + Porta de origem utilizada na conexão (De 0 a 65535) + + + + + + + + + + Data e Hora da Conexão de Origem + + + + + + Tipo Versão Inutilização de numeração de CT-e + + + + + + diff --git a/CTe.AppTeste/schemas/inutCTe_v4.00.xsd b/CTe.AppTeste/schemas/inutCTe_v4.00.xsd new file mode 100644 index 000000000..c368b74d0 --- /dev/null +++ b/CTe.AppTeste/schemas/inutCTe_v4.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Schema XML de validação do Pedido de Inutilização de Numeração do Conhecimento de Transportes eletrônico + + + diff --git a/CTe.AppTeste/schemas/leiauteChCTe_v3.00.xsd b/CTe.AppTeste/schemas/leiauteChCTe_v3.00.xsd new file mode 100644 index 000000000..b9f11c2ec --- /dev/null +++ b/CTe.AppTeste/schemas/leiauteChCTe_v3.00.xsd @@ -0,0 +1,478 @@ + + + + + + Tipo Versão 3.00 + + + + + + + + Versão documento + + + + + + + + Tipo número sequencial único do AN + + + + + + + + solicitação de distribuição de dados de controle dos DF-e + + + + + +Identificação do Ambiente: +1 - Produção; +2 - Homologação + + + + + + Versão do Aplicativo que solicitou a distribuição de DF-e + + + + + Indicador de Compactação da Mensagem de retorno: +0 - sem compactação; +1 - compactação padrão gZip + + + + + + + + + + + + Código da UF do autorizador. Utilizar a Tabela do IBGE. + + + + + último NSU (AN) recebido pela SVC. Caso seja informado com zero, o AN tentará localizar o primeiro DF-e. + + + + + + NSU final desejado. Se informado, a aplicação do AN deverá observar este valor máximo do NSU a ser fornecido. + + + + + + + + + + + + + + + + Lote de dados de controle sobre os DF-e encontrados + + + + + +Identificação do Ambiente: + +1 - Produção; +2 - Homologação + + + + + + Versão do Aplicativo que solicitou a distribuição de DF-e + + + + + Código do status da resposta + + + + + Descrição literal do status da resposta + + + + + Código da UF do autorizador. Utilizar a Tabela do IBGE. + + + + + Ultimo NSU pesquisado pelo Ambiente Nacional + + + + + + NSU final desejado. Se informado, a aplicação do AN deverá observar este valor máximo do NSU a ser fornecido. + + + + + + + + + + + + + Maior NSU existente na Base Nacional para a SVC. + + + + + + + + + + + + Schema XML dados descompactado + + + + + + informações de controle CT-e + + + + + informações de controle Cancelamento + + + + + informações de controle Evento + + + + + informações de controle Inutilização + + + + + + + + + + + Código da UF do emitente do Documento Fiscal. Utilizar a Tabela do IBGE. + + + + + Chave de Acesso do DF-e + + + + + Hash MD5 da Chave de acesso convertido para base64 + + + + + Tipo de CT-e + Preencher com: + +0 - CT-e Normal; +1 - CT-e de Complemento de Valores; +2 - CT-e de Anulação de Valores; +3 - CT-e Substituto + + + + + + + + + + + + + Forma de Emiissão do DFe + Preencher com: +1 - Normal; + 4-EPEC pela SVC; 5 - Contingência FSDA; + 7 - Autorização pela SVC-RS; + 8 - Autorização pela SVC-SP + + + + + + + + + + + + + + Indicador de denegação do documento: 0 - NÃO denegado; 1 - denegado + + + + + + + + + + + Data e hora de autorizacao no formato AAAA-MM-DDTHH:MM:SS TZD. + + + + + Número de protocolo de autorização CT-e. + + + + + + número sequencial único do Ambiente Nacional + + + + + + + + + Código da UF do emitente do Documento Fiscal. Utilizar a Tabela do IBGE. + + + + + Chave de Acesso do DF-e cancelado + + + + + Hash MD5 da Chave de Acesso convertido para base64 + + + + + Forma de Emiissão do DFe + Preencher com: +1 - Normal; + 4-EPEC pela SVC; 5 - Contingência FSDA; + 7 - Autorização pela SVC-RS; + 8 - Autorização pela SVC-SP + + + + + + + + + + + + + + Número de protocolo de autorização do CT-e. + + + + + Data e hora de autorizacao do Cancelamento no formato AAAA-MM-DDTHH:MM:SS TZD. + + + + + Número de protocolo de autorização do Cancelamento + + + + + + número sequencial único do Ambiente Nacional + + + + + + + + + Código da UF do emitente do Documento Fiscal. Utilizar a Tabela do IBGE. + + + + + Ano de inutilização da numeração + + + + + CNPJ do emitente + + + + + Série do Documento Fiscal + + + + + Modelo do Documento Fiscal + + + + + Número da CT-e inicial + + + + + Número da CT-e final + + + + + Data e hora de autorizacao no formato AAAA-MM-DDTHH:MM:SS TZD + + + + + Número de protocolo de autorização da Inutilização. + + + + + + número sequencial único do Ambiente Nacional + + + + + + + + + Código do Orgao de Recepcao do Evento + + + + + Chave de Acesso do DF-e + + + + + Hash MD5 da Chave de Acesso convertido para base64 + + + + + Forma de Emiissão do DFe + Preencher com: +1 - Normal; + 4-EPEC pela SVC; 5 - Contingência FSDA; + 7 - Autorização pela SVC-RS; + 8 - Autorização pela SVC-SP + + + + + + + + + + + + + + CNPJ do Autor do Evento + + + + + Data e Hora do Evento, formato (AAAA-MM-DDThh:mm:ss TZD) + + + + + Tipo do Evento + + + + + + + + + + Seqüencial do evento para o mesmo tipo de evento. Para maioria dos eventos será 1, nos casos em que possa existir mais de um evento o autor do evento deve numerar de forma seqüencial. + + + + + + + + + + + Número de protocolo de autorização do CT-e. + + + + + Data e hora de autorizacao do Evento no formato AAAA-MM-DDTHH:MM:SS TZD. + + + + + Número de protocolo de autorização do evento + + + + + + número sequencial único do Ambiente Nacional + + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/leiauteLoteRFBCTe_v3.00.xsd b/CTe.AppTeste/schemas/leiauteLoteRFBCTe_v3.00.xsd new file mode 100644 index 000000000..a1174e93b --- /dev/null +++ b/CTe.AppTeste/schemas/leiauteLoteRFBCTe_v3.00.xsd @@ -0,0 +1,561 @@ + + + + + + + Tipo Versão + + + + + + + + Tipo número sequencial único do AN + + + + + + + + Schema XML de validação do lote de envio de documentos ficais eletronicos + + + + + Versão da aplicação do órgão autorizador. + + + + + + Conjunto de DF-e compactado com o método indicado no indComp, deve conter as mesmas informações do grupo loteEnvCTe + + + + + Conjunto de DF-e enviados, a princípio, apenas será permitido o envio de documentos fiscais em vigência. + + + + + + + + + Schema XML de validação da área de dados descompactada + + + + + + + + informação do proc + + + + + + Identificação do Schema XML de validação do proc, Ex. procCTe_v3.00.xsd, procCTeOS_v3.00.xsd, procInutCTe_v3.00.xsd, etc. + + + + + + + + + + + Schema XML de validação da área de dados da mensagem de retorno + + + + + Identificação do Ambiente: 1 - Produção 2 - Homologação + + + + + Versão da aplicação do AN que recebeu os documentos fiscais. + + + + + Código do status da resposta + + + + + Descrição literal do status da resposta + + + + + + Retorno de processamento dos DF-e, somente é gerado se os documentos fiscais forem válidos. + + + + + + Número de protocolo do DF-e processado, o campo serve para a aplicação da SEFAZ identificar os retornos. + + + + + código do status do processmaneto do DF-e + + + + + descrição do status do processmaneto do DF-e + + + + + número sequencial único do Ambiente Nacional + + + + + Número seqüencial único de Autorização gerado pelo Ambiente Nacional para a UF Autorizadora + + + + + + + + + + + + + + Schema XML de validação da área de dados da mensagem da solicitação de distribuição de DF-e + + + + + Identificação do Ambiente: 1 - Produção 2 - Homologação + + + + + Versão do Aplicativo que solicitou a distribuição de DF-e + + + + + Indicador de DF-e solicitados: 0 - DF-e autorizados pela UF; 1 - DF-e interestaduais destinados para a UF ; 2 – DF-e autorizados pela SEFAZ Virtual ou SVC em nome da UF; 3 - DF-e autorizados em contingencia SVC em nome da UF; 8 – DF-e interestaduais destinados para a UF (1) e DF-e autorizados pela SEFAZ Virtual ou SVC em nome da UF (2); 9 - Todos os DF-e. + + + + + + + + + + + + + + + Indicador de Compactação da Mensagem de retorno: 0 - sem compactação; 1 - compactação padrão gZip + + + + + + + + + + + último NSUAN recebido, caso seja informado com zero, o AN tentará localizar o primeiro DF-e existente. + + + + + + + + Schema XML de validação da área de dados da mensagem da solicitação de distribuição de DF-e + + + + + Identificação do Ambiente: 1 - Produção 2 - Homologação + + + + + Versão do Aplicativo que solicitou a distribuição de DF-e + + + + + Indicador do tipo de NSU que será solicitado: +0 – NSU dos DF-e autorizados pela UF; +1 – NSU dos DF-e de interesse da UF que não foram autorizados pela UF; + + + + + Indicador de Compactação da Mensagem de retorno: 0 - sem compactação; 1 - compactação padrão gZip + + + + + Último NSU recebido pela UF + + + + + + + + Schema XML de validação da área de dados da mensagem da consulta NSU Faltantes + + + + + Identificação do Ambiente: 1 - Produção 2 - Homologação + + + + + Versão do Aplicativo que solicitou a distribuição de DF-e + + + + + Indicador do tipo de NSU que será solicitado: +0 – NSU de autorizacao; +1 – NSU de busca + + + + + + + + + + + Indicador de Compactação da Mensagem de retorno: 0 - sem compactação; 1 - compactação padrão gZip + + + + + + + + + + + Lista de NSU + + + + + + NSU faltante na base de dados do Estado + + + + + + + + + + + Schema XML de validação do lote de retorno de documentos ficais eletronicos + + + + + Identificação do Ambiente: 1 - Produção 2 - Homologação + + + + + Versão do Aplicativo que atendeu a pedido de distribuição de DF-e + + + + + código do status de resultado da pesquisa + + + + + descrição do resultado do pesquisa + + + + + último NSU + + + + + + + + + + + + Schema XML de validação do lote de retorno de documentos ficais eletronicos + + + + + Identificação do Ambiente: 1 - Produção 2 - Homologação + + + + + Versão do Aplicativo que atendeu a pedido de distribuição de DF-e + + + + + código do status de resultado da pesquisa + + + + + descrição do resultado do pesquisa + + + + + Data e Hora de recebimento da solicitação de distribuição +Formato = AAAA-MM-DDTHH:MM:SS TZD + + + + + Indicador do tipo de NSU que será solicitado: +0 – NSU dos DF-e autorizados pela UF; +1 – NSU dos DF-e de interesse da UF que não foram autorizados pela UF; + + + + + último NSU + + + + + + + + + + + + Schema XML de validação da área de dados descompactada + + + + + + + + informação do proc + + + + + + Identificação do Schema XML de validação do proc, Ex. procCTe_v3.00.xsd, procCTeOS_v3.00.xsd, procInutCTe_v3.00.xsd, etc. + + + + + número sequencial único do Ambiente Nacional + + + + + + + + + + + Schema XML de validação da área de dados descompactada + + + + + + + + Código do status + + + + + Descrição literal do status correspondente ao documento retornado + + + + + + + + informação do proc + + + + + + Identificação do Schema XML de validação do proc, Ex. procCTe_v3.00.xsd, procCTeOS_v3.00.xsd, procInutCTe_v3.00.xsd, etc. + + + + + + + + + Número seqüencial único de Autorização ou de Busca + + + + + Número seqüencial único gerado na ordem de recepção no Ambiente Nacional independente do estado autorizador. + + + + + + + + + Schema XML de validação da área de dados da mensagem de consulta protocolos faltantes + + + + + Identificação do Ambiente: 1 - Produção 2 - Homologação + + + + + Versão do Aplicativo que gerou a consulta + + + + + número do protocolo inicial + + + + + + + + Schema XML de validação da área de dados da mensagem de retorno da consulta protocolos faltantes + + + + + Identificação do Ambiente: 1 - Produção 2 - Homologação + + + + + Versão do Aplicativo que atendeu a consulta + + + + + código do status de resultado da pesquisa + + + + + descrição do resultado do pesquisa + + + + + número do último protocolo pesquisado + + + + + + + + número do protocolo inicial + + + + + número do protocolo final + + + + + + + + + + + Schema XML de validação da área de dados da mensagem de retorno da consulta NSU faltantes + + + + + Identificação do Ambiente: 1 - Produção 2 - Homologação + + + + + Versão do Aplicativo que atendeu a pedido de distribuição de DF-e + + + + + código do status de resultado da pesquisa + + + + + descrição do resultado do pesquisa + + + + + Data e Hora de recebimento da solicitação de distribuição +Formato = AAAA-MM-DDTHH:MM:SS + + + + + Indicador do tipo de NSU que será solicitado: +0 – NSU dos DF-e autorizados pela UF; +1 – NSU dos DF-e de interesse da UF que não foram autorizados pela UF; + + + + + + + + + + diff --git a/CTe.AppTeste/schemas/loteDistCTePorUF_v3.00.xsd b/CTe.AppTeste/schemas/loteDistCTePorUF_v3.00.xsd new file mode 100644 index 000000000..b5533b736 --- /dev/null +++ b/CTe.AppTeste/schemas/loteDistCTePorUF_v3.00.xsd @@ -0,0 +1,9 @@ + + + + + + Estrutura do Lote de Retorno de pedido de distribuição de CT-e, utilizar na validação da estrutura descompactada + + + diff --git a/CTe.AppTeste/schemas/loteDistCTe_v3.00.xsd b/CTe.AppTeste/schemas/loteDistCTe_v3.00.xsd new file mode 100644 index 000000000..66b4e0d49 --- /dev/null +++ b/CTe.AppTeste/schemas/loteDistCTe_v3.00.xsd @@ -0,0 +1,9 @@ + + + + + + Estrutura do Lote de Retorno de pedido de distribuição de CT-e, utilizar na validação da estrutura descompactada + + + diff --git a/CTe.AppTeste/schemas/loteEnvCTe_v3.00.xsd b/CTe.AppTeste/schemas/loteEnvCTe_v3.00.xsd new file mode 100644 index 000000000..ad2399ea3 --- /dev/null +++ b/CTe.AppTeste/schemas/loteEnvCTe_v3.00.xsd @@ -0,0 +1,9 @@ + + + + + + Estrutura do Lote de Envio de documentos do CT-e, utilizar na validação da estrutura descompactada + + + diff --git a/CTe.AppTeste/schemas/loteRFBCTe_v3.00.xsd b/CTe.AppTeste/schemas/loteRFBCTe_v3.00.xsd new file mode 100644 index 000000000..309712e7f --- /dev/null +++ b/CTe.AppTeste/schemas/loteRFBCTe_v3.00.xsd @@ -0,0 +1,9 @@ + + + + + + Envio de Lote de CT-e para o Ambiente Nacional + + + diff --git a/CTe.AppTeste/schemas/procCTeOS_v3.00.xsd b/CTe.AppTeste/schemas/procCTeOS_v3.00.xsd index 87c0b5f31..45456e445 100644 --- a/CTe.AppTeste/schemas/procCTeOS_v3.00.xsd +++ b/CTe.AppTeste/schemas/procCTeOS_v3.00.xsd @@ -1,4 +1,5 @@ + @@ -11,7 +12,26 @@ - + + + IP do transmissor do documento fiscal para o ambiente autorizador + + + + + Porta de origem utilizada na conexão (De 0 a 65535) + + + + + + + + + + Data e Hora da Conexão de Origem + + diff --git a/CTe.AppTeste/schemas/procCTeOS_v4.00.xsd b/CTe.AppTeste/schemas/procCTeOS_v4.00.xsd new file mode 100644 index 000000000..c019c2ecb --- /dev/null +++ b/CTe.AppTeste/schemas/procCTeOS_v4.00.xsd @@ -0,0 +1,37 @@ + + + + + + + CT-e OS processado + + + + + + + + + + IP do transmissor do documento fiscal para o ambiente autorizador + + + + + Porta de origem utilizada na conexão (De 0 a 65535) + + + + + + + + + + Data e Hora da Conexão de Origem + + + + + diff --git a/CTe.AppTeste/schemas/procCTe_v3.00.xsd b/CTe.AppTeste/schemas/procCTe_v3.00.xsd index 77bfcf61e..863a5b341 100644 --- a/CTe.AppTeste/schemas/procCTe_v3.00.xsd +++ b/CTe.AppTeste/schemas/procCTe_v3.00.xsd @@ -1,7 +1,7 @@ + - CT-e processado @@ -12,7 +12,26 @@ - + + + IP do transmissor do documento fiscal para o ambiente autorizador + + + + + Porta de origem utilizada na conexão (De 0 a 65535) + + + + + + + + + + Data e Hora da Conexão de Origem + + diff --git a/CTe.AppTeste/schemas/procCTe_v4.00.xsd b/CTe.AppTeste/schemas/procCTe_v4.00.xsd new file mode 100644 index 000000000..c13cb4c81 --- /dev/null +++ b/CTe.AppTeste/schemas/procCTe_v4.00.xsd @@ -0,0 +1,37 @@ + + + + + + + CT-e processado + + + + + + + + + + IP do transmissor do documento fiscal para o ambiente autorizador + + + + + Porta de origem utilizada na conexão (De 0 a 65535) + + + + + + + + + + Data e Hora da Conexão de Origem + + + + + diff --git a/CTe.AppTeste/schemas/procEventoCTe_v3.00.xsd b/CTe.AppTeste/schemas/procEventoCTe_v3.00.xsd index b6cd28b79..424757405 100644 --- a/CTe.AppTeste/schemas/procEventoCTe_v3.00.xsd +++ b/CTe.AppTeste/schemas/procEventoCTe_v3.00.xsd @@ -1,4 +1,5 @@ + diff --git a/CTe.AppTeste/schemas/procEventoCTe_v4.00.xsd b/CTe.AppTeste/schemas/procEventoCTe_v4.00.xsd new file mode 100644 index 000000000..ddfe9d4fb --- /dev/null +++ b/CTe.AppTeste/schemas/procEventoCTe_v4.00.xsd @@ -0,0 +1,15 @@ + + + + + + + Pedido de Registro de Eventos de CT-e processado + + + + + + + + diff --git a/CTe.AppTeste/schemas/procGTVe_v3.00.xsd b/CTe.AppTeste/schemas/procGTVe_v3.00.xsd new file mode 100644 index 000000000..b1af67b2e --- /dev/null +++ b/CTe.AppTeste/schemas/procGTVe_v3.00.xsd @@ -0,0 +1,37 @@ + + + + + + + GTV-e processada + + + + + + + + + + IP do transmissor do documento fiscal para o ambiente autorizador + + + + + Porta de origem utilizada na conexão (De 0 a 65535) + + + + + + + + + + Data e Hora da Conexão de Origem + + + + + diff --git a/CTe.AppTeste/schemas/procGTVe_v4.00.xsd b/CTe.AppTeste/schemas/procGTVe_v4.00.xsd new file mode 100644 index 000000000..b9a438933 --- /dev/null +++ b/CTe.AppTeste/schemas/procGTVe_v4.00.xsd @@ -0,0 +1,37 @@ + + + + + + + GTV-e processada + + + + + + + + + + IP do transmissor do documento fiscal para o ambiente autorizador + + + + + Porta de origem utilizada na conexão (De 0 a 65535) + + + + + + + + + + Data e Hora da Conexão de Origem + + + + + diff --git a/CTe.AppTeste/schemas/procInutCTe_v4.00.xsd b/CTe.AppTeste/schemas/procInutCTe_v4.00.xsd new file mode 100644 index 000000000..241e5fa89 --- /dev/null +++ b/CTe.AppTeste/schemas/procInutCTe_v4.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Pedido de inutilzação de numeração de CT-e processado + + + diff --git a/CTe.AppTeste/schemas/retCTeConsultaDFe_v1.00.xsd b/CTe.AppTeste/schemas/retCTeConsultaDFe_v1.00.xsd new file mode 100644 index 000000000..682093e0c --- /dev/null +++ b/CTe.AppTeste/schemas/retCTeConsultaDFe_v1.00.xsd @@ -0,0 +1,9 @@ + + + + + + Schema XML de validação do retorno da consulta do CT-e. + + + diff --git a/CTe.AppTeste/schemas/retCTeOS_v4.00.xsd b/CTe.AppTeste/schemas/retCTeOS_v4.00.xsd new file mode 100644 index 000000000..3ca744be4 --- /dev/null +++ b/CTe.AppTeste/schemas/retCTeOS_v4.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Schema XML de validação do retorno do recibo de envio do CT-e OS (Modelo 67) + + + diff --git a/CTe.AppTeste/schemas/retCTe_v3.00.xsd b/CTe.AppTeste/schemas/retCTe_v3.00.xsd new file mode 100644 index 000000000..efa4f7d88 --- /dev/null +++ b/CTe.AppTeste/schemas/retCTe_v3.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Schema XML de validação do retorno do recibo de envio do CT-e (Modelo 57) + + + diff --git a/CTe.AppTeste/schemas/retCTe_v4.00.xsd b/CTe.AppTeste/schemas/retCTe_v4.00.xsd new file mode 100644 index 000000000..24f025ddc --- /dev/null +++ b/CTe.AppTeste/schemas/retCTe_v4.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Schema XML de validação do retorno do recibo de envio do CT-e (Modelo 57) + + + diff --git a/CTe.AppTeste/schemas/retConsNSUFaltCTe_v3.00.xsd b/CTe.AppTeste/schemas/retConsNSUFaltCTe_v3.00.xsd new file mode 100644 index 000000000..b46f458c5 --- /dev/null +++ b/CTe.AppTeste/schemas/retConsNSUFaltCTe_v3.00.xsd @@ -0,0 +1,9 @@ + + + + + + Schema XML de validação da área de dados da mensagem de retorno da consulta NSU faltantes + + + diff --git a/CTe.AppTeste/schemas/retConsProtFaltCTe_v3.00.xsd b/CTe.AppTeste/schemas/retConsProtFaltCTe_v3.00.xsd new file mode 100644 index 000000000..8721089b4 --- /dev/null +++ b/CTe.AppTeste/schemas/retConsProtFaltCTe_v3.00.xsd @@ -0,0 +1,9 @@ + + + + + + Retorno de pedido de consulta de protocolos faltantes de CT-e + + + diff --git a/CTe.AppTeste/schemas/retConsSitCTe_v4.00.xsd b/CTe.AppTeste/schemas/retConsSitCTe_v4.00.xsd new file mode 100644 index 000000000..3e6aac4e7 --- /dev/null +++ b/CTe.AppTeste/schemas/retConsSitCTe_v4.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Schema XML de validação do retorno da consulta da situação atual do CT-e. + + + diff --git a/CTe.AppTeste/schemas/retConsStatServCTe_v4.00.xsd b/CTe.AppTeste/schemas/retConsStatServCTe_v4.00.xsd new file mode 100644 index 000000000..4bc47d6c1 --- /dev/null +++ b/CTe.AppTeste/schemas/retConsStatServCTe_v4.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Schema XML de validação do Resultado da Consulta do Status do Serviço de CT-e + + + diff --git a/CTe.AppTeste/schemas/retDistCTePorUF_v3.00.xsd b/CTe.AppTeste/schemas/retDistCTePorUF_v3.00.xsd new file mode 100644 index 000000000..bff2ba7cc --- /dev/null +++ b/CTe.AppTeste/schemas/retDistCTePorUF_v3.00.xsd @@ -0,0 +1,9 @@ + + + + + + Retorno de pedido de distribuição de CT-e + + + diff --git a/CTe.AppTeste/schemas/retDistCTe_v3.00.xsd b/CTe.AppTeste/schemas/retDistCTe_v3.00.xsd new file mode 100644 index 000000000..376de3463 --- /dev/null +++ b/CTe.AppTeste/schemas/retDistCTe_v3.00.xsd @@ -0,0 +1,9 @@ + + + + + + Retorno de pedido de distribuição de CT-e + + + diff --git a/CTe.AppTeste/schemas/retDistChCTe_v3.00.xsd b/CTe.AppTeste/schemas/retDistChCTe_v3.00.xsd new file mode 100644 index 000000000..f403bfdb6 --- /dev/null +++ b/CTe.AppTeste/schemas/retDistChCTe_v3.00.xsd @@ -0,0 +1,9 @@ + + + + + + Lote de dados de controle sobre os DF-e encontrados + + + diff --git a/CTe.AppTeste/schemas/retEventoCTe_v4.00.xsd b/CTe.AppTeste/schemas/retEventoCTe_v4.00.xsd new file mode 100644 index 000000000..41010ef8c --- /dev/null +++ b/CTe.AppTeste/schemas/retEventoCTe_v4.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Schema XML de validação do retorno Pedido de Evento do CT-e + + + diff --git a/CTe.AppTeste/schemas/retGTVe_v3.00.xsd b/CTe.AppTeste/schemas/retGTVe_v3.00.xsd new file mode 100644 index 000000000..a502231a0 --- /dev/null +++ b/CTe.AppTeste/schemas/retGTVe_v3.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Schema XML de validação do retorno do recibo de envio da GTV-e (Modelo 64) + + + diff --git a/CTe.AppTeste/schemas/retGTVe_v4.00.xsd b/CTe.AppTeste/schemas/retGTVe_v4.00.xsd new file mode 100644 index 000000000..f4e333168 --- /dev/null +++ b/CTe.AppTeste/schemas/retGTVe_v4.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Schema XML de validação do retorno do recibo de envio da GTV-e (Modelo 64) + + + diff --git a/CTe.AppTeste/schemas/retInutCTe_v4.00.xsd b/CTe.AppTeste/schemas/retInutCTe_v4.00.xsd new file mode 100644 index 000000000..ab4f1d4cb --- /dev/null +++ b/CTe.AppTeste/schemas/retInutCTe_v4.00.xsd @@ -0,0 +1,15 @@ + + + + + + + Schema XML de validação do retorno do Pedido de Inutilização de Numeração do CT-e + + + + + + + + diff --git a/CTe.AppTeste/schemas/retLoteRFBCTe_v3.00.xsd b/CTe.AppTeste/schemas/retLoteRFBCTe_v3.00.xsd new file mode 100644 index 000000000..d999e2560 --- /dev/null +++ b/CTe.AppTeste/schemas/retLoteRFBCTe_v3.00.xsd @@ -0,0 +1,9 @@ + + + + + + Retorno do resultado de processamento de Lote de CT-e para o Ambiente Nacional compactado + + + diff --git a/CTe.AppTeste/schemas/tiposGeralCTe_v3.00.xsd b/CTe.AppTeste/schemas/tiposGeralCTe_v3.00.xsd index 3c5bb96e6..9431aa5c4 100644 --- a/CTe.AppTeste/schemas/tiposGeralCTe_v3.00.xsd +++ b/CTe.AppTeste/schemas/tiposGeralCTe_v3.00.xsd @@ -1,4 +1,5 @@ + @@ -74,7 +75,7 @@ - Tipo Código de orgão (UF da tabela do IBGE + 90 SUFRAMA + 91 RFB) + Tipo Código de orgão (UF da tabela do IBGE + 90 SUFRAMA + 91 RFB + 94 SVC-RS + 95 SVC-SP + 96 Sinc. Chaves do RS para SVSP @@ -107,6 +108,10 @@ + + + + @@ -352,7 +357,7 @@ - + @@ -382,6 +387,15 @@ + + + Tipo Modelo Documento Fiscal + + + + + + Tipo Modelo Documento Fiscal @@ -504,7 +518,7 @@ - + @@ -612,4 +626,13 @@ + + + Tipo Placa + + + + + + diff --git a/CTe.AppTeste/schemas/tiposGeralCTe_v4.00.xsd b/CTe.AppTeste/schemas/tiposGeralCTe_v4.00.xsd new file mode 100644 index 000000000..20f80af49 --- /dev/null +++ b/CTe.AppTeste/schemas/tiposGeralCTe_v4.00.xsd @@ -0,0 +1,647 @@ + + + + + + Data e Hora, formato UTC (AAAA-MM-DDThh:mm:ssTZD, onde TZD = +hh:mm ou -hh:mm) + + + + + + + + + Tipo Ambiente + + + + + + + + + + Tipo ano + + + + + + + + + Tipo Código da UF da tabela do IBGE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tipo Código do Município da tabela do IBGE + + + + + + + + + Tipo Código de orgão (UF da tabela do IBGE + 90 SUFRAMA + 91 RFB + 94 SVC-RS + 95 SVC-SP + 96 Sinc. Chaves do RS para SVSP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tipo Chave de Documento Fiscal Eletrônico + + + + + + + + + + Tipo Número do CNPJ + + + + + + + + + Tipo Número do Telefone + + + + + + + + + Tipo Número do CNPJ tamanho varíavel (3-14) + + + + + + + + + Tipo Número do CNPJ Opcional + + + + + + + + + Tipo Número do CPF + + + + + + + + + Tipo Número do CPF de tamanho variável (3-11) + + + + + + + + + Tipo data AAAA-MM-DD + + + + + + + + + Tipo Decimal com 5 dígitos, sendo 3 de corpo e 2 decimais + + + + + + + + + Tipo Decimal com 6 dígitos, sendo 3 de corpo e 3 decimais + + + + + + + + + Tipo Decimal com 6 ou 5 dígitos, sendo 3 de corpo e 3 ou 2 decimais + + + + + + + + + Tipo Decimal com 5 dígitos, sendo 3 de corpo e 2 decimais, utilizado em tags opcionais + + + + + + + + + Tipo Decimal com 11 dígitos, sendo 8 de corpo e 3 decimais + + + + + + + + + Tipo Decimal com 11 dígitos, sendo 8 de corpo e 3 decimais utilizado em tags opcionais + + + + + + + + + Tipo Decimal com 12 dígitos, sendo 8 de corpo e 4decimais + + + + + + + + + Tipo Decimal com 12 dígitos, sendo 8 de corpo e 4 decimais, utilizado em tags opcionais + + + + + + + + + Tipo Decimal com 15 dígitos, sendo 9 de corpo e 6 decimais, utilizado em tags opcionais + + + + + + + + + Tipo Decimal com 15 dígitos, sendo 11 de corpo e 4 decimais + + + + + + + + + Tipo Decimal com 15 dígitos, sendo 11 de corpo e 4 decimais, utilizado em tags opcionais + + + + + + + + + Tipo Decimal com 15 dígitos, sendo 12 de corpo e 3 decimais + + + + + + + + + Tipo Decimal com 15 dígitos, sendo 12 de corpo e 3 decimais, utilizado em tags opcionais + + + + + + + + + Tipo Decimal com 16 dígitos, sendo 12 de corpo e 4 decimais + + + + + + + + + Tipo Decimal com 16 dígitos, sendo 12 de corpo e 4 decimais, utilizado em tags opcionais + + + + + + + + + Tipo Decimal com 15 dígitos, sendo 13 de corpo e 2 decimais + + + + + + + + + Tipo Decimal com 15 dígitos, sendo 13 de corpo e 2 decimais, utilizado em tags opcionais + + + + + + + + + Tipo Inscrição Estadual do Emitente + + + + + + + + + + Tipo Inscrição Estadual do Destinatário + + + + + + + + + + Tipo Justificativa + + + + + + + + + Tipo temp médio em segundos + + + + + + + + + Tipo Modelo Documento Fiscal + + + + + + + + + Tipo Modelo Documento Fiscal + + + + + + + + + Tipo Modelo Documento Fiscal + + + + + + + + + + Tipo Modelo Documento Fiscal + + + + + + + + + Tipo Modelo Documento Fiscal - NF Remetente + + + + + + + + + + Tipo da Unidade de Transporte + + + + + + + + + + + + + + + Tipo da Unidade de Carga + + + + + + + + + + + + Tipo Motivo + + + + + + + + + Tipo Número do Documento Fiscal + + + + + + + + + Tipo Número do Protocolo de Status + + + + + + + + + Tipo Número do Recibo do envio de lote de NF-e + + + + + + + + + Tipo Série do Documento Fiscal + + + + + + + + + Tipo Serviço solicitado + + + + + + Tipo Código da Mensagem enviada + + + + + + + + + Tipo string genérico + + + + + + + + + Tipo Sigla da UF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tipo Sigla da UF, sem Exterior + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tipo Versão do Aplicativo + + + + + + + + + Coordenada geográfica Latitude + + + + + + + + Coordenada geográfica Longitude + + + + + + + + Tipo IP versão 4 + + + + + + + + + Tipo Placa + + + + + + + + + Tipo que representa uma chave publica padrão RSA + + + + + + + diff --git a/CTe.Classes/CTe.Classes.csproj b/CTe.Classes/CTe.Classes.csproj index d8eac73e6..41132d50f 100644 --- a/CTe.Classes/CTe.Classes.csproj +++ b/CTe.Classes/CTe.Classes.csproj @@ -1,260 +1,13 @@ - - - + + - Debug - AnyCPU - {C86E3921-F0B8-4BFE-9EF1-0E9084326B13} - Library - Properties - CTe.Classes - CTe.Classes - v4.5 - 512 - + net462;netstandard2.0;net6.0 + - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - {9984EC15-18E1-4A87-B4DB-18AC913DC4E8} - DFe.Classes - - - {B4E1A7A6-5D66-4326-8A8D-39338E6FC84C} - DFe.Utils - + + - - - - \ No newline at end of file + + diff --git a/CTe.Classes/CTe.cs b/CTe.Classes/CTe.cs index c36242a08..fd229efee 100644 --- a/CTe.Classes/CTe.cs +++ b/CTe.Classes/CTe.cs @@ -64,6 +64,9 @@ public string ProxyVersao if(value.Equals("3.00")) versao = Servicos.Tipos.versao.ve300; + + if (value.Equals("4.00")) + versao = Servicos.Tipos.versao.ve400; } } @@ -72,6 +75,8 @@ public string ProxyVersao [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte")] public infCte infCte { get; set; } + public infCTeSupl infCTeSupl { get; set; } + [XmlElement(Namespace = "http://www.w3.org/2000/09/xmldsig#")] public Signature Signature { get; set; } diff --git a/CTe.Classes/CTeOutrosServicos/CTeOS.cs b/CTe.Classes/CTeOutrosServicos/CTeOS.cs new file mode 100644 index 000000000..d42831c59 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/CTeOS.cs @@ -0,0 +1,40 @@ +using System.Xml.Serialization; +using CTe.Classes.Informacoes; +using DFe.Classes.Assinatura; +using DFe.Classes.Flags; +using CTe.CTeOSDocumento.CTe.CTeOS.Informacoes; +using DFe.Utils; + +namespace CTe.CTeOSClasses +{ + [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte")] + public class CTeOS + { + public CTeOS() + { + versao = VersaoServico.Versao400; + } + + [XmlAttribute] + public VersaoServico versao { get; set; } + + [XmlElement(ElementName = "infCte", Namespace = "http://www.portalfiscal.inf.br/cte")] + public infCteOS InfCte { get; set; } + + [XmlElement(ElementName = "infCTeSupl")] + public infCTeSupl infCTeSupl { get; set; } + + [XmlElement(Namespace = "http://www.w3.org/2000/09/xmldsig#")] + public Signature Signature { get; set; } + + public static CTeOS LoadXmlString(string xml) + { + return FuncoesXml.XmlStringParaClasse(xml); + } + + public static CTeOS LoadXmlArquivo(string caminhoArquivoXml) + { + return FuncoesXml.ArquivoXmlParaClasse(caminhoArquivoXml); + } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Constantes/StatusAutorizacao.cs b/CTe.Classes/CTeOutrosServicos/Constantes/StatusAutorizacao.cs new file mode 100644 index 000000000..bef7711ba --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Constantes/StatusAutorizacao.cs @@ -0,0 +1,11 @@ +namespace CTe.CTeOSDocumento.CTe.Constantes +{ + public enum StatusAutorizacao + { + Autorizado = 100, + Cancelada = 101, + Denegada = 110, + DenegadoEmitente = 301, + Denegado205 = 205 + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Extensoes/extretCteOS.cs b/CTe.Classes/CTeOutrosServicos/Extensoes/extretCteOS.cs new file mode 100644 index 000000000..4998f21c9 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Extensoes/extretCteOS.cs @@ -0,0 +1,78 @@ +using System; +using System.IO; +using System.Text; +using CTe.Classes; +using CTe.CTeOSDocumento.CTe.Constantes; +using CTe.CTeOSDocumento.CTe.CTeOS.Servicos.Autorizacao; +using DFe.Utils; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Extensoes +{ + public static class extretCteOS + { + /// + /// Coverte uma string XML no formato NFe para um objeto retEnviCte + /// + /// + /// + /// Retorna um objeto do tipo retEnviCte + public static retCTeOS CarregarDeXmlString(this retCTeOS retEnviCte, string xmlString) + { + return FuncoesXml.XmlStringParaClasse(xmlString); + } + + /// + /// Converte o objeto retEnviCte para uma string no formato XML + /// + /// + /// Retorna uma string no formato XML com os dados do objeto retEnviCte + public static string ObterXmlString(this retCTeOS retEnviCte) + { + return FuncoesXml.ClasseParaXmlString(retEnviCte); + } + + public static void SalvarXmlEmDisco(this retCTeOS retEnviCte, ConfiguracaoServico config) + { + if (config.NaoSalvarXml()) return; + + var caminhoXml = config.DiretorioSalvarXml; + var protocolo = "000000"; + + if (retEnviCte?.protCTe?.infProt?.nProt != null) + { + protocolo = retEnviCte.protCTe.infProt.nProt; + } + + var arquivoSalvar = Path.Combine(caminhoXml, new StringBuilder(protocolo).Append("-rec.xml").ToString()); + + FuncoesXml.ClasseParaArquivoXml(retEnviCte, arquivoSalvar); + } + + public static bool IsAutorizado(this retCTeOS retConsSitCTe) + { + return retConsSitCTe != null && retConsSitCTe.protCTe != null && retConsSitCTe.protCTe.infProt.cStat == (int)StatusAutorizacao.Autorizado; // manual cte 3.00 página 89 + } + + public static bool IsCancelada(this retCTeOS retConsSitCTe) + { + return retConsSitCTe != null && retConsSitCTe.protCTe != null && retConsSitCTe.protCTe.infProt.cStat == (int)StatusAutorizacao.Cancelada; // manual cte 3.00 página 89 + } + + public static bool IsDenegada(this retCTeOS retConsSitCTe) + { + return retConsSitCTe != null && retConsSitCTe.protCTe != null && (retConsSitCTe.protCTe.infProt.cStat == (int)StatusAutorizacao.Denegada + || retConsSitCTe.protCTe.infProt.cStat == (int)StatusAutorizacao.Denegado205 + || retConsSitCTe.protCTe.infProt.cStat == (int)StatusAutorizacao.DenegadoEmitente); // manual cte 3.00 página 89 + } + + public static bool IsRejeicao(this retCTeOS retConsSitCTe) + { + return retConsSitCTe != null && !IsAutorizado(retConsSitCTe) && !IsCancelada(retConsSitCTe) && !IsDenegada(retConsSitCTe); + } + + public static bool IsRejeicao999(this retCTeOS retConsSitCTe) + { + return retConsSitCTe != null && !IsAutorizado(retConsSitCTe) && !IsCancelada(retConsSitCTe) && !IsDenegada(retConsSitCTe) && retConsSitCTe.cStat == 999; + } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/Complemento/complOs.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/Complemento/complOs.cs new file mode 100644 index 000000000..fabaca21c --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/Complemento/complOs.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using System.Xml.Serialization; +using CTe.Classes.Informacoes.Complemento; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.Complemento +{ + public class complOs + { + public string xCaracAd { get; set; } + + public string xCaracSer { get; set; } + + public string xEmi { get; set; } + + public string xObs { get; set; } + + [XmlElement(ElementName = "ObsCont")] + public List ObsCont { get; set; } + + [XmlElement(ElementName = "ObsFisco")] + public List ObsFisco { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/Emitente/emitOs.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/Emitente/emitOs.cs new file mode 100644 index 000000000..e4f370468 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/Emitente/emitOs.cs @@ -0,0 +1,64 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using CTe.Classes.Informacoes.Emitente; + +namespace CTe.CTeOSDocumento.CTe.Classes.Informacoes.Emitente +{ + public class emitOs + { + public string CNPJ { get; set; } + + public string IE { get; set; } + + /// + /// Versão 3.00 - Não é obrigatório + /// + public string IEST { get; set; } + + public string xNome { get; set; } + + public string xFant { get; set; } + + public enderEmit enderEmit { get; set; } + + /// + /// Versão 4.00 é Obrigatório + /// + public CRT? CRT { get; set; } + /// + /// Se null, não aparece no xml + /// + public bool CRTSpecified { get { return CRT.HasValue; } } + } +} diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/Identificacao/ideOs.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/Identificacao/ideOs.cs new file mode 100644 index 000000000..f3affdeff --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/Identificacao/ideOs.cs @@ -0,0 +1,164 @@ +using System; +using System.Collections.Generic; +using System.Xml.Serialization; +using CTe.Classes.Informacoes.Identificacao; +using CTe.Classes.Informacoes.Tipos; +using DFe.Classes.Entidades; +using DFe.Classes.Extensoes; +using DFe.Classes.Flags; +using DFe.Utils; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.Identificacao +{ + public class ideOs + { + /// + /// B02 - Código da UF do emitente do Documento Fiscal. Utilizar a Tabela do IBGE. + /// + public Estado cUF { get; set; } + + [XmlIgnore] + public int cCT { get; set; } + + [XmlElement(ElementName = "cCT")] + public string ProxycCT + { + get { return this.cCT.ToString("00000000"); } + set { this.cCT = int.Parse(value); } + } + + public int CFOP { get; set; } + + public string natOp { get; set; } + + /// + /// B06 - Modelo do Documento Fiscal + /// + public ModeloDocumento mod { get; set; } + + public short serie { get; set; } + + public long nCT { get; set; } + + /// + /// Versão 3.0 AAAA-MM-DDTHH:MM:DD TZD + /// + [XmlIgnore] + public DateTime dhEmi { get; set; } + + [XmlElement(ElementName = "dhEmi")] + public string ProxydhEmi + { + get { return this.dhEmi.ParaDataHoraStringUtc(); } + set { this.dhEmi = DateTime.Parse(value); } + } + + public tpImp tpImp { get; set; } + + public tpEmis tpEmis { get; set; } + + public int cDV { get; set; } + + /// + /// B24 - Identificação do Ambiente + /// + public TipoAmbiente tpAmb { get; set; } + + /// + /// B11 - Tipo do Documento Fiscal + /// + public tpCTe tpCTe { get; set; } + + /// + /// Versão 3.00 = Informe AplicativoContribuinte ou ContribuinteAplicativoFisco + /// Versão 2.00 = Qualquer uma das opções + /// + public procEmi procEmi { get; set; } + + public string verProc { get; set; } + + public long cMunEnv { get; set; } + + public string xMunEnv { get; set; } + + [XmlIgnore] + public Estado UFEnv { get; set; } + + [XmlElement(ElementName = "UFEnv")] + public string ProxyUFEnv + { + get { return UFEnv.GetSiglaUfString(); } + set { UFEnv = UFEnv.SiglaParaEstado(value); } + } + + /// + /// Unico permitido + /// 01 - Rodoviário + /// + public modal modal { get; set; } + + /// + /// Unicos Permitidos + /// Transporte de Pessoas + /// Transporte de Valores + /// Excesso de Bagagem + /// + public tpServ tpServ { get; set; } + + public indIEToma indIEToma { get; set; } + + public long cMunIni { get; set; } + + public string xMunIni { get; set; } + + [XmlIgnore] + public Estado UFIni { get; set; } + + [XmlElement(ElementName = "UFIni")] + public string ProxyUFIni + { + get { return UFIni.GetSiglaUfString(); } + set { UFIni = UFIni.SiglaParaEstado(value); } + } + + public long cMunFim { get; set; } + + public string xMunFim { get; set; } + + [XmlIgnore] + public Estado UFFim { get; set; } + + [XmlElement(ElementName = "UFFim")] + public string ProxyUFFim + { + get { return UFFim.GetSiglaUfString(); } + set + { + UFFim = UFFim.SiglaParaEstado(value); + } + } + + [XmlElement("infPercurso")] + public List infPercurso { get; set; } + + [XmlIgnore] + public DateTime? dhCont { get; set; } + + [XmlElement(ElementName = "dhCont")] + public string ProxydhCont + { + get + { + if (dhCont == null) return null; + + return dhCont.Value.ParaDataHoraString(); + } + set + { + dhCont = Convert.ToDateTime(value); + } + } + + public string xJust { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/Impostos/impOs.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/Impostos/impOs.cs new file mode 100644 index 000000000..64d234b4d --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/Impostos/impOs.cs @@ -0,0 +1,26 @@ +using CTe.Classes.Informacoes.Impostos; +using CTe.Classes.Informacoes.Impostos.Tributacao; +using DFe.Classes; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.Impostos +{ + public class impOs + { + public ICMS ICMS { get; set; } + + private decimal? _vTotTrib; + public decimal? vTotTrib + { + get { return _vTotTrib.Arredondar(2); } + set { _vTotTrib = value.Arredondar(2); } + } + + public bool vTotTribSpecified { get { return vTotTrib.HasValue; } } + + public string infAdFisco { get; set; } + + public ICMSUFFim ICMSUFFim { get; set; } + + public infTribFed infTribFed { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/Impostos/infTribFed.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/Impostos/infTribFed.cs new file mode 100644 index 000000000..e252c7de8 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/Impostos/infTribFed.cs @@ -0,0 +1,83 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using DFe.Classes; + +namespace CTe.Classes.CTeOutrosServicos.Informacoes.Impostos +{ + public class infTribFed + { + private decimal? _vPis; + private decimal? _vCofins; + private decimal? _vIr; + private decimal? _vInss; + private decimal? _vCsll; + + public decimal? vPIS + { + get { return _vPis.Arredondar(2); } + set { _vPis = value.Arredondar(2); } + } + + public decimal? vCOFINS + { + get { return _vCofins.Arredondar(2); } + set { _vCofins = value.Arredondar(2); } + } + + public decimal? vIR + { + get { return _vIr.Arredondar(2); } + set { _vIr = value.Arredondar(2); } + } + + public decimal? vINSS + { + get { return _vInss.Arredondar(2); } + set { _vInss = value.Arredondar(2); } + } + + public decimal? vCSLL + { + get { return _vCsll.Arredondar(2); } + set { _vCsll = value.Arredondar(2); } + } + + + public bool vPISSpecified { get { return vPIS.HasValue; } } + public bool vCOFINSSpecified { get { return vCOFINS.HasValue; } } + public bool vIRSpecified { get { return vIR.HasValue; } } + public bool vINSSSpecified { get { return vINSS.HasValue; } } + public bool vCSLLSpecified { get { return vCSLL.HasValue; } } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/cobr.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/cobr.cs new file mode 100644 index 000000000..528bc808e --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/cobr.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; +using System.Xml.Serialization; +using System; +using CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.InfCTeNormal.cobrancas; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.InfCTeNormal +{ + [Serializable] + public class cobr + { + [XmlElement("fat", Order = 1)] + public fat fat { get; set; } + + [XmlElement("dup", Order = 2)] + public List dup; + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/cobrancas/dup.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/cobrancas/dup.cs new file mode 100644 index 000000000..fb09d57e4 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/cobrancas/dup.cs @@ -0,0 +1,36 @@ +using System; +using System.Xml.Serialization; +using DFe.Classes; +using DFe.Utils; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.InfCTeNormal.cobrancas +{ + public class dup + { + private decimal? _vDup; + public string nDup { get; set; } + + [XmlIgnore] + public DateTime? dVenc { get; set; } + + [XmlElement(ElementName = "dVenc")] + public string ProxydVenc + { + get + { + if (dVenc == null) return null; + + return dVenc.Value.ParaDataString(); + } + set { dVenc = Convert.ToDateTime(value); } + } + + public decimal? vDup + { + get { return _vDup.Arredondar(2); } + set { _vDup = value.Arredondar(2); } + } + + public bool vDupSpecified { get { return vDup.HasValue; } } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/cobrancas/fat.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/cobrancas/fat.cs new file mode 100644 index 000000000..077921f91 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/cobrancas/fat.cs @@ -0,0 +1,35 @@ +using DFe.Classes; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.InfCTeNormal.cobrancas +{ + public class fat + { + private decimal? _vOrig; + private decimal? _vDesc; + private decimal? _vLiq; + public string nFat { get; set; } + + public decimal? vOrig + { + get { return _vOrig.Arredondar(2); } + set { _vOrig = value.Arredondar(2); } + } + + public decimal? vDesc + { + get { return _vDesc.Arredondar(2); } + set { _vDesc = value.Arredondar(2); } + } + + public decimal? vLiq + { + get { return _vLiq.Arredondar(2); } + set { _vLiq = value.Arredondar(2); } + } + + + public bool vOrigSpecified { get { return vOrig.HasValue; } } + public bool vDescSpecified { get { return vDesc.HasValue; } } + public bool vLiqSpecified { get { return vLiq.HasValue; } } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/infCTeNormOs.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/infCTeNormOs.cs new file mode 100644 index 000000000..5af2ef283 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/infCTeNormOs.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; +using System.Xml.Serialization; +using CTe.Classes.Informacoes.infCTeNormal; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.InfCTeNormal +{ + public class infCTeNormOs + { + public infServico infServico { get; set; } + + [XmlElement("infDocRef")] + public List infDocRef { get; set; } + + [XmlElement("seg")] + public List seg { get; set; } + + [XmlElement("infModal")] + public infModalOs infModal { get; set; } + + [XmlElement("infCteSub")] + public infCteSubOs infCteSub { get; set; } + + [XmlElement("cobr")] + public cobr cobr { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/infCteSubOs.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/infCteSubOs.cs new file mode 100644 index 000000000..03a289fae --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/infCteSubOs.cs @@ -0,0 +1,13 @@ +using CTe.Classes.Informacoes.infCTeNormal.infCteSubs; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.InfCTeNormal +{ + public class infCteSubOs + { + public string chCte { get; set; } + + public string refCteAnu { get; set; } + + public tomaICMS tomaICMS { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/infDocRef.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/infDocRef.cs new file mode 100644 index 000000000..6c564a924 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/infDocRef.cs @@ -0,0 +1,67 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.Xml.Serialization; +using DFe.Classes; +using DFe.Utils; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.InfCTeNormal +{ + public class infDocRef + { + private decimal? _vDoc; + + + public string nDoc { get; set; } + public short? serie { get; set; } + public bool serieSpecified { get { return serie.HasValue; } } + + public short? subserie { get; set; } + public bool subserieSpecified { get { return subserie.HasValue; } } + + [XmlIgnore] + public DateTime dEmi { get; set; } + + [XmlElement(ElementName = "dEmi")] + public string ProxydEmi { get { return dEmi.ParaDataString(); } set { dEmi = Convert.ToDateTime(value); } } + + public decimal? vDoc + { + get { return _vDoc.Arredondar(2); } + set { _vDoc = value.Arredondar(2); } + } + + public bool vDocSpecified { get { return vDoc.HasValue; } } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/infModalOs.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/infModalOs.cs new file mode 100644 index 000000000..2f6639dc3 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/infModalOs.cs @@ -0,0 +1,15 @@ +using System.Xml.Serialization; +using CTe.Classes.Informacoes.infCTeNormal.infModals; +using CTe.Classes.Informacoes.Tipos; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.InfCTeNormal +{ + public class infModalOs + { + [XmlAttribute] + public versaoModal versaoModal { get; set; } + + [XmlElement("rodoOS", typeof(rodoOS), Namespace = "http://www.portalfiscal.inf.br/cte")] + public ContainerModal ContainerModal { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/infQOs.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/infQOs.cs new file mode 100644 index 000000000..7e558c9e9 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/infQOs.cs @@ -0,0 +1,50 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using DFe.Classes; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.InfCTeNormal +{ + public class infQOs + { + private decimal? _qCarga; + + public decimal? qCarga + { + get { return _qCarga.Arredondar(4); } + set { _qCarga = value.Arredondar(4); } + } + + public bool qCargaSpecified { get { return _qCarga.HasValue; } } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/rodoOS.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/rodoOS.cs new file mode 100644 index 000000000..f9bfb489c --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/rodoOS.cs @@ -0,0 +1,51 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.Xml.Serialization; +using CTe.Classes.Informacoes.infCTeNormal.infModals; +using CTe.Classes.Informacoes.infCTeNormal.infModals.rodoviarioOS; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.InfCTeNormal +{ + public class rodoOS : ContainerModal + { + public string TAF { get; set; } + + public string NroRegEstadual { get; set; } + + [XmlElement(ElementName = "veic")] + public veicOs veic { get; set; } + + public infFretamento infFretamento { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/segOs.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/segOs.cs new file mode 100644 index 000000000..cdb64d8ac --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/segOs.cs @@ -0,0 +1,13 @@ +using CTe.Classes.Informacoes.Tipos; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.InfCTeNormal +{ + public class segOs + { + public respSeg respSeg { get; set; } + + public string xSeg { get; set; } + + public string nApol { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/veicOs.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/veicOs.cs new file mode 100644 index 000000000..cfafdef1d --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/InfCTeOutrosServicosNormal/veicOs.cs @@ -0,0 +1,26 @@ +using System.Xml.Serialization; +using CTe.Classes.Informacoes.infCTeNormal.infModals.rodoviarioOS; +using DFe.Classes.Entidades; +using DFe.Classes.Extensoes; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.InfCTeNormal +{ + public class veicOs + { + public string placa { get; set; } + public string RENAVAM { get; set; } + + public prop prop { get; set; } + + [XmlIgnore] + public Estado UF { get; set; } + + + [XmlElement(ElementName = "UF")] + public string ProxyUF + { + get { return UF.GetSiglaUfString(); } + set { UF = UF.SiglaParaEstado(value); } + } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/Tomador/enderTomaOs.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/Tomador/enderTomaOs.cs new file mode 100644 index 000000000..fe8df1119 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/Tomador/enderTomaOs.cs @@ -0,0 +1,46 @@ +using System.Xml.Serialization; +using DFe.Classes.Entidades; +using DFe.Classes.Extensoes; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.Tomador +{ + public class enderTomaOs + { + public string xLgr { get; set; } + + public string nro { get; set; } + + public string xCpl { get; set; } + + public string xBairro { get; set; } + + public long cMun { get; set; } + + public string xMun { get; set; } + + [XmlIgnore] + public long? CEP { get; set; } + + [XmlElement(ElementName = "CEP")] + public string ProxyCEP + { + get + { + return CEP != null ? CEP.Value.ToString("D8") : null; + } + set { CEP = long.Parse(value); } + } + + [XmlIgnore] + public Estado UF { get; set; } + + [XmlElement(ElementName = "UF")] + public string ProxyUF { get { return UF.GetSiglaUfString(); } set { UF = UF.SiglaParaEstado(value); } } + + public int? cPais { get; set; } + + public bool cPaisSpecified { get { return cPais.HasValue; } } + + public string xPais { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/Tomador/tomaOs.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/Tomador/tomaOs.cs new file mode 100644 index 000000000..7a888e0f0 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/Tomador/tomaOs.cs @@ -0,0 +1,24 @@ +using System.Xml.Serialization; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.Tomador +{ + public class tomaOs + { + public string CNPJ { get; set; } + + public string CPF { get; set; } + + public string IE { get; set; } + + public string xNome { get; set; } + + public string xFant { get; set; } + + public string fone { get; set; } + + [XmlElement(ElementName = "enderToma")] + public enderTomaOs enderToma { get; set; } + + public string email { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/Valores/vPrestOs.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/Valores/vPrestOs.cs new file mode 100644 index 000000000..1b58d1f75 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/Valores/vPrestOs.cs @@ -0,0 +1,63 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.Collections.Generic; +using System.Xml.Serialization; +using CTe.Classes.Informacoes.Complemento; +using DFe.Classes; + +namespace CTe.CTeOSDocumento.CTe.Classes.Informacoes.Valores +{ + public class vPrestOs + { + [XmlElement("vTPrest", Order = 0)] + public decimal vTPrest + { + get { return _vTPrest.Arredondar(2); } + set { _vTPrest = value.Arredondar(2); } + } + + [XmlElement("vRec", Order = 1)] + public decimal vRec + { + get { return _vRec.Arredondar(2); } + set { _vRec = value.Arredondar(2); } + } + + [XmlElement("Comp", Order = 2)] + public List Comp { get; set; } + + private decimal _vTPrest; + private decimal _vRec; + } +} diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/infCteOS.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/infCteOS.cs new file mode 100644 index 000000000..0d7fe7c62 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Informacoes/infCteOS.cs @@ -0,0 +1,57 @@ +using System.Collections.Generic; +using System.Xml.Serialization; +using CTe.Classes.Informacoes; +using CTe.Classes.Informacoes.infCteAnu; +using CTe.Classes.Informacoes.infCteComp; +using CTe.Classes.Informacoes.infRespTec; +using DFe.Classes.Flags; +using CTe.CTeOSDocumento.CTe.Classes.Informacoes.Emitente; +using CTe.CTeOSDocumento.CTe.Classes.Informacoes.Valores; +using CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.Complemento; +using CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.Identificacao; +using CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.Impostos; +using CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.InfCTeNormal; +using CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.Tomador; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Informacoes +{ + public class infCteOS + { + [XmlAttribute] + public VersaoServico versao { get; set; } + + [XmlAttribute] + public string Id { get; set; } + + [XmlElement(ElementName = "ide")] + public ideOs ide { get; set; } + + [XmlElement(ElementName = "compl")] + public complOs compl { get; set; } + + [XmlElement(ElementName = "emit")] + public emitOs emit { get; set; } + + [XmlElement(ElementName = "toma")] + public tomaOs toma { get; set; } + + [XmlElement(ElementName = "vPrest")] + public vPrestOs vPrest { get; set; } + + [XmlElement(ElementName = "imp")] + public impOs imp { get; set; } + + [XmlElement(ElementName = "infCTeNorm")] + public infCTeNormOs infCTeNorm { get; set; } + + public infCteComp infCteComp { get; set; } + + public infCteAnu infCteAnu { get; set; } + + [XmlElement("autXML")] + public List autXML { get; set; } + + [XmlElement(ElementName = "infRespTec")] + public infRespTec infRespTec { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Retorno/cteOSProc.cs b/CTe.Classes/CTeOutrosServicos/Retorno/cteOSProc.cs new file mode 100644 index 000000000..ecbe0fb98 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Retorno/cteOSProc.cs @@ -0,0 +1,20 @@ +using System; +using System.Xml.Serialization; +using CTe.Classes.Protocolo; +using DFe.Classes.Flags; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Retorno +{ + [Serializable] + [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", + ElementName = "cteOSProc")] + public class cteOSProc + { + [XmlAttribute] + public VersaoServico versao { get; set; } + + public global::CTe.CTeOSClasses.CTeOS CTeOS { get; set; } + + public protCTe protCTe { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/CTeOutrosServicos/Retorno/retCTeOS.cs b/CTe.Classes/CTeOutrosServicos/Retorno/retCTeOS.cs new file mode 100644 index 000000000..0a02a2de7 --- /dev/null +++ b/CTe.Classes/CTeOutrosServicos/Retorno/retCTeOS.cs @@ -0,0 +1,69 @@ +using System.Xml.Serialization; +using CTe.Classes.Protocolo; +using CTe.Classes.Servicos; +using DFe.Classes.Entidades; +using DFe.Classes.Flags; +using DFe.Utils; + +namespace CTe.CTeOSDocumento.CTe.CTeOS.Servicos.Autorizacao +{ + [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte")] + public class retCTeOS : RetornoBase + { + /// + /// AR02 - Versão do leiaute + /// + [XmlAttribute] + public string versao { get; set; } + + /// + /// AR03 - Identificação do Ambiente: 1 – Produção / 2 - Homologação + /// + public TipoAmbiente tpAmb { get; set; } + + /// + /// AR06a - Código da UF que atendeu a solicitação. + /// + public Estado cUF { get; set; } + + /// + /// AR04 - Versão do Aplicativo que recebeu o Lote. A versão deve ser iniciada com a sigla da UF nos casos de WS + /// próprio ou a sigla SCAN, SVAN ou SVRS nos demais casos. + /// + public string verAplic { get; set; } + + /// + /// AR05 - Código do status da resposta (vide item 5.1.1) + /// + public int cStat { get; set; } + + /// + /// AR06 - Descrição literal do status da resposta + /// + public string xMotivo { get; set; } + + /// + /// AR07 - Dados do Recibo do Lote (Só é gerado se o Lote for aceito) + /// + public protCTe protCTe { get; set; } + + public static retCTeOS LoadXml(string xml) + { + var retorno = FuncoesXml.XmlStringParaClasse(xml); + retorno.RetornoXmlString = xml; + return retorno; + } + + public static retCTeOS LoadXml(string xml, CTeOSClasses.CTeOS cteOS) + { + var retorno = LoadXml(xml); + retorno.EnvioXmlString = FuncoesXml.ClasseParaXmlString(cteOS); + return retorno; + } + + public void LoadXml(CTeOSClasses.CTeOS cteOS) + { + EnvioXmlString = FuncoesXml.ClasseParaXmlString(cteOS); + } + } +} \ No newline at end of file diff --git a/CTe.Classes/ConfiguracaoServico.cs b/CTe.Classes/ConfiguracaoServico.cs index 8cb34c3a7..8020a38f8 100644 --- a/CTe.Classes/ConfiguracaoServico.cs +++ b/CTe.Classes/ConfiguracaoServico.cs @@ -34,6 +34,7 @@ using System; using System.IO; using System.Security.Cryptography.X509Certificates; +using CTe.Classes.Informacoes.Tipos; using CTe.Classes.Servicos.Tipos; using DFe.Classes.Entidades; using DFe.Classes.Flags; @@ -47,10 +48,13 @@ public sealed class ConfiguracaoServico : IDisposable private static volatile ConfiguracaoServico _instancia; private static readonly object SyncRoot = new object(); private string _diretorioSchemas; + private bool _unZip = true; - private ConfiguracaoServico() + public ConfiguracaoServico() { ConfiguracaoCertificado = new ConfiguracaoCertificado(); + TipoEmissao = tpEmis.teNormal; + IsValidaSchemas = true; } /// @@ -114,6 +118,23 @@ public void Dispose() /// public versao VersaoLayout { get; set; } + public versao ObterVersaoLayoutValida() + { + switch (VersaoLayout) + { + case versao.ve200: + return versao.ve200; + case versao.ve300: + return versao.ve300; + case versao.ve400: + return versao.ve400; + default: + throw new ArgumentOutOfRangeException(); + } + } + + public bool IsAdicionaQrCode { get; set; } + /// /// Diretório onde estão aramazenados os schemas para validação /// @@ -136,7 +157,23 @@ public string DiretorioSchemas /// /// Diretório onde os xmls de envio/retorno devem ser salvos /// - public string DiretorioSalvarXml { get; set; } + public string DiretorioSalvarXml { get; set; } + + /// + /// Valor True, será descompactado os arquivos, + /// Valor False, os valor não será descompactado e a classes não serão preenchidas + /// + public bool UnZip + { + get + { + return _unZip; + } + set + { + _unZip = value; + } + } /// /// Instância do Singleton de ConfiguracaoServico @@ -156,6 +193,10 @@ public static ConfiguracaoServico Instancia } } + public tpEmis TipoEmissao { get; set; } + + public bool IsValidaSchemas { get; set; } + public bool NaoSalvarXml() { return !IsSalvarXml; diff --git a/CTe.Classes/Ext/extversao.cs b/CTe.Classes/Ext/extversao.cs index ca7b8ce31..11871ab78 100644 --- a/CTe.Classes/Ext/extversao.cs +++ b/CTe.Classes/Ext/extversao.cs @@ -41,12 +41,14 @@ public static string GetString(this versao versao) { switch (versao) { - case versao.ve200: + case versao.ve200: return "2.00"; - case versao.ve300: + case versao.ve300: return "3.00"; + case versao.ve400: + return "4.00"; default: - throw new InvalidOperationException("A emissão do CT-e possui apenas a versão 2.00 é 3.00"); + throw new InvalidOperationException("Versão de CT-e inválida. Para emissão apenas as versões 2.00, 3.00 e 4.00 são aceitas."); } } } diff --git a/CTe.Classes/Informacoes/Complemento/Comp.cs b/CTe.Classes/Informacoes/Complemento/Comp.cs index 7d8826ab4..dae5905ef 100644 --- a/CTe.Classes/Informacoes/Complemento/Comp.cs +++ b/CTe.Classes/Informacoes/Complemento/Comp.cs @@ -30,14 +30,20 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using DFe.Classes; + namespace CTe.Classes.Informacoes.Complemento { public class Comp { private string _xNome; - private double _vComp; + private decimal _vComp; public string xNome { get { return _xNome; } set { _xNome = value; } } - public double vComp { get { return _vComp; } set { _vComp = value; } } + public decimal vComp + { + get { return _vComp.Arredondar(2); } + set { _vComp = value.Arredondar(2); } + } } } diff --git a/CTe.Classes/Informacoes/Emitente/emit.cs b/CTe.Classes/Informacoes/Emitente/emit.cs index 15c4d3cb1..741bcc03f 100644 --- a/CTe.Classes/Informacoes/Emitente/emit.cs +++ b/CTe.Classes/Informacoes/Emitente/emit.cs @@ -49,5 +49,16 @@ public class emit public string xFant { get; set; } public enderEmit enderEmit { get; set; } + + + /// + /// Versão 4.00 é Obrigatório + /// + public CRT? CRT { get; set; } + + /// + /// Se null, não aparece no xml + /// + public bool CRTSpecified { get { return CRT.HasValue; } } } } diff --git a/CTe.Classes/Informacoes/Emitente/emitTipos.cs b/CTe.Classes/Informacoes/Emitente/emitTipos.cs index 8f9c3a3cc..527e4c2be 100644 --- a/CTe.Classes/Informacoes/Emitente/emitTipos.cs +++ b/CTe.Classes/Informacoes/Emitente/emitTipos.cs @@ -31,6 +31,7 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.ComponentModel; using System.Xml.Serialization; namespace CTe.Classes.Informacoes.Emitente @@ -42,8 +43,29 @@ namespace CTe.Classes.Informacoes.Emitente /// public enum CRT { - [XmlEnum("1")] SimplesNacional = 1, - [XmlEnum("2")] SimplesNacionalExcessoSublimite = 2, - [XmlEnum("3")] RegimeNormal = 3 + /// + /// 1 – Simples Nacional + /// + [Description("Simples Nacional")] + [XmlEnum("1")] + SimplesNacional = 1, + + /// + /// 2 – Simples Nacional – excesso de sublimite de receita bruta + /// + [Description("Simples Nacional – excesso de sublimite de receita bruta")] + [XmlEnum("2")] + SimplesNacionalExcessoSublimite = 2, + + /// + /// 3 – Regime Normal + /// + [Description("Regime Normal")] + [XmlEnum("3")] + RegimeNormal = 3, + + [Description("Simples Nacional MEI")] + [XmlEnum("4")] + SimplesNacionalMei = 4, } } \ No newline at end of file diff --git a/CTe.Classes/Informacoes/Identificacao/enderToma.cs b/CTe.Classes/Informacoes/Identificacao/enderToma.cs index 5b8ac5a10..a8ca4e538 100644 --- a/CTe.Classes/Informacoes/Identificacao/enderToma.cs +++ b/CTe.Classes/Informacoes/Identificacao/enderToma.cs @@ -51,7 +51,11 @@ public class enderToma public string xMun { get; set; } - public long CEP { get; set; } + [XmlIgnore] + public long? CEP { get; set; } + + [XmlElement(ElementName = "CEP")] + public string ProxyCEP { get { return CEP != null ? CEP.Value.ToString("D8") : null; } set { CEP = long.Parse(value); } } [XmlIgnore] public Estado UF { get; set; } diff --git a/CTe.Classes/Informacoes/Identificacao/ide.cs b/CTe.Classes/Informacoes/Identificacao/ide.cs index d83fb73b9..94bee15cf 100644 --- a/CTe.Classes/Informacoes/Identificacao/ide.cs +++ b/CTe.Classes/Informacoes/Identificacao/ide.cs @@ -45,8 +45,19 @@ namespace CTe.Classes.Informacoes.Identificacao { public class ide { - [XmlIgnore] - private readonly ConfiguracaoServico _configuracaoServico = ConfiguracaoServico.Instancia; + + public ide(ConfiguracaoServico configuracaoServico = null) + { + _configuracaoServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + } + + public ide() + { + + } + + [XmlIgnore] + private ConfiguracaoServico _configuracaoServico; /// /// B02 - Código da UF do emitente do Documento Fiscal. Utilizar a Tabela do IBGE. @@ -88,24 +99,27 @@ public string ProxycCT /// Versão 2.0 AAAA-MM-DDTHH:MM:DD /// [XmlIgnore] - public DateTime dhEmi { get; set; } + public DateTimeOffset dhEmi { get; set; } [XmlElement(ElementName = "dhEmi")] public string ProxydhEmi { get { + if (_configuracaoServico == null) + _configuracaoServico = ConfiguracaoServico.Instancia; switch (_configuracaoServico.VersaoLayout) { case versao.ve200: return dhEmi.ParaDataHoraStringSemUtc(); + case versao.ve400: case versao.ve300: return dhEmi.ParaDataHoraStringUtc(); default: throw new InvalidOperationException("Versão Inválida para CT-e"); } } - set { dhEmi = DateTime.Parse(value); } + set { dhEmi = DateTimeOffset.Parse(value); } } public tpImp tpImp { get; set; } @@ -225,7 +239,7 @@ public string ProxydhCont { if (dhCont == null) return null; - return dhCont.Value.ParaDataHoraString(); + return dhCont.Value.ParaDataHoraStringUtc(); } set { diff --git a/CTe.Classes/Informacoes/Impostos/IBSCBS.cs b/CTe.Classes/Informacoes/Impostos/IBSCBS.cs new file mode 100644 index 000000000..eac0359bf --- /dev/null +++ b/CTe.Classes/Informacoes/Impostos/IBSCBS.cs @@ -0,0 +1,59 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs; +using CTe.Classes.Informacoes.Impostos.Tipos; + +namespace CTe.Classes.Informacoes.Impostos +{ + /// + /// Grupo do IBS e CBS + /// + public class IBSCBS + { + /// + /// Código de Situação Tributária do IBS e CBS + /// + public CstIbsCbs CST { get; set; } + + /// + /// Código de Classificação Tributária do IBS e CBS + /// + public string cClassTrib { get; set; } + + /// + /// Grupo de Informações do IBS e da CBS + /// + public gIBSCBS gIBSCBS { get; set; } + } +} diff --git a/CTe.Classes/Informacoes/Impostos/ICMS/ICMS90.cs b/CTe.Classes/Informacoes/Impostos/ICMS/ICMS90.cs index 8e0ff6cc9..21cebb853 100644 --- a/CTe.Classes/Informacoes/Impostos/ICMS/ICMS90.cs +++ b/CTe.Classes/Informacoes/Impostos/ICMS/ICMS90.cs @@ -44,18 +44,19 @@ public ICMS90() CST = CST.ICMS90; } - private decimal _pRedBc; + private decimal? _pRedBc; private decimal _vBc; private decimal _pIcms; private decimal _vIcms; private decimal _vCred; public CST CST { get; set; } - public decimal pRedBC + public decimal? pRedBC { get { return _pRedBc.Arredondar(2); } set { _pRedBc = value.Arredondar(2); } } + public bool pRedBCSpecified { get { return pRedBC.HasValue; } } public decimal vBC { diff --git a/CTe.Classes/Informacoes/Impostos/ICMS/ICMSOutraUF.cs b/CTe.Classes/Informacoes/Impostos/ICMS/ICMSOutraUF.cs index 90d522033..71deef1c8 100644 --- a/CTe.Classes/Informacoes/Impostos/ICMS/ICMSOutraUF.cs +++ b/CTe.Classes/Informacoes/Impostos/ICMS/ICMSOutraUF.cs @@ -44,18 +44,20 @@ public ICMSOutraUF() CST = CST.ICMS90; } - private decimal _pRedBcOutraUf; + private decimal? _pRedBcOutraUf; private decimal _vBcOutraUf; private decimal _pIcmsOutraUf; private decimal _vIcmsOutraUf; public CST CST { get; set; } - public decimal pRedBCOutraUF + public decimal? pRedBCOutraUF { get { return _pRedBcOutraUf.Arredondar(2); } set { _pRedBcOutraUf = value.Arredondar(2); } } + public bool pRedBCOutraUFSpecified { get { return pRedBCOutraUF.HasValue; } } + public decimal vBCOutraUF { get { return _vBcOutraUf.Arredondar(2); } diff --git a/CTe.Classes/Informacoes/Impostos/ICMSUFFim.cs b/CTe.Classes/Informacoes/Impostos/ICMSUFFim.cs index 4b0197bcd..9702a177d 100644 --- a/CTe.Classes/Informacoes/Impostos/ICMSUFFim.cs +++ b/CTe.Classes/Informacoes/Impostos/ICMSUFFim.cs @@ -41,10 +41,12 @@ public class ICMSUFFim private decimal _pFcpufFim; private decimal _pIcmsufFim; private decimal _pIcmsInter; - private decimal _pIcmsInterPart; + private decimal? _pIcmsInterPart; private decimal _vFcpufFim; private decimal _vIcmsufFim; private decimal _vIcmsufIni; + private decimal? _vIcmsRel; + private decimal? _pIcmsRel; public decimal vBCUFFim { @@ -70,12 +72,29 @@ public decimal pICMSInter set { _pIcmsInter = value.Arredondar(2); } } - public decimal pICMSInterPart + public decimal? pICMSInterPart { get { return _pIcmsInterPart.Arredondar(2); } set { _pIcmsInterPart = value.Arredondar(2); } } + public bool pICMSInterPartSpecified + { + get { return this._pIcmsInterPart.HasValue; } + } + + + public decimal? pICMSRel + { + get { return _pIcmsRel.Arredondar(2); } + set { _pIcmsRel = value.Arredondar(2); } + } + + public bool pICMSRelSpecified + { + get { return _pIcmsRel.HasValue; } + } + public decimal vFCPUFFim { get { return _vFcpufFim.Arredondar(2); } @@ -93,5 +112,16 @@ public decimal vICMSUFIni get { return _vIcmsufIni.Arredondar(2); } set { _vIcmsufIni = value.Arredondar(2); } } + + public decimal? vICMSRel + { + get { return _vIcmsRel.Arredondar(2); } + set { _vIcmsRel = value.Arredondar(2); } + } + + public bool vICMSRelSpecified + { + get { return _vIcmsRel.HasValue; } + } } } \ No newline at end of file diff --git a/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/InformacoesCbs/gCBS.cs b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/InformacoesCbs/gCBS.cs new file mode 100644 index 000000000..e945b2bb8 --- /dev/null +++ b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/InformacoesCbs/gCBS.cs @@ -0,0 +1,80 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs; +using DFe.Classes; + +namespace CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs.InformacoesCbs +{ + /// + /// Grupo de Informações da CBS + /// + public class gCBS + { + private decimal _pCbs; + private decimal _vCbs; + + /// + /// Alíquota da CBS (em percentual) + /// + public decimal pCBS + { + get { return _pCbs.Arredondar(2); } + set { _pCbs = value.Arredondar(2); } + } + + /// + /// Grupo de Informações do Diferimento + /// + public gDif gDif { get; set; } + + /// + /// Grupo de Informações da Devolução de Tributos + /// + public gDevTrib gDevTrib { get; set; } + + /// + /// Grupo de Informações da Redução da Alíquota + /// + public gRed gRed { get; set; } + + /// + /// Valor da CBS + /// + public decimal vCBS + { + get { return _vCbs.Arredondar(2); } + set { _vCbs = value.Arredondar(2); } + } + } +} diff --git a/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/InformacoesIbs/gIBSMun.cs b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/InformacoesIbs/gIBSMun.cs new file mode 100644 index 000000000..8614d32ed --- /dev/null +++ b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/InformacoesIbs/gIBSMun.cs @@ -0,0 +1,80 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs; +using DFe.Classes; + +namespace CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs.InformacoesIbs +{ + /// + /// Grupo de Informações do IBS para o município + /// + public class gIBSMun + { + private decimal _pIbsMun; + private decimal _vIbsMun; + + /// + /// Alíquota do IBS de competência do Município (em percentual) + /// + public decimal pIBSMun + { + get { return _pIbsMun.Arredondar(2); } + set { _pIbsMun = value.Arredondar(2); } + } + + /// + /// Grupo de Informações do Diferimento + /// + public gDif gDif { get; set; } + + /// + /// Grupo de Informações da Devolução de Tributos + /// + public gDevTrib gDevTrib { get; set; } + + /// + /// Grupo de Informações da Redução da Alíquota + /// + public gRed gRed { get; set; } + + /// + /// Valor do IBS de competência do Município + /// + public decimal vIBSMun + { + get { return _vIbsMun.Arredondar(2); } + set { _vIbsMun = value.Arredondar(2); } + } + } +} diff --git a/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/InformacoesIbs/gIBSUF.cs b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/InformacoesIbs/gIBSUF.cs new file mode 100644 index 000000000..35d80de21 --- /dev/null +++ b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/InformacoesIbs/gIBSUF.cs @@ -0,0 +1,80 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs; +using DFe.Classes; + +namespace CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs.InformacoesIbs +{ + /// + /// Grupo de Informações do IBS para a UF + /// + public class gIBSUF + { + private decimal _pIbsUf; + private decimal _vIbsUf; + + /// + /// Alíquota do IBS de competência das UF (em percentual) + /// + public decimal pIBSUF + { + get { return _pIbsUf.Arredondar(2); } + set { _pIbsUf = value.Arredondar(2); } + } + + /// + /// Grupo de Informações do Diferimento + /// + public gDif gDif { get; set; } + + /// + /// Grupo de Informações da Devolução de Tributos + /// + public gDevTrib gDevTrib { get; set; } + + /// + /// Grupo de Informações da Redução da Alíquota + /// + public gRed gRed { get; set; } + + /// + /// Valor do IBS de competência da UF + /// + public decimal vIBSUF + { + get { return _vIbsUf.Arredondar(2); } + set { _vIbsUf = value.Arredondar(2); } + } + } +} diff --git a/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gCBSCredPres.cs b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gCBSCredPres.cs new file mode 100644 index 000000000..ef7dbb1bc --- /dev/null +++ b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gCBSCredPres.cs @@ -0,0 +1,79 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using DFe.Classes; + +namespace CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs +{ + /// + /// Grupo de Crédito Presumido da CBS + /// + public class gCBSCredPres + { + private decimal _pCredPres; + private decimal _vCredPres; + private decimal _vCredPresCondSus; + + /// + /// Código de Crédito Presumido + /// + public string cCredPres { get; set; } + + /// + /// Percentual de Crédito Presumido (em percentual) + /// + public decimal pCredPres + { + get { return _pCredPres.Arredondar(2); } + set { _pCredPres = value.Arredondar(2); } + } + + /// + /// Valor de Crédito Presumido + /// + public decimal vCredPres + { + get { return _vCredPres.Arredondar(2); } + set { _vCredPres = value.Arredondar(2); } + } + + /// + /// Valor de Crédito Presumido Condicionado ou Suspenso + /// + public decimal vCredPresCondSus + { + get { return _vCredPresCondSus.Arredondar(2); } + set { _vCredPresCondSus = value.Arredondar(2); } + } + } +} diff --git a/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gDevTrib.cs b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gDevTrib.cs new file mode 100644 index 000000000..960b1940d --- /dev/null +++ b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gDevTrib.cs @@ -0,0 +1,54 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using DFe.Classes; + +namespace CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs +{ + /// + /// Grupo de Informações da Devolução de Tributos + /// + public class gDevTrib + { + private decimal _vDevTrib; + + /// + /// Valor da devolução de tributos + /// + public decimal vDevTrib + { + get { return _vDevTrib.Arredondar(2); } + set { _vDevTrib = value.Arredondar(2); } + } + } +} diff --git a/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gDif.cs b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gDif.cs new file mode 100644 index 000000000..6e2d28425 --- /dev/null +++ b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gDif.cs @@ -0,0 +1,64 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using DFe.Classes; + +namespace CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs +{ + /// + /// Grupo de Informações do Diferimento + /// + public class gDif + { + private decimal _pDif; + private decimal _vDif; + + /// + /// Percentual de diferimento (em percentual) + /// + public decimal pDif + { + get { return _pDif.Arredondar(2); } + set { _pDif = value.Arredondar(2); } + } + + /// + /// Valor diferido + /// + public decimal vDif + { + get { return _vDif.Arredondar(2); } + set { _vDif = value.Arredondar(2); } + } + } +} diff --git a/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gIBSCBS.cs b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gIBSCBS.cs new file mode 100644 index 000000000..ad4c6f6e0 --- /dev/null +++ b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gIBSCBS.cs @@ -0,0 +1,101 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs.InformacoesCbs; +using CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs.InformacoesIbs; +using DFe.Classes; + +namespace CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs +{ + /// + /// Grupo de Informações do IBS e da CBS + /// + public class gIBSCBS + { + private decimal _vBc; + private decimal _vIbs; + + /// + /// Base de cálculo do IBS e CBS + /// + public decimal vBC + { + get { return _vBc.Arredondar(2); } + set { _vBc = value.Arredondar(2); } + } + + /// + /// Grupo de Informações do IBS para a UF + /// + public gIBSUF gIBSUF { get; set; } + + /// + /// Grupo de Informações do IBS para o município + /// + public gIBSMun gIBSMun { get; set; } + + /// + /// Valor do IBS + /// + public decimal vIBS + { + get { return _vIbs.Arredondar(2); } + set { _vIbs = value.Arredondar(2); } + } + + /// + /// Grupo de Informações da CBS + /// + public gCBS gCBS { get; set; } + + /// + /// Grupo de Informações da Tributação Regular + /// + public gTribRegular gTribRegular { get; set; } + + /// + /// Grupo de Crédito Presumido do IBS + /// + public gIBSCredPres gIBSCredPres { get; set; } + + /// + /// Grupo de Crédito Presumido da CBS + /// + public gCBSCredPres gCBSCredPres { get; set; } + + /// + /// Grupo de Informações da Composição do Valor do IBS e da CBS em Compras Governamentais + /// + public gTribCompraGov gTribCompraGov { get; set; } + } +} diff --git a/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gIBSCredPres.cs b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gIBSCredPres.cs new file mode 100644 index 000000000..e9f97ce22 --- /dev/null +++ b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gIBSCredPres.cs @@ -0,0 +1,79 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using DFe.Classes; + +namespace CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs +{ + /// + /// Grupo de Crédito Presumido do IBS + /// + public class gIBSCredPres + { + private decimal _pCredPres; + private decimal _vCredPres; + private decimal _vCredPresCondSus; + + /// + /// Código de Crédito Presumido + /// + public string cCredPres { get; set; } + + /// + /// Percentual de Crédito Presumido (em percentual) + /// + public decimal pCredPres + { + get { return _pCredPres.Arredondar(2); } + set { _pCredPres = value.Arredondar(2); } + } + + /// + /// Valor de Crédito Presumido + /// + public decimal vCredPres + { + get { return _vCredPres.Arredondar(2); } + set { _vCredPres = value.Arredondar(2); } + } + + /// + /// Valor de Crédito Presumido Condicionado ou Suspenso + /// + public decimal vCredPresCondSus + { + get { return _vCredPresCondSus.Arredondar(2); } + set { _vCredPresCondSus = value.Arredondar(2); } + } + } +} diff --git a/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gRed.cs b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gRed.cs new file mode 100644 index 000000000..6055b6020 --- /dev/null +++ b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gRed.cs @@ -0,0 +1,64 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using DFe.Classes; + +namespace CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs +{ + /// + /// Grupo de Informações da Redução da Alíquota + /// + public class gRed + { + private decimal _pRedAliq; + private decimal _pAliqEfet; + + /// + /// Percentual de redução da alíquota (em percentual) + /// + public decimal pRedAliq + { + get { return _pRedAliq.Arredondar(2); } + set { _pRedAliq = value.Arredondar(2); } + } + + /// + /// Percentual da alíquota efetiva (em percentual) + /// + public decimal pAliqEfet + { + get { return _pAliqEfet.Arredondar(2); } + set { _pAliqEfet = value.Arredondar(2); } + } + } +} diff --git a/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gTribCompraGov.cs b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gTribCompraGov.cs new file mode 100644 index 000000000..4e7a45567 --- /dev/null +++ b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gTribCompraGov.cs @@ -0,0 +1,104 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using DFe.Classes; + +namespace CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs +{ + /// + /// Grupo de Informações da Composição do Valor do IBS e da CBS em Compras Governamentais + /// + public class gTribCompraGov + { + private decimal _pAliqIBSUF; + private decimal _vTribIBSUF; + private decimal _pAliqIBSMun; + private decimal _vTribIBSMun; + private decimal _pAliqCBS; + private decimal _vTribCBS; + + /// + /// Alíquota do IBS UF nas compras governamentais (em percentual) + /// + public decimal pAliqIBSUF + { + get { return _pAliqIBSUF.Arredondar(2); } + set { _pAliqIBSUF = value.Arredondar(2); } + } + + /// + /// Valor do tributo do IBS UF nas compras governamentais + /// + public decimal vTribIBSUF + { + get { return _vTribIBSUF.Arredondar(2); } + set { _vTribIBSUF = value.Arredondar(2); } + } + + /// + /// Alíquota do IBS Município nas compras governamentais (em percentual) + /// + public decimal pAliqIBSMun + { + get { return _pAliqIBSMun.Arredondar(2); } + set { _pAliqIBSMun = value.Arredondar(2); } + } + + /// + /// Valor do tributo do IBS Município nas compras governamentais + /// + public decimal vTribIBSMun + { + get { return _vTribIBSMun.Arredondar(2); } + set { _vTribIBSMun = value.Arredondar(2); } + } + + /// + /// Alíquota da CBS nas compras governamentais (em percentual) + /// + public decimal pAliqCBS + { + get { return _pAliqCBS.Arredondar(2); } + set { _pAliqCBS = value.Arredondar(2); } + } + + /// + /// Valor do tributo da CBS nas compras governamentais + /// + public decimal vTribCBS + { + get { return _vTribCBS.Arredondar(2); } + set { _vTribCBS = value.Arredondar(2); } + } + } +} diff --git a/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gTribRegular.cs b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gTribRegular.cs new file mode 100644 index 000000000..9e49e2d1d --- /dev/null +++ b/CTe.Classes/Informacoes/Impostos/InformacoesIbsCbs/gTribRegular.cs @@ -0,0 +1,114 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using DFe.Classes; + +namespace CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs +{ + /// + /// Grupo de Informações da Tributação Regular + /// + public class gTribRegular + { + private decimal _pAliqEfetRegIBSUF; + private decimal _vTribRegIBSUF; + private decimal _pAliqEfetRegIBSMun; + private decimal _vTribRegIBSMun; + private decimal _pAliqEfetRegCBS; + private decimal _vTribRegCBS; + + /// + /// Código de Situação Tributária da Tributação Regular + /// + public string CSTReg { get; set; } + + /// + /// Código de Classificação Tributária da Tributação Regular + /// + public string cClassTribReg { get; set; } + + /// + /// Percentual da alíquota efetiva da Tributação Regular do IBS UF (em percentual) + /// + public decimal pAliqEfetRegIBSUF + { + get { return _pAliqEfetRegIBSUF.Arredondar(2); } + set { _pAliqEfetRegIBSUF = value.Arredondar(2); } + } + + /// + /// Valor da Tributação Regular do IBS UF + /// + public decimal vTribRegIBSUF + { + get { return _vTribRegIBSUF.Arredondar(2); } + set { _vTribRegIBSUF = value.Arredondar(2); } + } + + /// + /// Percentual da alíquota efetiva da Tributação Regular do IBS Município (em percentual) + /// + public decimal pAliqEfetRegIBSMun + { + get { return _pAliqEfetRegIBSMun.Arredondar(2); } + set { _pAliqEfetRegIBSMun = value.Arredondar(2); } + } + + /// + /// Valor da Tributação Regular do IBS Município + /// + public decimal vTribRegIBSMun + { + get { return _vTribRegIBSMun.Arredondar(2); } + set { _vTribRegIBSMun = value.Arredondar(2); } + } + + /// + /// Percentual da alíquota efetiva da Tributação Regular da CBS (em percentual) + /// + public decimal pAliqEfetRegCBS + { + get { return _pAliqEfetRegCBS.Arredondar(2); } + set { _pAliqEfetRegCBS = value.Arredondar(2); } + } + + /// + /// Valor da Tributação Regular da CBS + /// + public decimal vTribRegCBS + { + get { return _vTribRegCBS.Arredondar(2); } + set { _vTribRegCBS = value.Arredondar(2); } + } + } +} diff --git a/CTe.Classes/Informacoes/Impostos/Tipos/CstIbsCbs.cs b/CTe.Classes/Informacoes/Impostos/Tipos/CstIbsCbs.cs new file mode 100644 index 000000000..113d9082f --- /dev/null +++ b/CTe.Classes/Informacoes/Impostos/Tipos/CstIbsCbs.cs @@ -0,0 +1,66 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.ComponentModel; +using System.Xml.Serialization; + +namespace CTe.Classes.Informacoes.Impostos.Tipos +{ + /// + /// Código de Situação Tributária do IBS/CBS + /// Conforme NT 2025.001 v1.07 + /// + public enum CstIbsCbs + { + /// + /// 000 - Tributação integral + /// + [XmlEnum("000")] + [Description("Tributação integral")] + Cst000 = 0, + + /// + /// 200 - Alíquota zero + /// + [XmlEnum("200")] + [Description("Alíquota zero")] + Cst200 = 200, + + /// + /// 410 - Imunidade e não incidência + /// + [XmlEnum("410")] + [Description("Imunidade e não incidência")] + Cst410 = 410 + } +} diff --git a/CTe.Classes/Informacoes/Impostos/imp.cs b/CTe.Classes/Informacoes/Impostos/imp.cs index 15113ce5f..2e2b248ae 100644 --- a/CTe.Classes/Informacoes/Impostos/imp.cs +++ b/CTe.Classes/Informacoes/Impostos/imp.cs @@ -40,18 +40,40 @@ public class imp public Tributacao.ICMS ICMS { get; set; } private decimal? _vTotTrib; + public decimal? vTotTrib { get { return _vTotTrib.Arredondar(2); } set { _vTotTrib = value.Arredondar(2); } } - public bool vTotTribSpecified { get { return vTotTrib.HasValue; } } + public bool vTotTribSpecified + { + get { return vTotTrib.HasValue; } + } public string infAdFisco { get; set; } public ICMSUFFim ICMSUFFim { get; set; } public infTribFed infTribFed { get; set; } + + public IBSCBS IBSCBS { get; set; } + + private decimal? _vTotDFe; + + /// + /// Valor Total do DFe + /// + public decimal? vTotDFe + { + get { return _vTotDFe.Arredondar(2); } + set { _vTotDFe = value.Arredondar(2); } + } + + public bool vTotDFeSpecified + { + get { return vTotDFe.HasValue; } + } } -} +} \ No newline at end of file diff --git a/CTe.Classes/Informacoes/Tipos/CL.cs b/CTe.Classes/Informacoes/Tipos/CL.cs index e2e314218..6a4809e61 100644 --- a/CTe.Classes/Informacoes/Tipos/CL.cs +++ b/CTe.Classes/Informacoes/Tipos/CL.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/CST.cs b/CTe.Classes/Informacoes/Tipos/CST.cs index 359c673d8..051efc8b4 100644 --- a/CTe.Classes/Informacoes/Tipos/CST.cs +++ b/CTe.Classes/Informacoes/Tipos/CST.cs @@ -1,86 +1,99 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ -/* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ -/* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.ComponentModel; using System.Xml.Serialization; namespace CTe.Classes.Informacoes.Tipos { + /// + /// Informações relativas ao ICMS + /// 00 - Tributação normal ICMS; + /// 20 - Tributação com BC reduzida do ICMS; + /// 40 - ICMS isenção; + /// 41 - ICMS não tributada; + /// 51 - ICMS diferido; + /// 60 - ICMS cobrado por substituição tributária; + /// 90 - Outros + /// public enum CST { + /// + /// 00 - Tributação normal ICMS + /// + [Description("Tributação normal ICMS")] [XmlEnum("00")] ICMS00 = 00, + + /// + /// 20 - Tributação com BC reduzida do ICMS + /// + [Description("Tributação com BC reduzida do ICMS")] [XmlEnum("20")] ICMS20 = 20, + + /// + /// 40 - ICMS isenção + /// + [Description("ICMS isenção")] [XmlEnum("40")] ICMS40, + + /// + /// 41 - ICMS não tributada + /// + [Description("ICMS não tributada")] [XmlEnum("41")] ICMS41, + + /// + /// 51 - ICMS diferido + /// + [Description("ICMS diferido")] [XmlEnum("51")] ICMS51, + + /// + /// 60 - ICMS cobrado por substituição tributária + /// + [Description("ICMS cobrado por substituição tributária")] [XmlEnum("60")] ICMS60, + + /// + /// 90 - Outros + /// + [Description("Outros")] [XmlEnum("90")] ICMS90 } diff --git a/CTe.Classes/Informacoes/Tipos/ConsumidorFinal.cs b/CTe.Classes/Informacoes/Tipos/ConsumidorFinal.cs index 9d257f845..a0d2fdc02 100644 --- a/CTe.Classes/Informacoes/Tipos/ConsumidorFinal.cs +++ b/CTe.Classes/Informacoes/Tipos/ConsumidorFinal.cs @@ -1,41 +1,41 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; namespace CTe.Classes.Informacoes.Tipos { /// - /// Indica operao com Consumidor final + /// Indica operação com Consumidor final /// 0=Normal; /// 1=Consumidor final; /// diff --git a/CTe.Classes/Informacoes/Tipos/DestinoOperacao.cs b/CTe.Classes/Informacoes/Tipos/DestinoOperacao.cs index 2a848f0dc..2fea012d8 100644 --- a/CTe.Classes/Informacoes/Tipos/DestinoOperacao.cs +++ b/CTe.Classes/Informacoes/Tipos/DestinoOperacao.cs @@ -1,41 +1,41 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; namespace CTe.Classes.Informacoes.Tipos { /// - /// Identificador de Local de destino da operao (1-Interna;2-Interestadual;3-Exterior) + /// Identificador de Local de destino da operação (1-Interna;2-Interestadual;3-Exterior) /// public enum DestinoOperacao { diff --git a/CTe.Classes/Informacoes/Tipos/FinalidadeNFe.cs b/CTe.Classes/Informacoes/Tipos/FinalidadeNFe.cs index 463a02f61..e390f74d6 100644 --- a/CTe.Classes/Informacoes/Tipos/FinalidadeNFe.cs +++ b/CTe.Classes/Informacoes/Tipos/FinalidadeNFe.cs @@ -1,45 +1,45 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; namespace CTe.Classes.Informacoes.Tipos { /// - /// Finalidade da emisso da NF-e + /// Finalidade da emissão da NF-e /// 1 - NFe normal /// 2 - NFe complementar /// 3 - NFe de ajuste - /// 4 - Devoluo/Retorno + /// 4 - Devolução/Retorno /// public enum FinalidadeNFe { diff --git a/CTe.Classes/Informacoes/Tipos/IdentificadorOperacaoCsc.cs b/CTe.Classes/Informacoes/Tipos/IdentificadorOperacaoCsc.cs index c2635903d..ead0aa27d 100644 --- a/CTe.Classes/Informacoes/Tipos/IdentificadorOperacaoCsc.cs +++ b/CTe.Classes/Informacoes/Tipos/IdentificadorOperacaoCsc.cs @@ -1,51 +1,66 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.ComponentModel; using System.Xml.Serialization; namespace CTe.Classes.Informacoes.Tipos { /// - /// Indicador do tipo de Operao do CSC - /// 1 - Consulta CSC Ativos; - /// 2 - Solicita novo CSC; - /// 3 - Revoga CSC Ativo + /// Indicador do tipo de Operação do CSC + /// 1 - Consulta CSC Ativos; + /// 2 - Solicita novo CSC; + /// 3 - Revoga CSC Ativo /// public enum IdentificadorOperacaoCsc { + /// + /// 1 - Consulta CSC Ativos + /// + [Description("Consulta CSC Ativos")] [XmlEnum("1")] ioConsultaCscAtivos = 1, + + /// + /// 2 - Solicita novo CSC + /// + [Description("Solicita novo CSC")] [XmlEnum("2")] ioSolicitaNovoCsc = 2, + + /// + /// 3 - Revoga CSC Ativo + /// + [Description("Revoga CSC Ativo")] [XmlEnum("3")] ioRevogaCscAtivo = 3 } diff --git a/CTe.Classes/Informacoes/Tipos/IndicadorPagamento.cs b/CTe.Classes/Informacoes/Tipos/IndicadorPagamento.cs index fccca7c26..11f557c65 100644 --- a/CTe.Classes/Informacoes/Tipos/IndicadorPagamento.cs +++ b/CTe.Classes/Informacoes/Tipos/IndicadorPagamento.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; @@ -36,8 +36,8 @@ namespace CTe.Classes.Informacoes.Tipos { /// /// Indicador da forma de pagamento - /// 0 pagamento vista; - /// 1 pagamento prazo; + /// 0 -– pagamento à vista; + /// 1 –- pagamento à prazo; /// 2 - outros. /// public enum IndicadorPagamento diff --git a/CTe.Classes/Informacoes/Tipos/PresencaComprador.cs b/CTe.Classes/Informacoes/Tipos/PresencaComprador.cs index 48525a2c2..07d68f6aa 100644 --- a/CTe.Classes/Informacoes/Tipos/PresencaComprador.cs +++ b/CTe.Classes/Informacoes/Tipos/PresencaComprador.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/cUnid.cs b/CTe.Classes/Informacoes/Tipos/cUnid.cs index 5118e2405..7a49e240a 100644 --- a/CTe.Classes/Informacoes/Tipos/cUnid.cs +++ b/CTe.Classes/Informacoes/Tipos/cUnid.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/ferrEmi.cs b/CTe.Classes/Informacoes/Tipos/ferrEmi.cs index 7ff60237b..c05a56b8e 100644 --- a/CTe.Classes/Informacoes/Tipos/ferrEmi.cs +++ b/CTe.Classes/Informacoes/Tipos/ferrEmi.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/forPag.cs b/CTe.Classes/Informacoes/Tipos/forPag.cs index a3a1adac6..7c4004e72 100644 --- a/CTe.Classes/Informacoes/Tipos/forPag.cs +++ b/CTe.Classes/Informacoes/Tipos/forPag.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/indIEToma.cs b/CTe.Classes/Informacoes/Tipos/indIEToma.cs index 22fe8ea6d..d9e32ef6f 100644 --- a/CTe.Classes/Informacoes/Tipos/indIEToma.cs +++ b/CTe.Classes/Informacoes/Tipos/indIEToma.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/indNegociavel.cs b/CTe.Classes/Informacoes/Tipos/indNegociavel.cs index 4f5b746c2..713d08556 100644 --- a/CTe.Classes/Informacoes/Tipos/indNegociavel.cs +++ b/CTe.Classes/Informacoes/Tipos/indNegociavel.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/indSN.cs b/CTe.Classes/Informacoes/Tipos/indSN.cs index 46fde8c4f..63e0fdf73 100644 --- a/CTe.Classes/Informacoes/Tipos/indSN.cs +++ b/CTe.Classes/Informacoes/Tipos/indSN.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/lota.cs b/CTe.Classes/Informacoes/Tipos/lota.cs index ac3c1c1a0..2b17096e0 100644 --- a/CTe.Classes/Informacoes/Tipos/lota.cs +++ b/CTe.Classes/Informacoes/Tipos/lota.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/mod.cs b/CTe.Classes/Informacoes/Tipos/mod.cs index 4ad8e61f5..b770b0a16 100644 --- a/CTe.Classes/Informacoes/Tipos/mod.cs +++ b/CTe.Classes/Informacoes/Tipos/mod.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/modal.cs b/CTe.Classes/Informacoes/Tipos/modal.cs index 222564156..7cec4731a 100644 --- a/CTe.Classes/Informacoes/Tipos/modal.cs +++ b/CTe.Classes/Informacoes/Tipos/modal.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/procEmi.cs b/CTe.Classes/Informacoes/Tipos/procEmi.cs index 889d72b31..97d90cf1f 100644 --- a/CTe.Classes/Informacoes/Tipos/procEmi.cs +++ b/CTe.Classes/Informacoes/Tipos/procEmi.cs @@ -1,45 +1,45 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; namespace CTe.Classes.Informacoes.Tipos { /// - /// Processo de emisso utilizado com a seguinte codificao: - /// 0 - emisso de NF-e com aplicativo do contribuinte; - /// Verso 2.0 / 1 - emisso de NF-e avulsa pelo Fisco; - /// Verso 2.0 / 2 - emisso de NF-e avulsa, pelo contribuinte com seu certificado digital, atravs do site do Fisco; - /// 3- emisso de NF-e pelo contribuinte com aplicativo fornecido pelo Fisco. + /// Processo de emissão utilizado com a seguinte codificação: + /// 0 - emissão de NF-e com aplicativo do contribuinte; + /// Versão 2.0 / 1 - emissão de NF-e avulsa pelo Fisco; + /// Versão 2.0 / 2 - emissão de NF-e avulsa, pelo contribuinte com seu certificado digital, através do site do Fisco; + /// 3- emissão de NF-e pelo contribuinte com aplicativo fornecido pelo Fisco. /// public enum procEmi { diff --git a/CTe.Classes/Informacoes/Tipos/respFat.cs b/CTe.Classes/Informacoes/Tipos/respFat.cs index f372be1f5..937b431f8 100644 --- a/CTe.Classes/Informacoes/Tipos/respFat.cs +++ b/CTe.Classes/Informacoes/Tipos/respFat.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/respSeg.cs b/CTe.Classes/Informacoes/Tipos/respSeg.cs index 7d25c49d0..7621ab7d7 100644 --- a/CTe.Classes/Informacoes/Tipos/respSeg.cs +++ b/CTe.Classes/Informacoes/Tipos/respSeg.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/retira.cs b/CTe.Classes/Informacoes/Tipos/retira.cs index 5c873f108..56cb9c92a 100644 --- a/CTe.Classes/Informacoes/Tipos/retira.cs +++ b/CTe.Classes/Informacoes/Tipos/retira.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/toma.cs b/CTe.Classes/Informacoes/Tipos/toma.cs index 141fde01a..732a7880e 100644 --- a/CTe.Classes/Informacoes/Tipos/toma.cs +++ b/CTe.Classes/Informacoes/Tipos/toma.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/tpCTe.cs b/CTe.Classes/Informacoes/Tipos/tpCTe.cs index 83a148746..25e6f4e4e 100644 --- a/CTe.Classes/Informacoes/Tipos/tpCTe.cs +++ b/CTe.Classes/Informacoes/Tipos/tpCTe.cs @@ -1,41 +1,41 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; namespace CTe.Classes.Informacoes.Tipos { /// - /// Tipo do Documento Fiscal (0 - CT-e Normal; 1 - CT-e de Complemento de Valores; 2 - CT-e de Anulao; 3 - CT-e Substituto) + /// Tipo do Documento Fiscal (0 - CT-e Normal; 1 - CT-e de Complemento de Valores; 2 - CT-e de Anulação; 3 - CT-e Substituto; 5 - Simplificado; 6 - Substitudo Simplificado) /// public enum tpCTe { @@ -46,6 +46,10 @@ public enum tpCTe [XmlEnum("2")] Anulacao, [XmlEnum("3")] - Substituto + Substituto, + [XmlEnum("5")] + Simplificado, + [XmlEnum("6")] + SubstitutoSimplificado } } \ No newline at end of file diff --git a/CTe.Classes/Informacoes/Tipos/tpCar.cs b/CTe.Classes/Informacoes/Tipos/tpCar.cs index 55143e88d..86bf2dfa1 100644 --- a/CTe.Classes/Informacoes/Tipos/tpCar.cs +++ b/CTe.Classes/Informacoes/Tipos/tpCar.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/tpDoc.cs b/CTe.Classes/Informacoes/Tipos/tpDoc.cs index 70f668ad3..e7aa77b93 100644 --- a/CTe.Classes/Informacoes/Tipos/tpDoc.cs +++ b/CTe.Classes/Informacoes/Tipos/tpDoc.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/tpDocAnterior.cs b/CTe.Classes/Informacoes/Tipos/tpDocAnterior.cs index b3746f91d..74d4c21e3 100644 --- a/CTe.Classes/Informacoes/Tipos/tpDocAnterior.cs +++ b/CTe.Classes/Informacoes/Tipos/tpDocAnterior.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; @@ -62,6 +62,8 @@ public enum tpDocAnterior ConhecimentoAvulso = 11, [XmlEnum("12")] TIF = 12, + [XmlEnum("13")] + BL = 13, [XmlEnum("99")] Outros = 99 } diff --git a/CTe.Classes/Informacoes/Tipos/tpEmis.cs b/CTe.Classes/Informacoes/Tipos/tpEmis.cs index 8fae44ff7..154f06900 100644 --- a/CTe.Classes/Informacoes/Tipos/tpEmis.cs +++ b/CTe.Classes/Informacoes/Tipos/tpEmis.cs @@ -1,45 +1,45 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/using System.Xml.Serialization; namespace CTe.Classes.Informacoes.Tipos { /// - /// Forma de emisso da CT-e - /// 1 - Emisso normal (no em contingncia) - /// 4 - Contingncia EPEC pela SVC - /// 5 - Contingncia FS-DA, com impresso do DANFE em formulrio de segurana - /// 7 - Contingncia SVC-RS (SEFAZ Virtual de Contingncia do RS) - /// 8 - Contingncia SVC-SP (SEFAZ Virtual de Contingncia de SP) + /// Forma de emissão da CT-e + /// 1 - Emissão normal (não em contingência) + /// 4 - Contingência EPEC pela SVC + /// 5 - Contingência FS-DA, com impressão do DANFE em formulário de segurança + /// 7 - Contingência SVC-RS (SEFAZ Virtual de Contingência do RS) + /// 8 - Contingência SVC-SP (SEFAZ Virtual de Contingência de SP) /// public enum tpEmis { diff --git a/CTe.Classes/Informacoes/Tipos/tpHor.cs b/CTe.Classes/Informacoes/Tipos/tpHor.cs index 40cb6dff7..7332ec5d2 100644 --- a/CTe.Classes/Informacoes/Tipos/tpHor.cs +++ b/CTe.Classes/Informacoes/Tipos/tpHor.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/tpImp.cs b/CTe.Classes/Informacoes/Tipos/tpImp.cs index c71f7e7fa..623c4d0bb 100644 --- a/CTe.Classes/Informacoes/Tipos/tpImp.cs +++ b/CTe.Classes/Informacoes/Tipos/tpImp.cs @@ -1,41 +1,41 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; namespace CTe.Classes.Informacoes.Tipos { /// - /// Formato de impresso do DACTE (1-DANFe Retrato; 2-DANFe Paisagem) + /// Formato de impressão do DACTE (1-DANFe Retrato; 2-DANFe Paisagem) /// public enum tpImp { diff --git a/CTe.Classes/Informacoes/Tipos/tpNav.cs b/CTe.Classes/Informacoes/Tipos/tpNav.cs index 7b21e50fe..3eb14ad75 100644 --- a/CTe.Classes/Informacoes/Tipos/tpNav.cs +++ b/CTe.Classes/Informacoes/Tipos/tpNav.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/tpPer.cs b/CTe.Classes/Informacoes/Tipos/tpPer.cs index acc3cc155..9b99782d2 100644 --- a/CTe.Classes/Informacoes/Tipos/tpPer.cs +++ b/CTe.Classes/Informacoes/Tipos/tpPer.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/tpProp.cs b/CTe.Classes/Informacoes/Tipos/tpProp.cs index c37f58870..afe935ce8 100644 --- a/CTe.Classes/Informacoes/Tipos/tpProp.cs +++ b/CTe.Classes/Informacoes/Tipos/tpProp.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/tpPropProp.cs b/CTe.Classes/Informacoes/Tipos/tpPropProp.cs index ad70ec717..1996234b2 100644 --- a/CTe.Classes/Informacoes/Tipos/tpPropProp.cs +++ b/CTe.Classes/Informacoes/Tipos/tpPropProp.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/tpRod.cs b/CTe.Classes/Informacoes/Tipos/tpRod.cs index 21a48f285..11c01cf16 100644 --- a/CTe.Classes/Informacoes/Tipos/tpRod.cs +++ b/CTe.Classes/Informacoes/Tipos/tpRod.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/tpServ.cs b/CTe.Classes/Informacoes/Tipos/tpServ.cs index 298b294c9..170ba7780 100644 --- a/CTe.Classes/Informacoes/Tipos/tpServ.cs +++ b/CTe.Classes/Informacoes/Tipos/tpServ.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/tpTraf.cs b/CTe.Classes/Informacoes/Tipos/tpTraf.cs index b055a3881..86c7e8d26 100644 --- a/CTe.Classes/Informacoes/Tipos/tpTraf.cs +++ b/CTe.Classes/Informacoes/Tipos/tpTraf.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/tpUnidCarga.cs b/CTe.Classes/Informacoes/Tipos/tpUnidCarga.cs index ca964e479..461904dcd 100644 --- a/CTe.Classes/Informacoes/Tipos/tpUnidCarga.cs +++ b/CTe.Classes/Informacoes/Tipos/tpUnidCarga.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/tpUnidTransp.cs b/CTe.Classes/Informacoes/Tipos/tpUnidTransp.cs index 6e8d39e66..9c4c186ce 100644 --- a/CTe.Classes/Informacoes/Tipos/tpUnidTransp.cs +++ b/CTe.Classes/Informacoes/Tipos/tpUnidTransp.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/tpVeic.cs b/CTe.Classes/Informacoes/Tipos/tpVeic.cs index 0a17392c4..cc5de7ff3 100644 --- a/CTe.Classes/Informacoes/Tipos/tpVeic.cs +++ b/CTe.Classes/Informacoes/Tipos/tpVeic.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/uniAP.cs b/CTe.Classes/Informacoes/Tipos/uniAP.cs index eb49eaf17..9bb09a112 100644 --- a/CTe.Classes/Informacoes/Tipos/uniAP.cs +++ b/CTe.Classes/Informacoes/Tipos/uniAP.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; diff --git a/CTe.Classes/Informacoes/Tipos/versaoModal.cs b/CTe.Classes/Informacoes/Tipos/versaoModal.cs index e88f7afe1..a4076ee37 100644 --- a/CTe.Classes/Informacoes/Tipos/versaoModal.cs +++ b/CTe.Classes/Informacoes/Tipos/versaoModal.cs @@ -1,34 +1,34 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emisso de Nota Fiscal Eletrnica - NFe e Nota Fiscal de */ -/* Consumidor Eletrnica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ /* */ /* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ /* Zeusdev Tecnologia LTDA ME */ /* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ +/* Você pode obter a última versão desse arquivo no GitHub */ /* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ /* */ /* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ /* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ /* http://www.opensource.org/licenses/lgpl-license.php */ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System.Xml.Serialization; @@ -39,6 +39,8 @@ public enum versaoModal [XmlEnum("2.00")] veM200, [XmlEnum("3.00")] - veM300 + veM300, + [XmlEnum("4.00")] + veM400 } } \ No newline at end of file diff --git a/CTe.Classes/Informacoes/infCTeNormal/docAnteriores/idDocAntPap.cs b/CTe.Classes/Informacoes/infCTeNormal/docAnteriores/idDocAntPap.cs index c656b041a..8bad48496 100644 --- a/CTe.Classes/Informacoes/infCTeNormal/docAnteriores/idDocAntPap.cs +++ b/CTe.Classes/Informacoes/infCTeNormal/docAnteriores/idDocAntPap.cs @@ -42,10 +42,9 @@ public class idDocAntPap { public tpDocAnterior tpDoc { get; set; } - public short serie { get; set; } + public string serie { get; set; } - public short? subser { get; set; } - public bool subserSpecified { get { return subser.HasValue; } } + public string subser { get; set; } public string nDoc { get; set; } @@ -55,8 +54,12 @@ public class idDocAntPap [XmlElement(ElementName = "dEmi")] public string ProxydEmi { - get { return dEmi.ParaDataString();} - set { dEmi = Convert.ToDateTime(value); } + get { + return dEmi.ParaDataString(); + } + set { + dEmi = Convert.ToDateTime(value); + } } } } diff --git a/CTe.Classes/Informacoes/infCTeNormal/infCteSubs/refNF.cs b/CTe.Classes/Informacoes/infCTeNormal/infCteSubs/refNF.cs index 143be4bfa..0de3379a2 100644 --- a/CTe.Classes/Informacoes/infCTeNormal/infCteSubs/refNF.cs +++ b/CTe.Classes/Informacoes/infCTeNormal/infCteSubs/refNF.cs @@ -33,7 +33,6 @@ using System; using System.Xml.Serialization; -using CTe.Classes.Informacoes.Tipos; using DFe.Classes; using DFe.Utils; diff --git a/CTe.Classes/Informacoes/infCTeNormal/infDocRef.cs b/CTe.Classes/Informacoes/infCTeNormal/infDocRef.cs index 7662fbe0b..d4cb2d49f 100644 --- a/CTe.Classes/Informacoes/infCTeNormal/infDocRef.cs +++ b/CTe.Classes/Informacoes/infCTeNormal/infDocRef.cs @@ -32,7 +32,6 @@ /********************************************************************************/ using System; -using System.Dynamic; using System.Xml.Serialization; using DFe.Classes; using DFe.Utils; diff --git a/CTe.Classes/Informacoes/infCTeNormal/infDocumentos/infNF.cs b/CTe.Classes/Informacoes/infCTeNormal/infDocumentos/infNF.cs index 72a064410..acef61f90 100644 --- a/CTe.Classes/Informacoes/infCTeNormal/infDocumentos/infNF.cs +++ b/CTe.Classes/Informacoes/infCTeNormal/infDocumentos/infNF.cs @@ -42,10 +42,15 @@ namespace CTe.Classes.Informacoes.infCTeNormal.infDocumentos { public class infNF { + [XmlElement(Order = 1)] public string nRoma { get; set; } + [XmlElement(Order = 2)] public string nPed { get; set; } + [XmlElement(Order = 3)] public mod mod { get; set; } - public short serie { get; set; } + [XmlElement(Order = 4)] + public string serie { get; set; } + [XmlElement(Order = 5)] public string nDoc { get; set; } [XmlIgnore] @@ -54,61 +59,64 @@ public class infNF /// /// Proxy para dEmi no formato AAAA-MM-DD /// - [XmlElement(ElementName = "dEmi")] + [XmlElement(ElementName = "dEmi", Order = 6)] public string ProxyddEmi { get { - return dEmi.ParaDataString(); + return dEmi.ParaDataString(); } set { dEmi = DateTime.Parse(value); } - } + } + [XmlElement(Order = 7)] public decimal vBC { get { return _vBc.Arredondar(2); } set { _vBc = value.Arredondar(2); } } - + [XmlElement(Order = 8)] public decimal vICMS { get { return _vIcms.Arredondar(2); } set { _vIcms = value.Arredondar(2); } } - + [XmlElement(Order = 9)] public decimal vBCST { get { return _vBcst.Arredondar(2); } set { _vBcst = value.Arredondar(2); } } - + [XmlElement(Order = 10)] public decimal vST { get { return _vSt.Arredondar(2); } set { _vSt = value.Arredondar(2); } } - + [XmlElement(Order = 11)] public decimal vProd { get { return _vProd.Arredondar(2); } set { _vProd = value.Arredondar(2); } } - + [XmlElement(Order = 12)] public decimal vNF { get { return _vNf.Arredondar(2); } set { _vNf = value.Arredondar(2); } } - + [XmlElement(Order = 13)] public int nCFOP { get; set; } - - public decimal nPeso + [XmlElement(Order = 14)] + public decimal? nPeso { get { return _nPeso.Arredondar(3); } set { _nPeso = value.Arredondar(3); } } - + [XmlElement(Order = 15)] + public bool nPesoSpecified { get { return _nPeso.HasValue; } } + [XmlElement(Order = 16)] public string PIN { get; set; } [XmlIgnore] @@ -117,7 +125,7 @@ public decimal nPeso /// /// Proxy para dPrev no formato AAAA-MM-DD /// - [XmlElement(ElementName = "dPrev")] + [XmlElement(ElementName = "dPrev", Order = 17)] public string ProxyddPrev { get @@ -131,10 +139,10 @@ public string ProxyddPrev set { dPrev = DateTime.Parse(value); } } - [XmlElement("infUnidTransp")] + [XmlElement("infUnidTransp", Order = 18)] public List infUnidTransp; - [XmlElement("infUnidCarga")] + [XmlElement("infUnidCarga", Order = 19)] public List infUnidCarga; private decimal _vBc; @@ -143,6 +151,6 @@ public string ProxyddPrev private decimal _vSt; private decimal _vProd; private decimal _vNf; - private decimal _nPeso; + private decimal? _nPeso; } } diff --git a/CTe.Classes/Informacoes/infCTeNormal/infDocumentos/infNFe.cs b/CTe.Classes/Informacoes/infCTeNormal/infDocumentos/infNFe.cs index 1f225ae63..cf889f5d5 100644 --- a/CTe.Classes/Informacoes/infCTeNormal/infDocumentos/infNFe.cs +++ b/CTe.Classes/Informacoes/infCTeNormal/infDocumentos/infNFe.cs @@ -40,7 +40,10 @@ namespace CTe.Classes.Informacoes.infCTeNormal.infDocumentos { public class infNFe { + [XmlElement(Order = 1)] public string chave { get; set; } + + [XmlElement(Order = 2)] public string PIN { get; set; } [XmlIgnore] @@ -49,7 +52,7 @@ public class infNFe /// /// Proxy para dPrev no formato AAAA-MM-DD /// - [XmlElement(ElementName = "dPrev")] + [XmlElement(ElementName = "dPrev", Order = 3)] public string ProxyddPrev { get @@ -63,10 +66,11 @@ public string ProxyddPrev set { dPrev = DateTime.Parse(value); } } - [XmlElement("infUnidTransp")] + + [XmlElement("infUnidTransp", Order = 5)] public List infUnidTransp; - [XmlElement("infUnidCarga")] + [XmlElement("infUnidCarga", Order = 4)] public List infUnidCarga; } } diff --git a/CTe.Classes/Informacoes/infCTeNormal/infDocumentos/infOutros.cs b/CTe.Classes/Informacoes/infCTeNormal/infDocumentos/infOutros.cs index 2060f0d0b..8d3e21dea 100644 --- a/CTe.Classes/Informacoes/infCTeNormal/infDocumentos/infOutros.cs +++ b/CTe.Classes/Informacoes/infCTeNormal/infDocumentos/infOutros.cs @@ -42,8 +42,11 @@ namespace CTe.Classes.Informacoes.infCTeNormal.infDocumentos { public class infOutros { + [XmlElement(Order = 1)] public tpDoc tpDoc { get; set; } + [XmlElement(Order = 2)] public string descOutros { get; set; } + [XmlElement(Order = 3)] public string nDoc { get; set; } [XmlIgnore] @@ -52,7 +55,7 @@ public class infOutros /// /// Proxy para dPrev no formato AAAA-MM-DD /// - [XmlElement(ElementName = "dEmi")] + [XmlElement(ElementName = "dEmi", Order = 4)] public string ProxyddEmi { get @@ -66,7 +69,7 @@ public string ProxyddEmi set { dEmi = DateTime.Parse(value); } } - + [XmlElement(Order = 5)] public decimal? vDocFisc { get { return _vDocFisc.Arredondar(2); } @@ -81,7 +84,7 @@ public decimal? vDocFisc /// /// Proxy para dPrev no formato AAAA-MM-DD /// - [XmlElement(ElementName = "dPrev")] + [XmlElement(ElementName = "dPrev", Order = 6)] public string ProxyddPrev { get @@ -95,10 +98,10 @@ public string ProxyddPrev set { dPrev = DateTime.Parse(value); } } - [XmlElement("infUnidTransp")] + [XmlElement("infUnidTransp", Order = 7)] public List infUnidTransp; - [XmlElement("infUnidCarga")] + [XmlElement("infUnidCarga", Order = 8)] public List infUnidCarga; private decimal? _vDocFisc; diff --git a/CTe.Classes/Informacoes/infCTeNormal/infModals/rodoOS.cs b/CTe.Classes/Informacoes/infCTeNormal/infModals/rodoOS.cs index 58c0b36e2..b0ce3e0db 100644 --- a/CTe.Classes/Informacoes/infCTeNormal/infModals/rodoOS.cs +++ b/CTe.Classes/Informacoes/infCTeNormal/infModals/rodoOS.cs @@ -42,5 +42,7 @@ public class rodoOS : ContainerModal public string NroRegEstadual { get; set; } public veic veic { get; set; } + + public infFretamento infFretamento { get; set; } } } \ No newline at end of file diff --git a/CTe.Classes/Informacoes/infCTeNormal/infModals/rodoviario/occ.cs b/CTe.Classes/Informacoes/infCTeNormal/infModals/rodoviario/occ.cs index 5879fa571..8efe012cb 100644 --- a/CTe.Classes/Informacoes/infCTeNormal/infModals/rodoviario/occ.cs +++ b/CTe.Classes/Informacoes/infCTeNormal/infModals/rodoviario/occ.cs @@ -39,11 +39,7 @@ namespace CTe.Classes.Informacoes.infCTeNormal.infModals.rodoviario { public class occ { - public short? serie { get; set; } - public bool serieSpecified { - get { return serie.HasValue; } - } - + public string serie { get; set; } public int nOcc { get; set; } [XmlIgnore] diff --git a/CTe.Classes/Informacoes/infCTeNormal/infModals/rodoviarioOS/infFretamento.cs b/CTe.Classes/Informacoes/infCTeNormal/infModals/rodoviarioOS/infFretamento.cs new file mode 100644 index 000000000..16ba0536f --- /dev/null +++ b/CTe.Classes/Informacoes/infCTeNormal/infModals/rodoviarioOS/infFretamento.cs @@ -0,0 +1,33 @@ +using System; +using System.Xml.Serialization; +using CTe.Classes.Servicos.Tipos; +using DFe.Utils; + +namespace CTe.Classes.Informacoes.infCTeNormal.infModals.rodoviarioOS +{ + public class infFretamento + { + public tpFretamento tpFretamento { get; set; } + + [XmlIgnore] + public DateTime? dhViagem { get; set; } + + [XmlElement(ElementName = "dhViagem")] + public string ProxydhEmi + { + get + { + return dhViagem.ParaDataHoraStringUtc(); + } + set + { + if (value == null) + { + dhViagem = null; + return; + } + dhViagem = DateTime.Parse(value); + } + } + } +} \ No newline at end of file diff --git a/CTe.Classes/Informacoes/infCTeNormal/infModals/rodoviarioOS/tpFretamento.cs b/CTe.Classes/Informacoes/infCTeNormal/infModals/rodoviarioOS/tpFretamento.cs new file mode 100644 index 000000000..1b5f5d7f2 --- /dev/null +++ b/CTe.Classes/Informacoes/infCTeNormal/infModals/rodoviarioOS/tpFretamento.cs @@ -0,0 +1,13 @@ +using System.Xml.Serialization; + +namespace CTe.Classes.Informacoes.infCTeNormal.infModals.rodoviarioOS +{ + public enum tpFretamento + { + [XmlEnum("1")] + Eventual = 1, + + [XmlEnum("2")] + Continuo = 2 + } +} \ No newline at end of file diff --git a/CTe.Classes/Informacoes/infCTeNormal/infServico.cs b/CTe.Classes/Informacoes/infCTeNormal/infServico.cs index 14adc33c7..bb53b2f70 100644 --- a/CTe.Classes/Informacoes/infCTeNormal/infServico.cs +++ b/CTe.Classes/Informacoes/infCTeNormal/infServico.cs @@ -30,10 +30,17 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + +using System.Xml.Serialization; +using CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.InfCTeNormal; + namespace CTe.Classes.Informacoes.infCTeNormal { public class infServico { public string xDescServ { get; set; } + + [XmlElement(ElementName = "infQ")] + public infQOs infQ { get; set; } } } \ No newline at end of file diff --git a/CTe.Classes/Informacoes/infCTeNormal/veicNovos.cs b/CTe.Classes/Informacoes/infCTeNormal/veicNovos.cs index 9101f2cc4..a9ddb0ded 100644 --- a/CTe.Classes/Informacoes/infCTeNormal/veicNovos.cs +++ b/CTe.Classes/Informacoes/infCTeNormal/veicNovos.cs @@ -38,13 +38,14 @@ namespace CTe.Classes.Informacoes.infCTeNormal public class veicNovos { private decimal _vUnit; + private decimal _vFrete; public string chassi { get; set; } public string cCor { get; set; } public string xCor { get; set; } - public int cMod { get; set; } + public string cMod { get; set; } public decimal vUnit { @@ -52,6 +53,10 @@ public decimal vUnit set { _vUnit = value.Arredondar(2); } } - public decimal vFrete { get; set; } + public decimal vFrete + { + get { return _vFrete.Arredondar(2); } + set { _vFrete = value.Arredondar(2); } + } } } diff --git a/CTe.Classes/Informacoes/infCte.cs b/CTe.Classes/Informacoes/infCte.cs index 7522a8a54..50e0029b1 100644 --- a/CTe.Classes/Informacoes/infCte.cs +++ b/CTe.Classes/Informacoes/infCte.cs @@ -84,5 +84,7 @@ public class infCte [XmlElement("autXML")] public List autXML { get; set; } + public infRespTec.infRespTec infRespTec { get; set; } + } } diff --git a/CTe.Classes/Informacoes/infCteSupl.cs b/CTe.Classes/Informacoes/infCteSupl.cs new file mode 100644 index 000000000..1e6177abf --- /dev/null +++ b/CTe.Classes/Informacoes/infCteSupl.cs @@ -0,0 +1,7 @@ +namespace CTe.Classes.Informacoes +{ + public class infCTeSupl + { + public string qrCodCTe { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/Informacoes/infRespTec/infRespTec.cs b/CTe.Classes/Informacoes/infRespTec/infRespTec.cs new file mode 100644 index 000000000..ce274a1e1 --- /dev/null +++ b/CTe.Classes/Informacoes/infRespTec/infRespTec.cs @@ -0,0 +1,29 @@ +using System.Xml.Serialization; + +namespace CTe.Classes.Informacoes.infRespTec +{ + public class infRespTec + { + public string CNPJ { get; set; } + public string xContato { get; set; } + public string email { get; set; } + public string fone { get; set; } + + [XmlIgnore] + public int? idCSRT { get; set; } + public bool idCSRTSpecified + { + get { return idCSRT.HasValue; } + } + + + [XmlElement(ElementName = "idCSRT")] + public string ProxyidCSRT + { + get { return idCSRT != null ? idCSRT.Value.ToString("D3") : null; } + set { idCSRT = int.Parse(value); } + } + + public string hashCSRT { get; set; } + } +} diff --git a/CTe.Classes/Properties/AssemblyInfo.cs b/CTe.Classes/Properties/AssemblyInfo.cs deleted file mode 100644 index fddabecba..000000000 --- a/CTe.Classes/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("CTe.Classes")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("CTe.Classes")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("c86e3921-f0b8-4bfe-9ef1-0e9084326b13")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CTe.Classes/Protocolo/infFisco.cs b/CTe.Classes/Protocolo/infFisco.cs new file mode 100644 index 000000000..18aeead31 --- /dev/null +++ b/CTe.Classes/Protocolo/infFisco.cs @@ -0,0 +1,8 @@ +namespace CTe.Classes.Protocolo +{ + public class infFisco + { + public int cMsg { get; set; } + public string xMsg { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/Protocolo/infProt.cs b/CTe.Classes/Protocolo/infProt.cs index 70833777c..1b0a64274 100644 --- a/CTe.Classes/Protocolo/infProt.cs +++ b/CTe.Classes/Protocolo/infProt.cs @@ -32,8 +32,10 @@ /********************************************************************************/ using System; +using System.Xml.Serialization; using DFe.Classes.Assinatura; using DFe.Classes.Flags; +using DFe.Utils; namespace CTe.Classes.Protocolo { @@ -62,7 +64,15 @@ public class infProt /// /// PR08 - Data e hora de recebimento /// - public DateTime dhRecbto { get; set; } + [XmlIgnore] + public DateTimeOffset dhRecbto { get; set; } + + [XmlElement(ElementName = "dhRecbto")] + public string ProxydhRecbto + { + get { return dhRecbto.ParaDataHoraStringUtc(); } + set { dhRecbto = DateTimeOffset.Parse(value); } + } /// /// PR09 - Número do Protocolo da CT-e @@ -84,6 +94,8 @@ public class infProt /// public string xMotivo { get; set; } + public infFisco infFisco { get; set; } + /// /// PR13 - Assinatura XML do grupo identificado pelo atributo “Id” /// A decisão de assinar a mensagem fica a critério da UF interessada. diff --git a/CTe.Classes/Servicos/Consulta/procEventoCTe.cs b/CTe.Classes/Servicos/Consulta/procEventoCTe.cs index e7b7be143..9d6baf544 100644 --- a/CTe.Classes/Servicos/Consulta/procEventoCTe.cs +++ b/CTe.Classes/Servicos/Consulta/procEventoCTe.cs @@ -31,7 +31,6 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using System.Collections.Generic; using System.Xml.Serialization; using CTe.Classes.Servicos.Evento; @@ -55,7 +54,7 @@ public class procEventoCTe /// YR05 /// /// - [XmlElement("retEvento")] - public List retEvento { get; set; } + [XmlElement("retEventoCTe")] + public retEventoCTe retEvento { get; set; } } } \ No newline at end of file diff --git a/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/MDFe.cs b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/MDFe.cs new file mode 100644 index 000000000..36ce42133 --- /dev/null +++ b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/MDFe.cs @@ -0,0 +1,46 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; + +namespace CTe.Classes.Servicos.DistribuicaoDFe.Schemas +{ + public class MDFe + { + public string chMDFe { get; set; } + public string modal { get; set; } + public DateTime dhEmi { get; set; } + public string nProt { get; set; } + public DateTime dhRecbto { get; set; } + } +} diff --git a/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/detEvento.cs b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/detEvento.cs new file mode 100644 index 000000000..55b707a8f --- /dev/null +++ b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/detEvento.cs @@ -0,0 +1,53 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.ComponentModel; +using System.Xml.Serialization; + +namespace CTe.Classes.Servicos.DistribuicaoDFe.Schemas +{ + [Serializable()] + [DesignerCategory("code")] + [XmlType(AnonymousType = true, Namespace = "http://www.portalfiscal.inf.br/cte")] + public class detEvento + { + + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte")] + public evCTeAutorizadoMDFe evCTeAutorizadoMDFe { get; set; } + + + [XmlAttribute()] + public decimal versao { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/evCTeAutorizadoMDFe.cs b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/evCTeAutorizadoMDFe.cs new file mode 100644 index 000000000..e765dcd26 --- /dev/null +++ b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/evCTeAutorizadoMDFe.cs @@ -0,0 +1,51 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.Xml.Serialization; +using CTe.Classes.Informacoes.Emitente; + +namespace CTe.Classes.Servicos.DistribuicaoDFe.Schemas +{ + public class evCTeAutorizadoMDFe + { + + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte")] + public MDFe MDFe { get; set; } + + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte")] + public emit emit { get; set; } + + public string descEvento { get; set; } + + } +} diff --git a/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/eventoCTe.cs b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/eventoCTe.cs new file mode 100644 index 000000000..b2aacb7c4 --- /dev/null +++ b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/eventoCTe.cs @@ -0,0 +1,62 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using DFe.Classes.Assinatura; +using System; +using System.ComponentModel; +using System.Xml.Serialization; + +namespace CTe.Classes.Servicos.DistribuicaoDFe.Schemas +{ + [Serializable()] + [DesignerCategory("code")] + [XmlType(AnonymousType = true)] + [XmlRoot(Namespace = "", IsNullable = false)] + public class eventoCTe + { + + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte", ElementName = "infEvento")] + public eventoInfEvento infEvento { get; set; } + + [XmlAttribute()] + public decimal versao { get; set; } + + /// + /// HP22 - Assinatura Digital do documento XML, a assinatura deverá ser aplicada no elemento infEvento + /// + [XmlElement(Namespace = "http://www.w3.org/2000/09/xmldsig#")] + public Signature Signature { get; set; } + + + } +} diff --git a/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/eventoInfEvento.cs b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/eventoInfEvento.cs new file mode 100644 index 000000000..97e521a71 --- /dev/null +++ b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/eventoInfEvento.cs @@ -0,0 +1,76 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.ComponentModel; +using System.Xml.Serialization; +using DFe.Utils; + +namespace CTe.Classes.Servicos.DistribuicaoDFe.Schemas +{ + [Serializable()] + [DesignerCategory("code")] + [XmlType(AnonymousType = true, Namespace = "http://www.portalfiscal.inf.br/cte")] + public class eventoInfEvento + { + [XmlAttribute()] + public string Id { get; set; } + + public byte cOrgao { get; set; } + + public byte tpAmb { get; set; } + + public string CNPJ { get; set; } + + public string chCTe { get; set; } + + [XmlIgnore] + public DateTimeOffset dhRecbto { get; set; } + + [XmlElement(ElementName = "dhRecbto")] + public string ProxydhRecbto + { + get { return dhRecbto.ParaDataHoraStringUtc(); } + set { dhRecbto = DateTimeOffset.Parse(value); } + } + + public uint tpEvento { get; set; } + + public byte nSeqEvento { get; set; } + + public decimal versaoEvento { get; set; } + + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte")] + public detEvento detEvento { get; set; } + } +} diff --git a/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/procEventoCTe.cs b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/procEventoCTe.cs new file mode 100644 index 000000000..72e81ee2a --- /dev/null +++ b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/procEventoCTe.cs @@ -0,0 +1,70 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.ComponentModel; +using System.Xml.Serialization; + +namespace CTe.Classes.Servicos.DistribuicaoDFe.Schemas +{ + + /// + /// Leiaute de compartilhamento de solicitação de registro de evento do CT-e + /// + [Serializable()] + [DesignerCategory("code")] + [XmlType(AnonymousType = true, Namespace = "http://www.portalfiscal.inf.br/cte")] + [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", IsNullable = false)] + public class procEventoCTe + { + [XmlAttribute()] + public decimal versao { get; set; } + + [XmlAttribute()] + public string ipTransmissor { get; set; } + + /// + /// Mensagem de solicitação de registro de evento do CT-e + /// + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte")] + public eventoCTe eventoCTe { get; set; } + + /// + /// Mensagem de retorno do resultado da solicitação de registro de evento do CT-e + /// + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte")] + public retEventoCTe retEventoCTe { get; set; } + + + } +} diff --git a/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/retEventoCTe.cs b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/retEventoCTe.cs new file mode 100644 index 000000000..0c82061fe --- /dev/null +++ b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/retEventoCTe.cs @@ -0,0 +1,55 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.ComponentModel; +using System.Xml.Serialization; + +namespace CTe.Classes.Servicos.DistribuicaoDFe.Schemas +{ + + /// + /// Mensagem de retorno do resultado da solicitação de registro de evento do CT-e + /// + + [Serializable()] + [DesignerCategory("code")] + [XmlType(AnonymousType = true, Namespace = "http://www.portalfiscal.inf.br/cte")] + public class retEventoCTe + { + public retInfEvento infEvento { get; set; } + + [XmlAttribute()] + public decimal versao { get; set; } + } +} diff --git a/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/retInfEvento.cs b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/retInfEvento.cs new file mode 100644 index 000000000..db7f5afc9 --- /dev/null +++ b/CTe.Classes/Servicos/DistribuicaoDFe/Schemas/retInfEvento.cs @@ -0,0 +1,80 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.ComponentModel; +using System.Xml.Serialization; +using DFe.Utils; + +namespace CTe.Classes.Servicos.DistribuicaoDFe.Schemas +{ + [Serializable()] + [DesignerCategory("code")] + [XmlType(AnonymousType = true, Namespace = "http://www.portalfiscal.inf.br/cte")] + public class retInfEvento + { + public byte tpAmb { get; set; } + + public string verAplic { get; set; } + + public byte cOrgao { get; set; } + + public byte cStat { get; set; } + + public string xMotivo { get; set; } + + public string chCTe { get; set; } + + public uint tpEvento { get; set; } + + public string xEvento { get; set; } + + public byte nSeqEvento { get; set; } + + public string CNPJDest { get; set; } + + public string emailDest { get; set; } + + [XmlIgnore] + public DateTimeOffset dhRegEvento { get; set; } + + [XmlElement(ElementName = "dhRegEvento")] + public string ProxydhRegEvento + { + get { return dhRegEvento.ParaDataHoraStringUtc(); } + set { dhRegEvento = DateTimeOffset.Parse(value); } + } + + public string nProt { get; set; } + } +} diff --git a/CTe.Classes/Servicos/DistribuicaoDFe/consNSU.cs b/CTe.Classes/Servicos/DistribuicaoDFe/consNSU.cs new file mode 100644 index 000000000..464a74bd2 --- /dev/null +++ b/CTe.Classes/Servicos/DistribuicaoDFe/consNSU.cs @@ -0,0 +1,56 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.ComponentModel; +using System.Xml.Serialization; + + +namespace CTe.Classes.Servicos.DistribuicaoDFe +{ + /// + /// A09 - Grupo para consultar um DF-e a partir de um NSU específico + /// + [Serializable()] + [DesignerCategory("code")] + [XmlType(AnonymousType = true, Namespace = "http://www.portalfiscal.inf.br/cte")] + public class consNSU + { + /// + /// A10 - Número Sequencial Único. Geralmente esta consulta será utilizada quando identificado pelo interessado um NSU faltante. + /// O Web Service retornará o documento ou informará que o NSU não existe no Ambiente Nacional. + /// Assim, esta consulta fechará a lacuna do NSU identificado como faltante. + /// + public string NSU { get; set; } + } +} diff --git a/CTe.Classes/Servicos/DistribuicaoDFe/distDFeInt.cs b/CTe.Classes/Servicos/DistribuicaoDFe/distDFeInt.cs new file mode 100644 index 000000000..b61e0d2cd --- /dev/null +++ b/CTe.Classes/Servicos/DistribuicaoDFe/distDFeInt.cs @@ -0,0 +1,114 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.Xml.Serialization; +using DFe.Classes.Entidades; +using DFe.Classes.Flags; + +namespace CTe.Classes.Servicos.DistribuicaoDFe +{ + [Serializable()] + [XmlType(AnonymousType = true, Namespace = "http://www.portalfiscal.inf.br/cte")] + [XmlRoot("distDFeInt", Namespace = "http://www.portalfiscal.inf.br/cte", IsNullable = false)] + public class distDFeInt + { + private const string ErroCpfCnpjPreenchidos = "Somente preencher um dos campos: CNPJ ou CPF, para um objeto do tipo dest!"; + private string _cNPJ; + private string _cPF; + + /// + /// A02 - Versão do leiaute + /// + [XmlAttribute()] + public string versao { get; set; } + + /// + /// A03 - Identificação do Ambiente: 1=Produção /2=Homologação + /// + public TipoAmbiente tpAmb { get; set; } + + /// + /// A04 - Código da UF do Autor + /// + public Estado cUFAutor { get; set; } + + /// + /// A05 - CNPJ do interessado no DF-e + /// + public string CNPJ + { + get { return _cNPJ; } + set + { + if (string.IsNullOrEmpty(value)) return; + if (string.IsNullOrEmpty(_cPF)) + _cNPJ = value; + else + { + throw new ArgumentException(ErroCpfCnpjPreenchidos); + } + } + } + + /// + /// A06 - CPF do interessado no DF-e + /// + public string CPF + { + get { return _cPF; } + set + { + if (string.IsNullOrEmpty(value)) return; + if (string.IsNullOrEmpty(_cNPJ)) + _cPF = value; + else + { + throw new ArgumentException(ErroCpfCnpjPreenchidos); + } + } + } + + /// + /// A07 - Grupo para distribuir DF-e de interesse + /// + public distNSU distNSU { get; set; } + + /// + /// A09 - Grupo para consultar um DF-e a partir de um NSU específico + /// + public consNSU consNSU { get; set; } + + + } +} diff --git a/CTe.Classes/Servicos/DistribuicaoDFe/distNSU.cs b/CTe.Classes/Servicos/DistribuicaoDFe/distNSU.cs new file mode 100644 index 000000000..0aab0b49d --- /dev/null +++ b/CTe.Classes/Servicos/DistribuicaoDFe/distNSU.cs @@ -0,0 +1,54 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.ComponentModel; +using System.Xml.Serialization; +namespace CTe.Classes.Servicos.DistribuicaoDFe +{ + /// + /// A07 - Grupo para distribuir DF-e de interesse + /// + [Serializable()] + [DesignerCategory("code")] + [XmlType(AnonymousType = true, Namespace = "http://www.portalfiscal.inf.br/cte")] + public class distNSU + { + /// + /// A08 - Último NSU recebido pelo ator. + /// Caso seja informado com zero, ou com um NSU muito antigo, a consulta retornará unicamente as informações resumidas e + /// documentos fiscais eletrônicos que tenham sido recepcionados pelo Ambiente Nacional nos últimos 3 meses. + /// + public string ultNSU { get; set; } + } +} diff --git a/CTe.Classes/Servicos/DistribuicaoDFe/loteDistDFeInt.cs b/CTe.Classes/Servicos/DistribuicaoDFe/loteDistDFeInt.cs new file mode 100644 index 000000000..5a12f9988 --- /dev/null +++ b/CTe.Classes/Servicos/DistribuicaoDFe/loteDistDFeInt.cs @@ -0,0 +1,73 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.ComponentModel; +using System.Xml.Serialization; + +namespace CTe.Classes.Servicos.DistribuicaoDFe +{ + /// + /// B10 - Conjunto de informações resumidas e documentos fiscais eletrônicos de interesse da pessoa ou empresa. + /// + [Serializable()] + [DesignerCategory("code")] + [XmlType(AnonymousType = true, Namespace = "http://www.portalfiscal.inf.br/cte")] + public class loteDistDFeInt + { + /// + /// B12 - NSU do documento fiscal + /// + [XmlAttribute()] + public long NSU { get; set; } + + /// + /// B13 - Identificação do Schema XML que será utilizado para validar o XML existente no campo seguinte. + /// Vai identificar o tipo do documento e sua versão. + /// Exemplos: + /// - resNFe_v1.00.xsd + /// - procNFe_v3.10.xsd + /// - resEvento_1.00.xsd + /// - procEventoNFe_v1.00.xsd + /// + [XmlAttribute()] + public string schema { get; set; } + + /// + /// Conteudo da Tag schema. + /// O conteúdo desta tag estará compactado no padrão gZip.O tipo do campo é base64Binary. + /// + [XmlText(DataType = "base64Binary")] + public byte[] XmlNfe { get; set; } + } +} diff --git a/CTe.Classes/Servicos/DistribuicaoDFe/retDistDFeInt.cs b/CTe.Classes/Servicos/DistribuicaoDFe/retDistDFeInt.cs new file mode 100644 index 000000000..043253a74 --- /dev/null +++ b/CTe.Classes/Servicos/DistribuicaoDFe/retDistDFeInt.cs @@ -0,0 +1,91 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.ComponentModel; +using System.Xml.Serialization; + +namespace CTe.Classes.Servicos.DistribuicaoDFe +{ + [Serializable()] + [DesignerCategory("code")] + [XmlType(AnonymousType = true, Namespace = "http://www.portalfiscal.inf.br/cte")] + [XmlRoot("retDistDFeInt", Namespace = "http://www.portalfiscal.inf.br/cte", IsNullable = false)] + public class retDistDFeInt + { + /// + /// B02 - Versão do leiaute + /// + [XmlAttribute()] + public decimal versao { get; set; } + + /// + /// B03 - Identificação do Ambiente: 1=Produção /2=Homologação + /// + public byte tpAmb { get; set; } + + /// + /// B04 - Versão do aplicativo que processou a consulta + /// + public string verAplic { get; set; } + + /// + /// B05 - Código do status da resposta (vide item 5) + /// + public int cStat { get; set; } + + /// + /// B06 - Descrição literal do status da resposta + /// + public string xMotivo { get; set; } + + /// + /// B07 - Data e hora da mensagem de Resposta + /// + public DateTime dhResp { get; set; } + + /// + /// B08 - Último NSU pesquisado no Ambiente Nacional. Se for o caso, o solicitante pode continuar a consulta a partir + /// deste NSU para obter novos resultados. + /// + public long ultNSU { get; set; } + + /// + /// B09 - Maior NSU existente no Ambiente Nacional para o CNPJ/CPF informado + /// + public long maxNSU { get; set; } + + [XmlArrayItem("docZip", IsNullable = false)] + public loteDistDFeInt[] loteDistDFeInt { get; set; } + } +} diff --git a/CTe.Classes/Servicos/Evento/Flags/CTeTipoEvento.cs b/CTe.Classes/Servicos/Evento/Flags/CTeTipoEvento.cs new file mode 100644 index 000000000..1679645b5 --- /dev/null +++ b/CTe.Classes/Servicos/Evento/Flags/CTeTipoEvento.cs @@ -0,0 +1,99 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.Xml.Serialization; + +namespace CTe.Classes.Servicos.Evento.Flags +{ + public enum CTeTipoEvento + { + //Tabela de Eventos MOC_CTe_VisaoGeral_v3.00a.pdf, página 33 + // Evento: Empresa Emitente + [XmlEnum("110110")] + CartaCorrecao = 110110, + [XmlEnum("110111")] + Cancelamento = 110111, + [XmlEnum("110113")] + EPEC = 110113, + [XmlEnum("110160")] + RegistrosdoMultimodal = 110160, + [XmlEnum("110170")] + InformacoesdaGTV = 110170, + [XmlEnum("110180")] + ComprovantedeEntrega = 110180, + [XmlEnum("110181")] + CancelamentodoComprovantedeEntrega = 110181, + [XmlEnum("110190")] + InsucessoNaEntregaDoCte = 110190, + [XmlEnum("110191")] + CancelamentodoInsucessoNaEntregaDoCte = 110191, + //Evento: Fisco + [XmlEnum("310620")] + RegistrodePassagem = 310620, + [XmlEnum("510620")] + RegistrodePassagemAutomatico = 510620, + [XmlEnum("510630")] + RegistrodePassagemAutomatico2 = 510630, + [XmlEnum("310610")] + MDFeAutorizado = 310610, + [XmlEnum("310611")] + MDFeCancelado = 310611, + // Evento: Fisco do Emitente + [XmlEnum("240130")] + AutorizadoCTecomplementar = 240130, + [XmlEnum("240131")] + CanceladoCTecomplementar = 240131, + [XmlEnum("240140")] + CTedeSubstituicao = 240140, + [XmlEnum("240150")] + CTedeAnulacao = 240150, + [XmlEnum("240160")] + LiberacaodeEPEC = 240160, + [XmlEnum("240170")] + LiberacaoPrazoCancelamento = 240170, + // Evento: Ambiente Nacional + [XmlEnum("440130")] + AutorizadoRedespacho = 440130, + [XmlEnum("440140")] + AutorizadoRedespachointermediario = 440140, + [XmlEnum("440150")] + AutorizadoSubcontratacao = 440150, + [XmlEnum("440160")] + AutorizadoServicoVinculadoMultimodal = 440160, + // Evento: Tomador + [XmlEnum("610110")] + Desacordo = 610110, + [XmlEnum("610111")] + CancelamentoPrestacaodoServicoemDesacordo = 610111 + } +} diff --git a/CTe.Classes/Servicos/Evento/Flags/TipoEvento.cs b/CTe.Classes/Servicos/Evento/Flags/TipoEvento.cs deleted file mode 100644 index c0c28e0a2..000000000 --- a/CTe.Classes/Servicos/Evento/Flags/TipoEvento.cs +++ /dev/null @@ -1,47 +0,0 @@ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ -/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Você pode obter a última versão desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ -/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ -/* qualquer versão posterior. */ -/* */ -/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ -/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ -/* */ -/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ -/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ -/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Você também pode obter uma copia da licença em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ - -using System.Xml.Serialization; - -namespace CTe.Classes.Servicos.Evento.Flags -{ - public enum TipoEvento - { - [XmlEnum("110111")] - Cancelamento = 110111, - [XmlEnum("110110")] - CartaCorrecao = 110110, - [XmlEnum("310610")] - MDFeAutorizado = 310610 - } -} \ No newline at end of file diff --git a/CTe.Classes/Servicos/Evento/detEvento.cs b/CTe.Classes/Servicos/Evento/detEvento.cs index 616bafb0f..17c3d2563 100644 --- a/CTe.Classes/Servicos/Evento/detEvento.cs +++ b/CTe.Classes/Servicos/Evento/detEvento.cs @@ -43,6 +43,7 @@ public class detEvento [XmlElement("evCancCTe", typeof(evCancCTe), Namespace = "http://www.portalfiscal.inf.br/cte")] [XmlElement("evCCeCTe", typeof(evCCeCTe), Namespace = "http://www.portalfiscal.inf.br/cte")] + [XmlElement("evPrestDesacordo", typeof(evPrestDesacordo), Namespace = "http://www.portalfiscal.inf.br/cte")] public EventoContainer EventoContainer { get; set; } } } \ No newline at end of file diff --git a/CTe.Classes/Servicos/Evento/detEventoTipos.cs b/CTe.Classes/Servicos/Evento/detEventoTipos.cs index 7e801e43d..c3c2f2e65 100644 --- a/CTe.Classes/Servicos/Evento/detEventoTipos.cs +++ b/CTe.Classes/Servicos/Evento/detEventoTipos.cs @@ -31,32 +31,63 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.ComponentModel; using System.Xml.Serialization; namespace CTe.Classes.Servicos.Evento { /// - /// Informar "1=Empresa Emitente" para este evento. - /// Nota: - /// 1=Empresa Emitente; - /// 2=Empresa Destinatária; - /// 3=Empresa; - /// 5=Fisco; - /// 6=RFB; - /// 9=Outros Órgãos. + /// Informar "1 - Empresa Emitente" para este evento. + /// Nota: + /// 1 - Empresa Emitente; + /// 2 - Empresa Destinatária; + /// 3 - Empresa; + /// 5 - Fisco; + /// 6 - RFB; + /// 9 - Outros Órgãos. /// public enum TipoAutor { - [XmlEnum("1")] taEmpresaEmitente = 1, + /// + /// 1 - Empresa Emitente + /// + [Description("Empresa Emitente")] + [XmlEnum("1")] + taEmpresaEmitente = 1, - [XmlEnum("2")] taEmpresaDestinataria = 2, + /// + /// 2 - Empresa Destinatária + /// + [Description("Empresa Destinatária")] + [XmlEnum("2")] + taEmpresaDestinataria = 2, - [XmlEnum("3")] taEmpresa = 3, + /// + /// 3 - Empresa + /// + [Description("Empresa")] + [XmlEnum("3")] + taEmpresa = 3, - [XmlEnum("5")] taFisco = 5, + /// + /// 5 - Fisco + /// + [Description("Fisco")] + [XmlEnum("5")] + taFisco = 5, - [XmlEnum("6")] taRFB = 6, + /// + /// 6 - RFB + /// + [Description("RFB")] + [XmlEnum("6")] + taRFB = 6, - [XmlEnum("9")] taOutrosOrgaos = 9 + /// + /// 9 - Outros Órgãos + /// + [Description("Outros Órgãos")] + [XmlEnum("9")] + taOutrosOrgaos = 9 } } \ No newline at end of file diff --git a/CTe.Classes/Servicos/Evento/evPrestDesacordo.cs b/CTe.Classes/Servicos/Evento/evPrestDesacordo.cs new file mode 100644 index 000000000..67eb7b53b --- /dev/null +++ b/CTe.Classes/Servicos/Evento/evPrestDesacordo.cs @@ -0,0 +1,52 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.Xml.Serialization; + +namespace CTe.Classes.Servicos.Evento +{ + [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte")] + public class evPrestDesacordo : EventoContainer + { + public evPrestDesacordo() + { + descEvento = "Prestação do Serviço em Desacordo"; + } + + public string descEvento { get; set; } + + public string indDesacordoOper { get; set; } + + public string xObs { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Classes/Servicos/Evento/infEventoEnv.cs b/CTe.Classes/Servicos/Evento/infEventoEnv.cs index 8e4886923..f0e911c31 100644 --- a/CTe.Classes/Servicos/Evento/infEventoEnv.cs +++ b/CTe.Classes/Servicos/Evento/infEventoEnv.cs @@ -43,9 +43,17 @@ namespace CTe.Classes.Servicos.Evento { public class infEventoEnv { + public infEventoEnv(ConfiguracaoServico configuracaoServico = null) + { + _configuracaoServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + } + + public infEventoEnv() + { + } [XmlIgnore] - private readonly ConfiguracaoServico _configuracaoServico = ConfiguracaoServico.Instancia; + private ConfiguracaoServico _configuracaoServico; /// /// HP07 - Grupo de informações do registro do Evento @@ -68,6 +76,8 @@ public class infEventoEnv /// public string CNPJ { get; set; } + public string CPF { get; set; } + /// /// HP12 - Chave de Acesso da NF-e vinculada ao Evento /// @@ -77,17 +87,20 @@ public class infEventoEnv /// HP13 - Data e hora do evento no formato AAAA-MM-DDThh:mm:ssTZD (UTC - Universal Coordinated Time) /// [XmlIgnore] - public DateTime dhEvento { get; set; } + public DateTimeOffset dhEvento { get; set; } [XmlElement(ElementName = "dhEvento")] public string ProxydhEvento { get { + if (_configuracaoServico == null) + _configuracaoServico = ConfiguracaoServico.Instancia; switch (_configuracaoServico.VersaoLayout) { case versao.ve200: return dhEvento.ParaDataHoraStringSemUtc(); + case versao.ve400: case versao.ve300: return dhEvento.ParaDataHoraStringUtc(); default: @@ -95,13 +108,13 @@ public string ProxydhEvento } } - set { dhEvento = Convert.ToDateTime(value); } + set { dhEvento = DateTimeOffset.Parse(value); } } /// /// HP14 - Código do evento /// - public TipoEvento tpEvento { get; set; } + public CTeTipoEvento tpEvento { get; set; } /// /// HP15 - Sequencial do evento para o mesmo tipo de evento. diff --git a/CTe.Classes/Servicos/Evento/infEventoRet.cs b/CTe.Classes/Servicos/Evento/infEventoRet.cs index 40b2c2849..b6526a037 100644 --- a/CTe.Classes/Servicos/Evento/infEventoRet.cs +++ b/CTe.Classes/Servicos/Evento/infEventoRet.cs @@ -36,6 +36,7 @@ using DFe.Classes.Assinatura; using DFe.Classes.Entidades; using DFe.Classes.Flags; +using DFe.Utils; namespace CTe.Classes.Servicos.Evento { @@ -95,7 +96,15 @@ public class infEventoRet /// HR25 - Data e hora de registro do evento no formato AAAA-MM-DDTHH:MM:SSTZD (formato UTC, onde TZD é +HH:MM ou /// –HH:MM), se o evento for rejeitado informar a data e hora de recebimento do evento. /// - public DateTime? dhRegEvento { get; set; } + [XmlIgnore] + public DateTimeOffset? dhRegEvento { get; set; } + + [XmlElement(ElementName = "dhRegEvento")] + public string ProxydhRegEvento + { + get { return dhRegEvento.ParaDataHoraStringUtc(); } + set { dhRegEvento = DateTimeOffset.Parse(value); } + } /// /// HR26 - Número do Protocolo da NF-e diff --git a/CTe.Classes/Servicos/Evento/retEnvEvento.cs b/CTe.Classes/Servicos/Evento/retEnvEvento.cs index 74dcedf93..f989829f0 100644 --- a/CTe.Classes/Servicos/Evento/retEnvEvento.cs +++ b/CTe.Classes/Servicos/Evento/retEnvEvento.cs @@ -50,7 +50,7 @@ public class retEnvEvento : RetornoBase /// /// HR03 - Identificador de controle do Lote de envio do Evento, conforme informado na mensagem de entrada. /// - public int idLote { get; set; } + public long idLote { get; set; } /// /// HR04 - Identificação do Ambiente: 1=Produção /2=Homologação diff --git a/CTe.Classes/Servicos/Recepcao/infRec.cs b/CTe.Classes/Servicos/Recepcao/infRec.cs index 6d0cae6ff..4b1e2b3f6 100644 --- a/CTe.Classes/Servicos/Recepcao/infRec.cs +++ b/CTe.Classes/Servicos/Recepcao/infRec.cs @@ -30,6 +30,11 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + +using System; +using System.Xml.Serialization; +using DFe.Utils; + namespace CTe.Classes.Servicos.Recepcao { public class infRec @@ -45,5 +50,15 @@ public class infRec /// segundos para cima. /// public int tMed { get; set; } + + [XmlIgnore] + public DateTimeOffset dhRecbto { get; set; } + + [XmlElement(ElementName = "dhRecbto")] + public string ProxydhRecbto + { + get { return dhRecbto.ParaDataHoraStringUtc(); } + set { dhRecbto = DateTimeOffset.Parse(value); } + } } } \ No newline at end of file diff --git a/CTe.Classes/Servicos/Recepcao/retCTe.cs b/CTe.Classes/Servicos/Recepcao/retCTe.cs new file mode 100644 index 000000000..4b917cc51 --- /dev/null +++ b/CTe.Classes/Servicos/Recepcao/retCTe.cs @@ -0,0 +1,60 @@ +using System.Xml.Serialization; +using CTe.Classes.Protocolo; +using DFe.Classes.Entidades; +using DFe.Classes.Flags; +using DFe.Utils; + +namespace CTe.Classes.Servicos.Recepcao +{ + [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte")] + public class retCTe : RetornoBase + { + /// + /// AR02 - Versão do leiaute + /// + [XmlAttribute] + public string versao { get; set; } + + /// + /// AR03 - Identificação do Ambiente: 1 – Produção / 2 - Homologação + /// + public TipoAmbiente tpAmb { get; set; } + + /// + /// AR06a - Código da UF que atendeu a solicitação. + /// + public Estado cUF { get; set; } + + /// + /// AR04 - Versão do Aplicativo que recebeu o Lote. A versão deve ser iniciada com a sigla da UF nos casos de WS + /// próprio ou a sigla SCAN, SVAN ou SVRS nos demais casos. + /// + public string verAplic { get; set; } + + /// + /// AR05 - Código do status da resposta (vide item 5.1.1) + /// + public int cStat { get; set; } + + /// + /// AR06 - Descrição literal do status da resposta + /// + public string xMotivo { get; set; } + + public protCTe protCTe { get; set; } + + public static retCTe LoadXml(string xml) + { + var retorno = FuncoesXml.XmlStringParaClasse(xml); + retorno.RetornoXmlString = xml; + return retorno; + } + + public static retCTe LoadXml(string xml, CTe enviCte) + { + var retorno = LoadXml(xml); + retorno.EnvioXmlString = FuncoesXml.ClasseParaXmlString(enviCte); + return retorno; + } + } +} \ No newline at end of file diff --git a/CTe.Classes/Servicos/Recepcao/retEnviCte.cs b/CTe.Classes/Servicos/Recepcao/retEnviCte.cs index 951bfda8b..f34424077 100644 --- a/CTe.Classes/Servicos/Recepcao/retEnviCte.cs +++ b/CTe.Classes/Servicos/Recepcao/retEnviCte.cs @@ -77,7 +77,15 @@ public class retEnviCte : RetornoBase /// /// AR06b - Data e Hora do Recebimento Formato = AAAA-MM-DDTHH:MM:SS Preenchido com data e hora do recebimento do lote. /// - public DateTime dhRecbto { get; set; } + [XmlIgnore] + public DateTimeOffset dhRecbto { get; set; } + + [XmlElement(ElementName = "dhRecbto")] + public string ProxydhRecbto + { + get { return dhRecbto.ParaDataHoraStringUtc(); } + set { dhRecbto = DateTimeOffset.Parse(value); } + } /// /// AR07 - Dados do Recibo do Lote (Só é gerado se o Lote for aceito) diff --git a/CTe.Classes/Servicos/Status/consStatServ.cs b/CTe.Classes/Servicos/Status/consStatServ.cs index 408de55c8..97c1912fc 100644 --- a/CTe.Classes/Servicos/Status/consStatServ.cs +++ b/CTe.Classes/Servicos/Status/consStatServ.cs @@ -33,6 +33,7 @@ using System.Xml.Serialization; using CTe.Classes.Servicos.Tipos; +using DFe.Classes.Entidades; using DFe.Classes.Flags; namespace CTe.Classes.Servicos.Status @@ -61,4 +62,31 @@ public consStatServCte() /// public string xServ { get; set; } } + + [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte")] + public class consStatServCTe + { + public consStatServCTe() + { + xServ = "STATUS"; + } + + /// + /// FP02 - Versão do leiaute + /// + [XmlAttribute] + public versao versao { get; set; } + + /// + /// FP03 - Identificação do Ambiente: 1 – Produção / 2 - Homologação + /// + public TipoAmbiente tpAmb { get; set; } + + public Estado cUF { get; set; } + + /// + /// FP04 - Serviço solicitado 'STATUS' + /// + public string xServ { get; set; } + } } \ No newline at end of file diff --git a/CTe.Classes/Servicos/Status/retConsStatServ.cs b/CTe.Classes/Servicos/Status/retConsStatServ.cs index d01ec926e..5b9f7a0c0 100644 --- a/CTe.Classes/Servicos/Status/retConsStatServ.cs +++ b/CTe.Classes/Servicos/Status/retConsStatServ.cs @@ -75,12 +75,28 @@ public class retConsStatServCte : RetornoBase /// public Estado cUF { get; set; } - public DateTime dhRecbto { get; set; } + [XmlIgnore] + public DateTimeOffset dhRecbto { get; set; } + + [XmlElement(ElementName = "dhRecbto")] + public string ProxydhRecbto + { + get { return dhRecbto.ParaDataHoraStringUtc(); } + set { dhRecbto = DateTimeOffset.Parse(value); } + } public int tMed { get; set; } + [XmlIgnore] public DateTime dhRetorno { get; set; } + [XmlElement(ElementName = "dhRetorno")] + public string ProxydhRetorno + { + get { return dhRetorno.ParaDataHoraString(); } + set { dhRetorno = DateTime.Parse(value); } + } + public string xObs { get; set; } public static retConsStatServCte LoadXml(string xml, consStatServCte consStatServCte) @@ -99,4 +115,80 @@ private static retConsStatServCte LoadXml(string xml) return retorno; } } + + [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte")] + public class retConsStatServCTe : RetornoBase + { + /// + /// FR02 - Versão do leiaute + /// + [XmlAttribute] + public versao versao { get; set; } + + /// + /// FR03 - Identificação do Ambiente: 1 – Produção / 2 - Homologação + /// + public TipoAmbiente tpAmb { get; set; } + + /// + /// FR04 - Versão do Aplicativo que processou a consulta. A versão deve ser iniciada com a sigla da UF nos casos de WS + /// próprio ou a sigla SCAN, SVAN ou SVRS nos demais casos. + /// + public string verAplic { get; set; } + + /// + /// FR05 - Código do status da resposta. + /// + public int cStat { get; set; } + + /// + /// FR06 - Descrição literal do status da resposta. + /// + public string xMotivo { get; set; } + + /// + /// FR07 - Código da UF que atendeu a solicitação + /// + public Estado cUF { get; set; } + + [XmlIgnore] + public DateTimeOffset dhRecbto { get; set; } + + [XmlElement(ElementName = "dhRecbto")] + public string ProxydhRecbto + { + get { return dhRecbto.ParaDataHoraStringUtc(); } + set { dhRecbto = DateTimeOffset.Parse(value); } + } + + public int tMed { get; set; } + + [XmlIgnore] + public DateTime dhRetorno { get; set; } + + [XmlElement(ElementName = "dhRetorno")] + public string ProxydhRetorno + { + get { return dhRetorno.ParaDataHoraString(); } + set { dhRetorno = DateTime.Parse(value); } + } + + public string xObs { get; set; } + + public static retConsStatServCTe LoadXml(string xml, consStatServCTe consStatServCte) + { + var retorno = LoadXml(xml); + retorno.EnvioXmlString = FuncoesXml.ClasseParaXmlString(consStatServCte); + + return retorno; + } + + private static retConsStatServCTe LoadXml(string xml) + { + var retorno = FuncoesXml.XmlStringParaClasse(xml); + retorno.RetornoXmlString = xml; + + return retorno; + } + } } \ No newline at end of file diff --git a/CTe.Classes/Servicos/Tipos/CTeServicosTipos.cs b/CTe.Classes/Servicos/Tipos/CTeServicosTipos.cs new file mode 100644 index 000000000..42a0682b6 --- /dev/null +++ b/CTe.Classes/Servicos/Tipos/CTeServicosTipos.cs @@ -0,0 +1,221 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.ComponentModel; +using System.Xml.Serialization; + +namespace CTe.Classes.Servicos.Tipos +{ + public enum ServicoCTe + { + /// + /// serviço destinado à recepção de mensagem do Evento de Cancelamento da NF-e + /// + RecepcaoEventoCancelmento, + + /// + /// serviço destinado à recepção de mensagem do Evento de Carta de Correção da NF-e + /// + RecepcaoEventoCartaCorrecao, + + /// + /// serviço destinado à recepção de mensagem do Evento EPEC da NF-e + /// + RecepcaoEventoEpec, + + /// + /// serviço destinado à recepção de mensagem do Evento de Manifestação do destinatário da NF-e + /// + RecepcaoEventoManifestacaoDestinatario, + + /// + /// serviço destinado à recepção de mensagens de lote de NF-e versão 2.0 + /// + CteRecepcao, + + /// + /// serviço destinado a retornar o resultado do processamento do lote de NF-e versão 2.0 + /// + CteRetRecepcao, + + /// + /// Serviço para consultar o cadastro de contribuintes do ICMS da unidade federada + /// + CteConsultaCadastro, + + /// + /// serviço destinado ao atendimento de solicitações de inutilização de numeração + /// + CteInutilizacao, + + /// + /// serviço destinado ao atendimento de solicitações de consulta da situação atual da NF-e + /// na Base de Dados do Portal da Secretaria de Fazenda Estadual + /// + CteConsultaProtocolo, + + /// + /// serviço destinado à consulta do status do serviço prestado pelo Portal da Secretaria de Fazenda Estadual + /// + CteStatusServico, + + /// + /// serviço destinado à recepção de mensagens de lote de NF-e versão 3.10 + /// + CteAutorizacao, + + /// + /// serviço destinado a retornar o resultado do processamento do lote de NF-e versão 3.10 + /// + CteRetAutorizacao, + + /// + /// Distribui documentos e informações de interesse do ator da NF-e + /// + CteDistribuicaoDFe, + + /// + /// “Serviço de Consulta da Relação de Documentos Destinados” para um determinado CNPJ + /// de destinatário informado na NF-e. + /// + CteConsultaDest, + + /// + /// Serviço destinado ao atendimento de solicitações de download de Notas Fiscais Eletrônicas por seus destinatários + /// + CteDownloadNF + } + + /// + /// Usado para discriminar o tipo de evento, pois o serviço de cancelamento e carta de correção devem usar a url + /// designada para UF da empresa, já o serviço EPEC usa a url do ambiente nacional + /// + public enum TipoRecepcaoEvento + { + Nenhum, + Cancelamento, + CartaCorrecao, + Epec, + ManifestacaoDestinatario + } + + /// + /// Manifestação + /// 210200 - Confirmação da Operação; + /// 210210 - Ciência da Operação; + /// 210220 - Desconhecimento da Operação; + /// 210240 - Operação não Realizada + /// + public enum TipoManifestacao + { + /// + /// 210200 - Confirmação da Operação + /// + [Description("Confirmação da Operação")] + [XmlEnum("Confirmacao da Operacao")] + e210200, + + /// + /// 210210 - Ciência da Operação + /// + [Description("Ciência da Operação")] + [XmlEnum("Ciencia da Operacao")] + e210210, + + /// + /// 210220 - Desconhecimento da Operação + /// + [Description("Desconhecimento da Operação")] + [XmlEnum("Desconhecimento da Operacao")] + e210220, + + /// + /// 210240 - Operação não Realizada + /// + [Description("Operação não Realizada")] + [XmlEnum("Operacao nao Realizada")] + e210240 + } + + /// + /// Versão do leiaute + /// 2.00 - Versão 2.00; + /// 3.00 - Versão 3.00/3.00a + /// 4.00 - Versão 4.00 + /// + public enum versao + { + /// + /// 2.00 - Versão 2.00 + /// + [Description("Versão 2.00")] + [XmlEnum("2.00")] + ve200, + + /// + /// 3.00 - Versão 3.00/3.00a + /// + [Description("Versão 3.00/3.00a")] + [XmlEnum("3.00")] + ve300, + + /// + /// 4.00 - Versão 4.00 + /// + [Description("Versão 4.00")] + [XmlEnum("4.00")] + ve400 + } + + /// + /// Indicador de Sincronização: + /// 0 - Assíncrono. A resposta deve ser obtida consultando o serviço NFeRetAutorizacao, com o nº do recibo + /// 1 - Síncrono. Empresa solicita processamento síncrono do Lote de NF-e (sem a geração de Recibo para consulta futura); + /// + public enum IndicadorSincronizacao + { + /// + /// 0 - Assíncrono. A resposta deve ser obtida consultando o serviço NFeRetAutorizacao, com o nº do recibo + /// + [Description("Assíncrono. A resposta deve ser obtida consultando o serviço NFeRetAutorizacao, com o nº do recibo")] + [XmlEnum("0")] + Assincrono = 0, + + /// + /// 1 - Síncrono. Empresa solicita processamento síncrono do Lote de NF-e (sem a geração de Recibo para consulta futura) + /// + [Description("Síncrono. Empresa solicita processamento síncrono do Lote de NF-e (sem a geração de Recibo para consulta futura)")] + [XmlEnum("1")] + Sincrono = 1 + } +} \ No newline at end of file diff --git a/CTe.Classes/Servicos/Tipos/ServicosTipos.cs b/CTe.Classes/Servicos/Tipos/ServicosTipos.cs deleted file mode 100644 index d87767fc7..000000000 --- a/CTe.Classes/Servicos/Tipos/ServicosTipos.cs +++ /dev/null @@ -1,188 +0,0 @@ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ -/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Você pode obter a última versão desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ -/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ -/* qualquer versão posterior. */ -/* */ -/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ -/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ -/* */ -/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ -/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ -/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Você também pode obter uma copia da licença em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ - -using System.ComponentModel; -using System.Xml.Serialization; - -namespace CTe.Classes.Servicos.Tipos -{ - public enum ServicoCTe - { - /// - /// serviço destinado à recepção de mensagem do Evento de Cancelamento da NF-e - /// - RecepcaoEventoCancelmento, - - /// - /// serviço destinado à recepção de mensagem do Evento de Carta de Correção da NF-e - /// - RecepcaoEventoCartaCorrecao, - - /// - /// serviço destinado à recepção de mensagem do Evento EPEC da NF-e - /// - RecepcaoEventoEpec, - - /// - /// serviço destinado à recepção de mensagem do Evento de Manifestação do destinatário da NF-e - /// - RecepcaoEventoManifestacaoDestinatario, - - /// - /// serviço destinado à recepção de mensagens de lote de NF-e versão 2.0 - /// - CteRecepcao, - - /// - /// serviço destinado a retornar o resultado do processamento do lote de NF-e versão 2.0 - /// - CteRetRecepcao, - - /// - /// Serviço para consultar o cadastro de contribuintes do ICMS da unidade federada - /// - CteConsultaCadastro, - - /// - /// serviço destinado ao atendimento de solicitações de inutilização de numeração - /// - CteInutilizacao, - - /// - /// serviço destinado ao atendimento de solicitações de consulta da situação atual da NF-e - /// na Base de Dados do Portal da Secretaria de Fazenda Estadual - /// - CteConsultaProtocolo, - - /// - /// serviço destinado à consulta do status do serviço prestado pelo Portal da Secretaria de Fazenda Estadual - /// - CteStatusServico, - - /// - /// serviço destinado à recepção de mensagens de lote de NF-e versão 3.10 - /// - CteAutorizacao, - - /// - /// serviço destinado a retornar o resultado do processamento do lote de NF-e versão 3.10 - /// - CteRetAutorizacao, - - /// - /// Distribui documentos e informações de interesse do ator da NF-e - /// - CteDistribuicaoDFe, - - /// - /// “Serviço de Consulta da Relação de Documentos Destinados” para um determinado CNPJ - /// de destinatário informado na NF-e. - /// - CteConsultaDest, - - /// - /// Serviço destinado ao atendimento de solicitações de download de Notas Fiscais Eletrônicas por seus destinatários - /// - CteDownloadNF - } - - /// - /// Usado para discriminar o tipo de evento, pois o serviço de cancelamento e carta de correção devem usar a url - /// designada para UF da empresa, já o serviço EPEC usa a url do ambiente nacional - /// - public enum TipoRecepcaoEvento - { - Nenhum, - Cancelamento, - CartaCorrecao, - Epec, - ManifestacaoDestinatario - } - - public enum TipoManifestacao - { - [Description("Confirmacao da Operacao")] - [XmlEnum("Confirmacao da Operacao")] - e210200, - - [Description("Ciencia da Operacao")] - [XmlEnum("Ciencia da Operacao")] - e210210, - - [Description("Desconhecimento da Operacao")] - [XmlEnum("Desconhecimento da Operacao")] - e210220, - - [Description("Operacao nao Realizada")] - [XmlEnum("Operacao nao Realizada")] - e210240 - } - - public enum versao - { - [XmlEnum("2.00")] ve200, - [XmlEnum("3.00")] ve300 - } - - /// - /// Indicador de Sincronização: - /// 0 = Assíncrono. A resposta deve ser obtida consultando o serviço NFeRetAutorizacao, com o nº do recibo - /// - /// 1 = Síncrono. Empresa solicita processamento síncrono do Lote de NF-e (sem a geração de Recibo para consulta - /// futura); - /// - /// - public enum IndicadorSincronizacao - { - [XmlEnum("0")] Assincrono = 0, - [XmlEnum("1")] Sincrono = 1 - } - - /// - /// Tipo do evento de manifestação do destinatário. - /// - public enum TipoEventoManifestacaoDestinatario - { - [Description("Confirmacao da Operacao")] - TeMdConfirmacaoDaOperacao = 210200, - - [Description("Ciencia da Operacao")] - TeMdCienciaDaOperacao = 210210, - - [Description("Desconhecimento da Operacao")] - TeMdDesconhecimentoDaOperacao = 210220, - - [Description("Operacao nao Realizada")] - TeMdOperacaoNaoRealizada = 210240 - } -} \ No newline at end of file diff --git a/CTe.Classes/Simplificado/Carga/comp.cs b/CTe.Classes/Simplificado/Carga/comp.cs new file mode 100644 index 000000000..e2a190422 --- /dev/null +++ b/CTe.Classes/Simplificado/Carga/comp.cs @@ -0,0 +1,22 @@ +using System.Xml.Serialization; + +namespace CTe.Classes.Simplificado.Carga +{ + /// + /// Componente do valor da prestação. + /// + public class comp + { + /// + /// Nome do componente (ex: "Frete Valor", "Vr Icms"). + /// + [XmlElement(ElementName = "xNome")] + public string xNome { get; set; } + + /// + /// Valor do componente. + /// + [XmlElement(ElementName = "vComp")] + public decimal vComp { get; set; } + } +} diff --git a/CTe.Classes/Simplificado/Carga/det.cs b/CTe.Classes/Simplificado/Carga/det.cs new file mode 100644 index 000000000..e3fc85556 --- /dev/null +++ b/CTe.Classes/Simplificado/Carga/det.cs @@ -0,0 +1,66 @@ +using CTe.Classes.Simplificado.Informacoes; +using System.Collections.Generic; +using System.Xml.Serialization; + +namespace CTe.Classes.Simplificado.Carga +{ + /// + /// Detalhamento de cada entrega/prestação do CT-e Simplificado. + /// + public class det + { + /// + /// Número do item na lista de detalhamento. + /// + [XmlAttribute(AttributeName = "nItem")] + public int nItem { get; set; } + + /// + /// Código do Município de início da prestação (IBGE). + /// + [XmlElement(ElementName = "cMunIni")] + public int cMunIni { get; set; } + + /// + /// Nome do Município do início da prestação. + /// + [XmlElement(ElementName = "xMunIni")] + public string xMunIni { get; set; } + + /// + /// Código do Município de término da prestação (IBGE). + /// + [XmlElement(ElementName = "cMunFim")] + public int cMunFim { get; set; } + + /// + /// Nome do Município do término da prestação. + /// + [XmlElement(ElementName = "xMunFim")] + public string xMunFim { get; set; } + + /// + /// Valor da Prestação do Serviço. + /// + [XmlElement(ElementName = "vPrest")] + public decimal vPrest { get; set; } + + /// + /// Valor a Receber. + /// + [XmlElement(ElementName = "vRec")] + public decimal vRec { get; set; } + + /// + /// Componentes do valor da prestação. + /// + [XmlElement(ElementName = "Comp")] + public List Comp { get; set; } + + /// + /// Informações das NF-e vinculadas à entrega. + /// + [XmlElement(ElementName = "infNFe")] + public List infNFe { get; set; } + } +} diff --git a/CTe.Classes/Simplificado/Carga/infCarga.cs b/CTe.Classes/Simplificado/Carga/infCarga.cs new file mode 100644 index 000000000..263202581 --- /dev/null +++ b/CTe.Classes/Simplificado/Carga/infCarga.cs @@ -0,0 +1,29 @@ +using System.Collections.Generic; +using System.Xml.Serialization; + +namespace CTe.Classes.Simplificado.Carga +{ + /// + /// Informações da carga do CT-e. + /// + public class infCarga + { + /// + /// Valor total da carga. + /// + [XmlElement(ElementName = "vCarga")] + public decimal vCarga { get; set; } + + /// + /// Produto predominante. + /// + [XmlElement(ElementName = "proPred")] + public string proPred { get; set; } + + /// + /// Detalhamento dos itens da carga. + /// + [XmlElement(ElementName = "det")] + public List det { get; set; } + } +} diff --git a/CTe.Classes/Simplificado/Informacoes/infCte.cs b/CTe.Classes/Simplificado/Informacoes/infCte.cs new file mode 100644 index 000000000..23b96646b --- /dev/null +++ b/CTe.Classes/Simplificado/Informacoes/infCte.cs @@ -0,0 +1,273 @@ +using CTe.Classes.Simplificado.Carga; +using DFe.Utils; +using System; +using System.Collections.Generic; +using System.Xml.Serialization; + +namespace CTe.Classes.Simplificado.Informacoes +{ + /// + /// Informações do CT-e. + /// + public class infCte + { + /// + /// Código da UF do emitente do CT-e. Utilizar a Tabela do IBGE. + /// + [XmlElement(ElementName = "cUF")] + public int cUf { get; set; } + + /// + /// Código numérico que compõe a Chave de Acesso. + /// Número aleatório gerado pelo emitente para cada CT-e, com o objetivo de evitar acessos indevidos ao documento. + /// + [XmlElement(ElementName = "cCT")] + public string cCt { get; set; } + + /// + /// Código Fiscal de Operações e Prestações. + /// + [XmlElement(ElementName = "CFOP")] + public string cfop { get; set; } + + /// + /// Natureza da Operação. + /// + [XmlElement(ElementName = "natOp")] + public string natOp { get; set; } + + /// + /// Modelo do documento fiscal. Utilizar o código 57 para identificação do CT-e. + /// + [XmlElement(ElementName = "mod")] + public int mod { get; set; } + + /// + /// Série do CT-e. Preencher com "0" no caso de série única. + /// + [XmlElement(ElementName = "serie")] + public int serie { get; set; } + + /// + /// Número do CT-e. + /// + [XmlElement(ElementName = "nCT")] + public string nCt { get; set; } + + /// + /// Data e hora de emissão do CT-e. + /// + [XmlIgnore] + public DateTimeOffset? dhEmi { get; set; } + + /// + /// Data e hora de emissão do CT-e. Formato AAAA-MM-DDTHH:MM:DD TZD. + /// + [XmlElement(ElementName = "dhEmi")] + public string DhEmi + { + get { return dhEmi.ParaDataHoraStringUtc(); } + set { dhEmi = DateTimeOffset.Parse(value); } + } + + /// + /// Formato de impressão do DACTE. Preencher com: 1 - Retrato; 2 - Paisagem. + /// + [XmlElement(ElementName = "tpImp")] + public int tpImp { get; set; } + + /// + /// Forma de emissão do CT-e. + /// + [XmlElement(ElementName = "tpEmis")] + public int tpEmis { get; set; } + + /// + /// Dígito Verificador da chave de acesso do CT-e. + /// + [XmlElement(ElementName = "cDV")] + public int cDv { get; set; } + + /// + /// Tipo do Ambiente. Preencher com: 1 - Produção; 2 - Homologação. + /// + [XmlElement(ElementName = "tpAmb")] + public int tpAmb { get; set; } + + /// + /// Tipo do CT-e Simplificado. Preencher com: + /// 5 - CTe Simplificado; + /// 6 - Substituição CTe Simplificado. + /// + [XmlElement(ElementName = "tpCTe")] + public int tpCte { get; set; } + + /// + /// Identificador do processo de emissão do CT-e. + /// + [XmlElement(ElementName = "procEmi")] + public int procEmi { get; set; } + + /// + /// Versão do processo de emissão. + /// + [XmlElement(ElementName = "verProc")] + public string verProc { get; set; } + + /// + /// Código do Município de envio do CT-e (de onde o documento foi transmitido). Utilizar a tabela do IBGE. + /// + [XmlElement(ElementName = "cMunEnv")] + public int cMunEnv { get; set; } + + /// + /// Nome do Município de envio do CT-e (de onde o documento foi transmitido). + /// + [XmlElement(ElementName = "xMunEnv")] + public string xMunEnv { get; set; } + + /// + /// Sigla da UF de envio do CT-e (de onde o documento foi transmitido). + /// + [XmlElement(ElementName = "UFEnv")] + public string ufEnv { get; set; } + + /// + /// Modal. Preencher com: + /// 01-Rodoviário; + /// 02-Aéreo; + /// 03-Aquaviário. + /// + [XmlElement(ElementName = "modal")] + public string modal { get; set; } + + /// + /// Tipo do Serviço. Preencher com: + /// 0 - Normal; + /// 1 - Subcontratação; + /// 2 - Redespacho. + /// + [XmlElement(ElementName = "tpServ")] + public int tpServ { get; set; } + + /// + /// UF do início da prestação. + /// + [XmlElement(ElementName = "UFIni")] + public string ufIni { get; set; } + + /// + /// UF do término da prestação. + /// + [XmlElement(ElementName = "UFFim")] + public string ufFim { get; set; } + + /// + /// Indicador se o Recebedor retira no Aeroporto, Filial, Porto ou Estação de Destino. + /// Preencher com: 0 - sim; 1 - não. + /// + [XmlElement(ElementName = "retira")] + public int retira { get; set; } + + /// + /// Detalhes do retira. + /// + [XmlElement(ElementName = "detRetira")] + public string detRetira { get; set; } + + /// + /// Data e Hora da entrada em contingência. + /// + [XmlIgnore] + public DateTimeOffset? dhCont { get; set; } + + /// + /// Data e Hora da entrada em contingência. Formato AAAA-MM-DDTHH:MM:SS. + /// + [XmlElement(ElementName = "dhCont")] + public string DhCont + { + get { return dhCont.ParaDataHoraStringUtc(); } + set { dhCont = DateTimeOffset.Parse(value); } + } + + /// + /// Justificativa da entrada em contingência. + /// + [XmlElement(ElementName = "xJust")] + public string xJust { get; set; } + + /// + /// Característica adicional do transporte. + /// + [XmlElement(ElementName = "caracAd")] + public string caracAd { get; set; } + + /// + /// Característica adicional do serviço. + /// + [XmlElement(ElementName = "caracSer")] + public string caracSer { get; set; } + + /// + /// Detalhamento das entregas/prestações do CT-e Simplificado. + /// + [XmlElement(ElementName = "detEntrega")] + public List detEntrega { get; set; } + + + /// + /// Detalhamento das entregas/prestações do CT-e Simplificado. + /// + [XmlElement(ElementName = "det")] + public List det { get; set; } + + /// + /// Informações da carga do CT-e. + /// + [XmlElement(ElementName = "infCarga")] + public infCarga infCarga { get; set; } + } + + /// + /// Detalhamento das entregas/prestações do CT-e Simplificado. + /// + public class DetEntrega + { + /// + /// Código do Município de início da prestação. Utilizar a tabela do IBGE. + /// + [XmlElement(ElementName = "cMunIni")] + public int cMunIni { get; set; } + + /// + /// Nome do Município do início da prestação. + /// + [XmlElement(ElementName = "xMunIni")] + public string xMunIni { get; set; } + + /// + /// Código do Município de término da prestação. Utilizar a tabela do IBGE. + /// + [XmlElement(ElementName = "cMunFim")] + public int cMunFim { get; set; } + + /// + /// Nome do Município do término da prestação. + /// + [XmlElement(ElementName = "xMunFim")] + public string xMunFim { get; set; } + + /// + /// Valor da Prestação do Serviço. + /// + [XmlElement(ElementName = "vPrest")] + public decimal vPrest { get; set; } + + /// + /// Valor a Receber. + /// + [XmlElement(ElementName = "vRec")] + public decimal vRec { get; set; } + } +} diff --git a/CTe.Classes/Simplificado/Informacoes/infNFe.cs b/CTe.Classes/Simplificado/Informacoes/infNFe.cs new file mode 100644 index 000000000..38de8c6a1 --- /dev/null +++ b/CTe.Classes/Simplificado/Informacoes/infNFe.cs @@ -0,0 +1,33 @@ +using System; +using System.Xml.Serialization; + +namespace CTe.Classes.Simplificado.Informacoes +{ + /// + /// Informações da NF-e vinculada à entrega. + /// + public class infNFe + { + /// + /// Chave de acesso da NF-e. + /// + [XmlElement(ElementName = "chNFe")] + public string chNFe { get; set; } + + /// + /// Data prevista de entrega. + /// + [XmlIgnore] + public DateTimeOffset? dPrev { get; set; } + + /// + /// Data prevista de entrega (formato AAAA-MM-DD). + /// + [XmlElement(ElementName = "dPrev")] + public string DPrev + { + get { return dPrev?.ToString("yyyy-MM-dd"); } + set { dPrev = DateTimeOffset.Parse(value); } + } + } +} diff --git a/CTe.Classes/Simplificado/cteSimp.cs b/CTe.Classes/Simplificado/cteSimp.cs new file mode 100644 index 000000000..6b80ebfe9 --- /dev/null +++ b/CTe.Classes/Simplificado/cteSimp.cs @@ -0,0 +1,30 @@ +using CTe.Classes.Simplificado.Informacoes; +using System.Xml.Serialization; + +namespace CTe.Classes.Simplificado +{ + /// + /// Tipo Conhecimento de Transporte Eletrônico (Modelo 57) - Modelo Simplificado + /// + [XmlRoot("CTeSimp", Namespace = "http://www.portalfiscal.inf.br/cte")] + public class cteSimp + { + /// + /// Informações do CT-e + /// + [XmlElement("infCte")] + public infCte infCte { get; set; } + + /// + /// Versão do leiaute + /// + [XmlAttribute("versao")] + public string versao { get; set; } + + /// + /// Identificador da tag a ser assinada + /// + [XmlAttribute("Id")] + public string id { get; set; } + } +} diff --git a/CTe.Classes/cteOSProc.cs b/CTe.Classes/cteOSProc.cs new file mode 100644 index 000000000..d75ceea22 --- /dev/null +++ b/CTe.Classes/cteOSProc.cs @@ -0,0 +1,32 @@ +using System; +using System.Xml.Serialization; +using CTe.Classes.Protocolo; +using CTe.Classes.Servicos.Tipos; +using DFe.Utils; + +namespace CTe.Classes +{ + [Serializable] + [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", + ElementName = "cteOSProc")] + public class cteOSProc + { + [XmlAttribute] + public versao versao { get; set; } + + public CTe CTeOS { get; set; } + + public protCTe protCTe { get; set; } + + + public static cteOSProc LoadXmlString(string xml) + { + return FuncoesXml.XmlStringParaClasse(xml); + } + + public static cteOSProc LoadXmlArquivo(string caminhoArquivoXml) + { + return FuncoesXml.ArquivoXmlParaClasse(caminhoArquivoXml); + } + } +} \ No newline at end of file diff --git a/CTe.Classes/cteProc.cs b/CTe.Classes/cteProc.cs index 74e659543..6f25fc3e7 100644 --- a/CTe.Classes/cteProc.cs +++ b/CTe.Classes/cteProc.cs @@ -2,6 +2,7 @@ using System.Xml.Serialization; using CTe.Classes.Protocolo; using CTe.Classes.Servicos.Tipos; +using DFe.Utils; namespace CTe.Classes { @@ -16,5 +17,16 @@ public class cteProc public CTe CTe { get; set; } public protCTe protCTe { get; set; } + + + public static cteProc LoadXmlString(string xml) + { + return FuncoesXml.XmlStringParaClasse(xml); + } + + public static cteProc LoadXmlArquivo(string caminhoArquivoXml) + { + return FuncoesXml.ArquivoXmlParaClasse(caminhoArquivoXml); + } } } \ No newline at end of file diff --git a/CTe.Classes/cteSimpProc.cs b/CTe.Classes/cteSimpProc.cs new file mode 100644 index 000000000..e290cd05c --- /dev/null +++ b/CTe.Classes/cteSimpProc.cs @@ -0,0 +1,69 @@ +using CTe.Classes.Protocolo; +using CTe.Classes.Simplificado; +using DFe.Utils; +using System; +using System.Xml.Serialization; + +namespace CTe.Classes +{ + /// + /// CT-e Simplificado processado + /// + [XmlRoot("cteSimpProc", Namespace = "http://www.portalfiscal.inf.br/cte")] + public class cteSimpProc + { + /// + /// Representa o CT-e Simplificado + /// + [XmlElement("CTeSimp")] + public cteSimp cteSimp { get; set; } + + /// + /// Representa o protocolo do CT-e + /// + [XmlElement("protCTe")] + public protCTe protCTe { get; set; } + + /// + /// Versão do CT-e + /// + [XmlAttribute("versao")] + public string versao { get; set; } + + /// + /// IP do transmissor do documento fiscal para o ambiente autorizador + /// + [XmlAttribute("ipTransmissor")] + public string ipTransmissor { get; set; } + + /// + /// Porta de origem utilizada na conexão (De 0 a 65535) + /// + [XmlAttribute("nPortaCon")] + public string nPortaCon { get; set; } + + + [XmlIgnore] + public DateTimeOffset? dhConexao { get; set; } + + /// + /// Data e Hora da Conexão de Origem + /// + [XmlElement(ElementName = "dhConexao")] + public string DhConexao + { + get { return dhConexao.ParaDataHoraStringUtc(); } + set { dhConexao = DateTimeOffset.Parse(value); } + } + + public static cteSimpProc LoadXmlString(string xml) + { + return FuncoesXml.XmlStringParaClasse(xml); + } + + public static cteSimpProc LoadXmlArquivo(string caminhoArquivoXml) + { + return FuncoesXml.ArquivoXmlParaClasse(caminhoArquivoXml); + } + } +} diff --git a/CTe.Dacte.AppTeste/App.config b/CTe.Dacte.AppTeste/App.config index d1428ad71..4bfa00561 100644 --- a/CTe.Dacte.AppTeste/App.config +++ b/CTe.Dacte.AppTeste/App.config @@ -1,6 +1,6 @@ - + diff --git a/CTe.Dacte.AppTeste/CTe.Dacte.AppTeste.csproj b/CTe.Dacte.AppTeste/CTe.Dacte.AppTeste.csproj index afb2ed953..47bb41a15 100644 --- a/CTe.Dacte.AppTeste/CTe.Dacte.AppTeste.csproj +++ b/CTe.Dacte.AppTeste/CTe.Dacte.AppTeste.csproj @@ -8,7 +8,7 @@ WinExe CTe.Dacte.AppTeste CTe.Dacte.AppTeste - v4.5 + v4.8 512 true @@ -53,7 +53,6 @@ Form1.cs - Form1.cs @@ -82,7 +81,7 @@ - {C86E3921-F0B8-4BFE-9EF1-0E9084326B13} + {fc15197f-4f76-47d4-839e-0f442e1d47ce} CTe.Classes @@ -94,7 +93,7 @@ CTe.Dacte.Fast - {B4E1A7A6-5D66-4326-8A8D-39338E6FC84C} + {97f3c222-fd10-488a-812b-e514c3a8863c} DFe.Utils diff --git a/CTe.Dacte.AppTeste/Form1.Designer.cs b/CTe.Dacte.AppTeste/Form1.Designer.cs index ca9f507bf..2d2499127 100644 --- a/CTe.Dacte.AppTeste/Form1.Designer.cs +++ b/CTe.Dacte.AppTeste/Form1.Designer.cs @@ -45,13 +45,14 @@ private void InitializeComponent() this.button7 = new System.Windows.Forms.Button(); this.button8 = new System.Windows.Forms.Button(); this.button9 = new System.Windows.Forms.Button(); + this.chbQuebrarLinhaObservacao = new System.Windows.Forms.CheckBox(); ((System.ComponentModel.ISupportInitialize)(this.pcbLogotipo)).BeginInit(); this.groupBox1.SuspendLayout(); this.SuspendLayout(); // // button5 // - this.button5.Location = new System.Drawing.Point(416, 126); + this.button5.Location = new System.Drawing.Point(416, 143); this.button5.Name = "button5"; this.button5.Size = new System.Drawing.Size(83, 28); this.button5.TabIndex = 21; @@ -61,7 +62,7 @@ private void InitializeComponent() // // button4 // - this.button4.Location = new System.Drawing.Point(324, 126); + this.button4.Location = new System.Drawing.Point(324, 143); this.button4.Name = "button4"; this.button4.Size = new System.Drawing.Size(83, 28); this.button4.TabIndex = 20; @@ -134,7 +135,7 @@ private void InitializeComponent() // // button1 // - this.button1.Location = new System.Drawing.Point(227, 126); + this.button1.Location = new System.Drawing.Point(227, 143); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(83, 28); this.button1.TabIndex = 11; @@ -174,7 +175,7 @@ private void InitializeComponent() this.groupBox1.Controls.Add(this.button8); this.groupBox1.Controls.Add(this.button9); this.groupBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.groupBox1.Location = new System.Drawing.Point(225, 161); + this.groupBox1.Location = new System.Drawing.Point(225, 178); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(293, 54); this.groupBox1.TabIndex = 25; @@ -214,11 +215,22 @@ private void InitializeComponent() this.button9.UseVisualStyleBackColor = true; this.button9.Click += new System.EventHandler(this.button9_Click); // + // chbQuebrarLinhaObservacao + // + this.chbQuebrarLinhaObservacao.AutoSize = true; + this.chbQuebrarLinhaObservacao.Location = new System.Drawing.Point(228, 120); + this.chbQuebrarLinhaObservacao.Name = "chbQuebrarLinhaObservacao"; + this.chbQuebrarLinhaObservacao.Size = new System.Drawing.Size(163, 17); + this.chbQuebrarLinhaObservacao.TabIndex = 26; + this.chbQuebrarLinhaObservacao.Text = "Quebrar linha na observação"; + this.chbQuebrarLinhaObservacao.UseVisualStyleBackColor = true; + // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(534, 223); + this.ClientSize = new System.Drawing.Size(534, 241); + this.Controls.Add(this.chbQuebrarLinhaObservacao); this.Controls.Add(this.groupBox1); this.Controls.Add(this.button6); this.Controls.Add(this.txtArquivo); @@ -261,6 +273,7 @@ private void InitializeComponent() private System.Windows.Forms.Button button7; private System.Windows.Forms.Button button8; private System.Windows.Forms.Button button9; + private System.Windows.Forms.CheckBox chbQuebrarLinhaObservacao; } } diff --git a/CTe.Dacte.AppTeste/Form1.cs b/CTe.Dacte.AppTeste/Form1.cs index c4df4ffae..9f7bc7f83 100644 --- a/CTe.Dacte.AppTeste/Form1.cs +++ b/CTe.Dacte.AppTeste/Form1.cs @@ -4,14 +4,8 @@ using CTe.Dacte.Fast; using DFe.Utils; using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; using System.Drawing; using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; namespace CTe.Dacte.AppTeste @@ -71,7 +65,14 @@ public DacteFrCte GetReport() if (!File.Exists(xml)) return null; - cte = FuncoesXml.ArquivoXmlParaClasse(xml); + try + { + cte = FuncoesXml.ArquivoXmlParaClasse(xml); + } + catch + { + cte = new cteProc() { CTe = FuncoesXml.ArquivoXmlParaClasse(xml), protCTe = new Classes.Protocolo.protCTe() }; + } } catch (Exception ex) { @@ -86,7 +87,8 @@ public DacteFrCte GetReport() { Logomarca = ImageToByte(pcbLogotipo.Image), DocumentoCancelado = chbCancelado.Checked, - Desenvolvedor = txtDesenvolvedor.Text + Desenvolvedor = txtDesenvolvedor.Text, + QuebrarLinhasObservacao = chbQuebrarLinhaObservacao.Checked }, arquivoRelatorio: txtArquivo.Text); return rpt; diff --git a/CTe.Dacte.AppTeste/Program.cs b/CTe.Dacte.AppTeste/Program.cs index a8fc1f84c..b5991f32e 100644 --- a/CTe.Dacte.AppTeste/Program.cs +++ b/CTe.Dacte.AppTeste/Program.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using System.Windows.Forms; namespace CTe.Dacte.AppTeste diff --git a/CTe.Dacte.AppTeste/Properties/AssemblyInfo.cs b/CTe.Dacte.AppTeste/Properties/AssemblyInfo.cs deleted file mode 100644 index 149b35b1f..000000000 --- a/CTe.Dacte.AppTeste/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("CTe.Dacte.AppTeste")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("CTe.Dacte.AppTeste")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("827fa496-0f49-4e93-8ce9-2246ccd353b8")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CTe.Dacte.AppTeste/Properties/Resources.Designer.cs b/CTe.Dacte.AppTeste/Properties/Resources.Designer.cs index 788465a2f..c8cd32c2f 100644 --- a/CTe.Dacte.AppTeste/Properties/Resources.Designer.cs +++ b/CTe.Dacte.AppTeste/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// O código foi gerado por uma ferramenta. +// Versão de Tempo de Execução:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// As alterações ao arquivo poderão causar comportamento incorreto e serão perdidas se +// o código for gerado novamente. // //------------------------------------------------------------------------------ @@ -13,13 +13,13 @@ namespace CTe.Dacte.AppTeste.Properties { /// - /// A strongly-typed resource class, for looking up localized strings, etc. + /// Uma classe de recurso de tipo de alta segurança, para pesquisar cadeias de caracteres localizadas etc. /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + // Essa classe foi gerada automaticamente pela classe StronglyTypedResourceBuilder + // através de uma ferramenta como ResGen ou Visual Studio. + // Para adicionar ou remover um associado, edite o arquivo .ResX e execute ResGen novamente + // com a opção /str, ou recrie o projeto do VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -33,7 +33,7 @@ internal Resources() { } /// - /// Returns the cached ResourceManager instance used by this class. + /// Retorna a instância de ResourceManager armazenada em cache usada por essa classe. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ internal Resources() { } /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. + /// Substitui a propriedade CurrentUICulture do thread atual para todas as + /// pesquisas de recursos que usam essa classe de recurso de tipo de alta segurança. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { diff --git a/CTe.Dacte.AppTeste/Properties/Settings.Designer.cs b/CTe.Dacte.AppTeste/Properties/Settings.Designer.cs index 8c4cd6a36..6a0843bcc 100644 --- a/CTe.Dacte.AppTeste/Properties/Settings.Designer.cs +++ b/CTe.Dacte.AppTeste/Properties/Settings.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// O código foi gerado por uma ferramenta. +// Versão de Tempo de Execução:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// As alterações ao arquivo poderão causar comportamento incorreto e serão perdidas se +// o código for gerado novamente. // //------------------------------------------------------------------------------ @@ -12,7 +12,7 @@ namespace CTe.Dacte.AppTeste.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.3.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/CTe.Dacte.Base/CTe.Dacte.Base.csproj b/CTe.Dacte.Base/CTe.Dacte.Base.csproj index 1482c6b40..6e7f021d8 100644 --- a/CTe.Dacte.Base/CTe.Dacte.Base.csproj +++ b/CTe.Dacte.Base/CTe.Dacte.Base.csproj @@ -1,49 +1,28 @@ - - - + + - Debug - AnyCPU - {E46ECA77-8732-4D99-9460-FA5E2CD90266} - Library - Properties - CTe.Dacte.Base - CTe.Dacte.Base - v4.5 - 512 - + net462;netstandard2.0;net6.0 + - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + 6.0.0 + + + + + + + + + + + Always + + + Always + + + + diff --git a/CTe.Dacte.Fast/Resources/CTeEvento.frx b/CTe.Dacte.Base/CTe/CTeEvento.frx similarity index 81% rename from CTe.Dacte.Fast/Resources/CTeEvento.frx rename to CTe.Dacte.Base/CTe/CTeEvento.frx index 5ba6b41ff..12f24392b 100644 --- a/CTe.Dacte.Fast/Resources/CTeEvento.frx +++ b/CTe.Dacte.Base/CTe/CTeEvento.frx @@ -1,5 +1,5 @@  - + using System; using System.Collections; using System.Collections.Generic; @@ -80,11 +80,11 @@ namespace FastReport private void ReportTitle1_BeforePrint(object sender, EventArgs e) { - Text1.Text = ((TipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == TipoEvento.Cancelamento) ? "CANCELAMENTO" : "CARTA DE CORREÇÃO ELETRÔNICA"; - Text2.Text = ((TipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == TipoEvento.Cancelamento) ? + Text1.Text = ((CTeTipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == CTeTipoEvento.Cancelamento) ? "CANCELAMENTO" : "CARTA DE CORREÇÃO ELETRÔNICA"; + Text2.Text = ((CTeTipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == CTeTipoEvento.Cancelamento) ? "Não possui valor fiscal, simples representação do cancelamento indicado abaixo." : "Não possui valor fiscal, simples representação da CC-e indicada abaixo."; - Text3.Text = ((TipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == TipoEvento.Cancelamento) ? + Text3.Text = ((CTeTipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == CTeTipoEvento.Cancelamento) ? "CONSULTE A AUTENTICIDADE DO CANCELAMENTO NO SITE DA SEFAZ AUTORIZADORA." : "CONSULTE A AUTENTICIDADE DA CARTA DE CORREÇÃO ELETRÔNICA NO SITE DA SEFAZ AUTORIZADORA"; @@ -149,7 +149,7 @@ namespace FastReport Text36.Text = FormatarCampo(cnpjDestinatario,'d'); Text40.Text = "[cteProc.CTe.infCte.dest.enderDest.xLgr], [cteProc.CTe.infCte.dest.enderDest.nro] [cteProc.CTe.infCte.dest.enderDest.xCpl]"; Text41.Text = "[cteProc.CTe.infCte.dest.enderDest.xBairro]"; - Text42.Text = "[FormatarCampo([cteProc.CTe.infCte.dest.enderDest.CEP],'c')]"; + Text42.Text = FormatarCampo(((Int64)Report.GetColumnValue("cteProc.CTe.infCte.dest.enderDest.CEP")),'c'); Text46.Text = "[cteProc.CTe.infCte.dest.enderDest.xMun] - [cteProc.CTe.infCte.dest.enderDest.ProxyUF] - [cteProc.CTe.infCte.dest.enderDest.cMun]"; Text47.Text = FormatarCampo(((String)Report.GetColumnValue("cteProc.CTe.infCte.dest.fone")) ,'f'); Text48.Text = "[cteProc.CTe.infCte.dest.IE]"; @@ -163,7 +163,7 @@ namespace FastReport Text36.Text = FormatarCampo(cnpjTomador,'d'); Text40.Text = "[cteProc.CTe.infCte.ide.toma4.enderToma.xLgr], [cteProc.CTe.infCte.ide.toma4.enderToma.nro] [cteProc.CTe.infCte.ide.toma4.enderToma.xCpl]"; Text41.Text = "[cteProc.CTe.infCte.ide.toma4.enderToma.xBairro]"; - Text42.Text = "[FormatarCampo([cteProc.CTe.infCte.ide.toma4.enderToma.CEP],'c')]"; + Text42.Text = FormatarCampo(((Int64)Report.GetColumnValue("cteProc.CTe.infCte.ide.toma4.enderToma.CEP")),'c'); Text46.Text = "[cteProc.CTe.infCte.ide.toma4.enderToma.xMun] - [cteProc.CTe.infCte.ide.toma4.enderToma.ProxyUF] - [cteProc.CTe.infCte.ide.toma4.enderToma.cMun]"; Text47.Text = FormatarCampo(((String)Report.GetColumnValue("cteProc.CTe.infCte.ide.toma4.fone")) ,'f'); Text48.Text = "[cteProc.CTe.infCte.ide.toma4.IE]"; @@ -173,17 +173,33 @@ namespace FastReport Text49.Text = Text1.Text; Text51.Text = Convert.ToInt32((Estado)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.cOrgao")).ToString(); Text67.Text = ((TipoAmbiente)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpAmb") == TipoAmbiente.Homologacao) ? "HOMOLOGAÇÃO - SEM VALOR FISCAL" : "PRODUÇÃO - COM VALOR FISCAL"; - Text64.Text = ((String)Report.GetColumnValue("procEventoCTe.retEvento.infEvento.nProt")) + " " + FormatDateTime((Nullable<DateTime>)Report.GetColumnValue("procEventoCTe.retEvento.infEvento.dhRegEvento") ?? DateTime.MinValue, @"dd/MM/yyyy HH:mm:ss"); - Text70.Text = Convert.ToInt32((Estado)Report.GetColumnValue("procEventoCTe.retEvento.infEvento.cOrgao")).ToString(); - Text73.Text = ((TipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == TipoEvento.Cancelamento) ? "DESCRIÇÃO" : "CONDIÇÕES DE USO"; - if ((TipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == TipoEvento.Cancelamento) + var dhRegEventoOffset = ((Nullable<DateTimeOffset>)Report.GetColumnValue("procEventoCTe.retEvento.infEvento.dhRegEvento")); + + var dhRegEvento = DateTime.MinValue; + + if (dhRegEventoOffset != null) + { + dhRegEvento = dhRegEventoOffset.Value.DateTime; + } + + + + + Text64.Text = ((String)Report.GetColumnValue("procEventoCTe.retEvento.infEvento.nProt")) + " " + FormatDateTime(dhRegEvento, @"dd/MM/yyyy HH:mm:ss"); + Text70.Text = Convert.ToInt32((CTeTipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento")).ToString(); + Text73.Text = ((CTeTipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == CTeTipoEvento.Cancelamento) ? "DESCRIÇÃO" : "CONDIÇÕES DE USO"; + + if ((CTeTipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == CTeTipoEvento.Cancelamento) Text55.Text = "[procEventoCTe.eventoCTe.infEvento.detEvento.EventoContainer.xJust]"; - else + else if ((CTeTipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == CTeTipoEvento.CartaCorrecao) Text55.Text = "[procEventoCTe.eventoCTe.infEvento.detEvento.EventoContainer.xCondUso]"; - - Child1.Visible = (TipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == TipoEvento.CartaCorrecao; - if ((TipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == TipoEvento.CartaCorrecao) + else if ((CTeTipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == CTeTipoEvento.Desacordo) + Text55.Text = "[procEventoCTe.eventoCTe.infEvento.detEvento.EventoContainer.xObs]"; + + + Child1.Visible = (CTeTipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == CTeTipoEvento.CartaCorrecao; + if ((CTeTipoEvento)Report.GetColumnValue("procEventoCTe.eventoCTe.infEvento.tpEvento") == CTeTipoEvento.CartaCorrecao) { var ds = Report.GetDataSource("procEventoCTe.eventoCTe.infEvento.detEvento.EventoContainer.infCorrecao"); ds.Init(); @@ -215,7 +231,8 @@ namespace FastReport } Text75.Text += completar(" ", 39) + txt + "\n"; } - } + } + ds.Next(); } @@ -237,84 +254,85 @@ namespace FastReport } - - - - + + + + - - + + - - + + - + - + - + - - + + - - - + + + - + - - + + - + - + - - + + - + - + - - + + - - + + - + - - + + + @@ -322,41 +340,45 @@ namespace FastReport - + - + - + - - - + + + + + + + - + - + - + - + @@ -365,42 +387,43 @@ namespace FastReport - + - + - + - - + + + - + - + @@ -409,14 +432,14 @@ namespace FastReport - + - + @@ -426,17 +449,17 @@ namespace FastReport - + - + - + @@ -445,7 +468,7 @@ namespace FastReport - + @@ -453,13 +476,13 @@ namespace FastReport - + - + @@ -468,7 +491,7 @@ namespace FastReport - + @@ -476,14 +499,14 @@ namespace FastReport - + - + @@ -492,14 +515,14 @@ namespace FastReport - + - + @@ -509,40 +532,41 @@ namespace FastReport - + - + - + - - - - + + + + - + - + - + + - + @@ -555,14 +579,15 @@ namespace FastReport - - + + + - + - + @@ -572,22 +597,22 @@ namespace FastReport - + - - + + - - + + - - + + @@ -598,19 +623,20 @@ namespace FastReport - + + - + - - + + @@ -623,16 +649,16 @@ namespace FastReport - + - - + + - - + + @@ -643,19 +669,20 @@ namespace FastReport - + + - + - - + + @@ -668,31 +695,31 @@ namespace FastReport - - - + + + - - - + + + - + - + - + @@ -702,17 +729,17 @@ namespace FastReport - + - + - - - + - + + + - + @@ -720,21 +747,21 @@ namespace FastReport - + - + - + - + - + @@ -743,16 +770,16 @@ namespace FastReport - + - + - - + + @@ -762,12 +789,12 @@ namespace FastReport - + - + - + @@ -783,120 +810,123 @@ namespace FastReport - + - + - - + + - + - + - + + - - - + + + - + - + - + - + - - + + + - - - + + + - + - + - - - + + + - + - + - + - + - - + + + - + - - - + + + - - + + - + - + - - - + + + - + @@ -907,78 +937,77 @@ namespace FastReport - - - + + + - + - + - + - + - - + + - - - + + + - + - + - + - - - + + + - + - + - - - - + + - - + + + - - - + + + @@ -1128,7 +1157,7 @@ namespace FastReport - + @@ -1142,14 +1171,14 @@ namespace FastReport - + - + @@ -1161,7 +1190,7 @@ namespace FastReport - + diff --git a/CTe.Dacte.Base/CTe/CTeRetrato.frx b/CTe.Dacte.Base/CTe/CTeRetrato.frx new file mode 100644 index 000000000..4b032e12f --- /dev/null +++ b/CTe.Dacte.Base/CTe/CTeRetrato.frx @@ -0,0 +1,1597 @@ + + + using System; +using System.Collections; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text.RegularExpressions; +using System.Windows.Forms; + +using FastReport; +using FastReport.Data; +using FastReport.Dialog; +using FastReport.Barcode; +using FastReport.Table; +using FastReport.Utils; + +using CTe.Classes.Informacoes; +using CTe.Classes.Informacoes.Tipos; +using CTe.Classes.Informacoes.Impostos.Tributacao; +using CTe.Classes.Informacoes.Impostos.ICMS; +using CTe.Classes.Informacoes.Impostos.ICMS.Tipos; +using CTe.Classes.Informacoes.Identificacao; + +using CTe.Classes.Informacoes.infCTeNormal.infModals; +using CTe.Classes.Informacoes.infCTeNormal.infModals.aereos; + +using DFe.Classes.Flags; + +namespace FastReport +{ + public class ReportScript + { + private string FormatarCampo(long valor, char format) + { + string _valor = valor.ToString(); + if (format == 'c' && valor > 0) + _valor = valor.ToString("00000000"); + else if (format == 'c') + _valor = ""; + + return this.FormatarCampo(_valor, format); + } + + private string FormatarCampo(string valor, char format) + { + switch (format) + { + case 'c': //CEP + if (valor.Length == 8) + valor = valor.Substring(0,2) + "." + valor.Substring(2,3) + "-" + valor.Substring(5,3); + break; + case 'f': //Telefone /celular + if (valor.Length == 10) + valor = "(" +valor.Substring(0,2) + ") " + valor.Substring(2,4) + "-" + valor.Substring(6,4); + else if (valor.Length == 11) + valor = "(" +valor.Substring(0,2) + ") " + valor.Substring(2,5) + "-" + valor.Substring(7,4); + break; + case 'd': //cpf / cnpj + if (valor.Length == 11) + valor = valor.Substring(0,3)+"."+valor.Substring(3,3)+"."+valor.Substring(6,3)+"-"+valor.Substring(9,2); + else if (valor.Length == 14) + valor = valor.Substring(0,2)+"."+valor.Substring(2,3)+"."+valor.Substring(5,3)+"/"+valor.Substring(8,4)+"-"+valor.Substring(12,2); + break; + case 'p': + if (valor.Length == 7) + valor = valor.Substring(0,3)+"-"+valor.Substring(3,4); + break; + } + return valor; + } + + private string FormatarChave(string chave) + { + string retorno = string.Empty; + chave = Regex.Replace(chave, @"[^\d]", string.Empty); //Alterado para regex para poder usar em mais casos + //chave = chave.Substring(3); + for (int i = 0; i < chave.Length; i++) + { + retorno += chave[i]; + if ((i+1) % 4 == 0) + retorno += " "; + } + return retorno; + } + + private void _StartReport(object sender, EventArgs e) + { + var _tpCTe = (tpCTe)Report.GetColumnValue("cteProc.CTe.infCte.ide.tpCTe"); + var _modal = (modal)Report.GetColumnValue("cteProc.CTe.infCte.ide.modal"); + var qrCode = ((infCTeSupl)Report.GetColumnValue("cteProc.CTe.infCTeSupl")); + + Barcode1.Visible = qrCode != null; + + dataBandDadosCarga.Visible = _tpCTe == tpCTe.Normal; + dataBandValor.Visible = true; + dataBandImpostos.Visible = true; + dataBandDocumentosOriginarios.Visible = _tpCTe == tpCTe.Normal; + dataBandCTeComplementoAnulacao.Visible = _tpCTe == tpCTe.Complemento || _tpCTe == tpCTe.Anulacao; + dataBandObservacao.Visible = true; + dataBandRodoviario.Visible = _tpCTe == tpCTe.Normal && _modal == modal.rodoviario; + dataBandAereo.Visible = _tpCTe == tpCTe.Normal && _modal == modal.aereo; + childDatabandFooter.Visible = !string.IsNullOrEmpty((String)Report.GetParameterValue("Desenvolvedor")); + + dataProdutosPerigososHeader.Visible = false; + dataProdutosPerigosos.Visible = false; + + var veiculosNovos = Report.GetDataSource("cteProc.CTe.infCte.infCTeNorm.veicNovos"); + veiculosNovos.Init(); + CabecalhoVeiculoNovo.Visible = veiculosNovos.HasMoreRows; + DadosVeiculosNovos.Visible = veiculosNovos.HasMoreRows; + } + + private string GetModalName(modal procModal) + { + string name = "Rodoviário"; + + switch (procModal) + { + case modal.aereo: + name = "Aéreo"; + break; + case modal.aquaviario: + name = "Aquaviário"; + break; + case modal.ferroviario: + name = "Ferroviário"; + break; + case modal.dutoviario: + name = "Dutoviário"; + break; + case modal.multimodal: + name = "Multimodal"; + break; + } + + return name.ToUpper(); + } + + private void PageHeader1_BeforePrint(object sender, EventArgs e) + { + #region Definindo o nome do Modal + var _modal = (modal)Report.GetColumnValue("cteProc.CTe.infCte.ide.modal"); + var nomeModal = GetModalName(_modal); + if (!Text24.Text.Contains(nomeModal)) { + Text24.Text = Text24.Text + nomeModal; + } + #endregion + + #region Banda inicial sempre deve aparecer! + switch(Convert.ToInt32((tpCTe)Report.GetColumnValue("cteProc.CTe.infCte.ide.tpCTe"))) + { + case 0: Text41.Text = "NORMAL"; break; + case 1: Text41.Text = "COMPLEMENTO"; break; + case 2: Text41.Text = "ANULAÇÃO"; break; + case 3: Text41.Text = "SUBSTITUTO"; break; + } + + switch(Convert.ToInt32((tpCTe)Report.GetColumnValue("cteProc.CTe.infCte.ide.tpServ"))) + { + case 0: Text42.Text = "NORMAL"; break; + case 1: Text42.Text = "SUBCONTRATAÇÃO"; break; + case 2: Text42.Text = "REDESPACHO"; break; + case 3: Text42.Text = "REDESPACHO INTERMEDIÁRIO"; break; + case 4: Text42.Text = "SERV. VINC. MULTIMODAL"; break; + case 6: Text42.Text = "TRANSPORTE DE PESSOAS"; break; + case 7: Text42.Text = "TRANSPORTE DE VALORES"; break; + case 8: Text42.Text = "EXCESSO DE BAGAGEM"; break; + } + + string cnpjRemetente = ((String)Report.GetColumnValue("cteProc.CTe.infCte.rem.CNPJ")); + if (string.IsNullOrEmpty(cnpjRemetente)) + cnpjRemetente = ((String)Report.GetColumnValue("cteProc.CTe.infCte.rem.CPF")); + Text62.Text = FormatarCampo(cnpjRemetente, 'd'); + + string cnpjExpedidor = ((String)Report.GetColumnValue("cteProc.CTe.infCte.exped.CNPJ")); + if (string.IsNullOrEmpty(cnpjExpedidor)) + cnpjExpedidor = ((String)Report.GetColumnValue("cteProc.CTe.infCte.exped.CPF")); + Text94.Text = FormatarCampo(cnpjExpedidor, 'd'); + + string cnpjDestinatario = ((String)Report.GetColumnValue("cteProc.CTe.infCte.dest.CNPJ")); + if (string.IsNullOrEmpty(cnpjDestinatario)) + cnpjDestinatario = ((String)Report.GetColumnValue("cteProc.CTe.infCte.dest.CPF")); + Text78.Text = FormatarCampo(cnpjDestinatario, 'd'); + + string cnpjRecebedor = ((String)Report.GetColumnValue("cteProc.CTe.infCte.receb.CNPJ")); + if (string.IsNullOrEmpty(cnpjRecebedor)) + cnpjRecebedor = ((String)Report.GetColumnValue("cteProc.CTe.infCte.receb.CPF")); + Text109.Text = FormatarCampo(cnpjRecebedor, 'd'); + + string cnpjTomador = ((String)Report.GetColumnValue("cteProc.CTe.infCte.ide.toma4.CNPJ")); + if (string.IsNullOrEmpty(cnpjTomador)) + cnpjTomador = ((String)Report.GetColumnValue("cteProc.CTe.infCte.ide.toma4.CPF")); + + int toma = 4; + if ((tomaBase3)Report.GetColumnValue("cteProc.CTe.infCte.ide.tomaBase3") != null) + toma = Convert.ToInt32((toma)Report.GetColumnValue("cteProc.CTe.infCte.ide.tomaBase3.toma")); + else if ((toma?)Report.GetColumnValue("cteProc.CTe.infCte.ide.toma4.toma") != null) + toma = Convert.ToInt32((toma)Report.GetColumnValue("cteProc.CTe.infCte.ide.toma4.toma")); + + switch (toma) + { + case 0: //REMETENTE + Text44.Text = "REMETENTE"; + Text118.Text = "[cteProc.CTe.infCte.rem.xNome]"; + Text119.Text = "[cteProc.CTe.infCte.rem.enderReme.xMun] - [cteProc.CTe.infCte.rem.enderReme.ProxyUF]"; + Text120.Text = "[FormatarCampo([cteProc.CTe.infCte.rem.enderReme.CEP],'c')]"; + Text121.Text = "[cteProc.CTe.infCte.rem.enderReme.xLgr], [cteProc.CTe.infCte.rem.enderReme.nro] [cteProc.CTe.infCte.rem.enderReme.xCpl]"; + Text123.Text = "[cteProc.CTe.infCte.rem.enderReme.xPais] - [cteProc.CTe.infCte.rem.enderReme.cPais]"; + Text126.Text = FormatarCampo(cnpjRemetente,'d'); + Text127.Text = "[cteProc.CTe.infCte.rem.IE]"; + Text128.Text = "[FormatarCampo([cteProc.CTe.infCte.rem.fone],'f')]"; + break; + case 1: //Expedidor + Text44.Text = "EXPEDIDOR"; + Text118.Text = "[cteProc.CTe.infCte.exped.xNome]"; + Text119.Text = "[cteProc.CTe.infCte.exped.enderExped.xMun] - [cteProc.CTe.infCte.exped.enderExped.ProxyUF]"; + Text120.Text = "[FormatarCampo([cteProc.CTe.infCte.exped.enderExped.CEP],'c')]"; + Text121.Text = "[cteProc.CTe.infCte.exped.enderExped.xLgr], [cteProc.CTe.infCte.exped.enderExped.nro] [cteProc.CTe.infCte.exped.enderExped.xCpl]"; + Text123.Text = "[cteProc.CTe.infCte.exped.enderExped.xPais] - [cteProc.CTe.infCte.exped.enderExped.cPais]"; + Text126.Text = FormatarCampo(cnpjExpedidor,'d'); + Text127.Text = "[cteProc.CTe.infCte.exped.IE]"; + Text128.Text = "[FormatarCampo([cteProc.CTe.infCte.exped.fone],'f')]"; + break; + case 2: //Recebedor + Text44.Text = "RECEBEDOR"; + Text118.Text = "[cteProc.CTe.infCte.receb.xNome]"; + Text119.Text = "[cteProc.CTe.infCte.receb.enderReceb.xMun] - [cteProc.CTe.infCte.receb.enderReceb.ProxyUF]"; + Text120.Text = "[FormatarCampo([cteProc.CTe.infCte.receb.enderReceb.CEP],'c')]"; + Text121.Text = "[cteProc.CTe.infCte.receb.enderReceb.xLgr], [cteProc.CTe.infCte.receb.enderReceb.nro] [cteProc.CTe.infCte.receb.enderReceb.xCpl]"; + Text123.Text = "[cteProc.CTe.infCte.receb.enderReceb.xPais] - [cteProc.CTe.infCte.receb.enderReceb.cPais]"; + Text126.Text = FormatarCampo(cnpjRecebedor,'d'); + Text127.Text = "[cteProc.CTe.infCte.receb.IE]"; + Text128.Text = "[FormatarCampo([cteProc.CTe.infCte.receb.fone],'f')]"; + break; + case 3: //Destinatário + Text44.Text = "DESTINATÁRIO"; + Text118.Text = "[cteProc.CTe.infCte.dest.xNome]"; + Text119.Text = "[cteProc.CTe.infCte.dest.enderDest.xMun] - [cteProc.CTe.infCte.dest.enderDest.ProxyUF]"; + Text120.Text = "[FormatarCampo([cteProc.CTe.infCte.dest.enderDest.CEP],'c')]"; + Text121.Text = "[cteProc.CTe.infCte.dest.enderDest.xLgr], [cteProc.CTe.infCte.dest.enderDest.nro] [cteProc.CTe.infCte.dest.enderDest.xCpl]"; + Text123.Text = "[cteProc.CTe.infCte.dest.enderDest.xPais] - [cteProc.CTe.infCte.dest.enderDest.cPais]"; + Text126.Text = FormatarCampo(cnpjDestinatario,'d'); + Text127.Text = "[cteProc.CTe.infCte.dest.IE]"; + Text128.Text = "[FormatarCampo([cteProc.CTe.infCte.dest.fone],'f')]"; + break; + case 4: //Outros + Text44.Text = "OUTROS"; + Text118.Text = "[cteProc.CTe.infCte.ide.toma4.xNome]"; + Text119.Text = "[cteProc.CTe.infCte.ide.toma4.enderToma.xMun] - [cteProc.CTe.infCte.ide.toma4.enderToma.ProxyUF]"; + Text120.Text = FormatarCampo(((Int64)Report.GetColumnValue("cteProc.CTe.infCte.ide.toma4.enderToma.CEP")).ToString(), 'c'); + Text121.Text = "[cteProc.CTe.infCte.ide.toma4.enderToma.xLgr], [cteProc.CTe.infCte.ide.toma4.enderToma.nro] [cteProc.CTe.infCte.ide.toma4.enderToma.xCpl]"; + Text123.Text = "[cteProc.CTe.infCte.ide.toma4.enderToma.xPais] - [cteProc.CTe.infCte.ide.toma4.enderToma.cPais]"; + Text126.Text = FormatarCampo(cnpjTomador,'d'); + Text127.Text = "[cteProc.CTe.infCte.ide.toma4.IE]"; + Text128.Text = FormatarCampo((String)Report.GetColumnValue("cteProc.CTe.infCte.ide.toma4.fone"), 'f'); + + break; + } + + if ((Nullable<forPag>)Report.GetColumnValue("cteProc.CTe.infCte.ide.forPag") != null) + { + switch(Convert.ToInt32((Nullable<forPag>)Report.GetColumnValue("cteProc.CTe.infCte.ide.forPag"))) + { + case 0: Text43.Text = "PAGO"; break; + case 1: Text43.Text = "A PAGAR"; break; + case 2: Text43.Text = "OUTROS"; break; + } + } + + if (string.IsNullOrEmpty((String)Report.GetColumnValue("cteProc.protCTe.infProt.nProt"))) + Text26.Text = "CTe sem autorização de uso da SEFAZ"; + #endregion + + #region Dados do CTe complemento ou anulação + if (dataBandCTeComplementoAnulacao.Visible) + { + switch((tpCTe)Report.GetColumnValue("cteProc.CTe.infCte.ide.tpCTe")) + { + case tpCTe.Complemento: + Text211.Text = FormatarChave((String)Report.GetColumnValue("cteProc.CTe.infCte.infCteComp.chCTe")); + break; + case tpCTe.Anulacao: + Text211.Text = FormatarChave((String)Report.GetColumnValue("cteProc.CTe.infCte.infCteAnu.chCte")); + Text211.Text += " emissão: " + FormatDateTime(((DateTime)Report.GetColumnValue("cteProc.CTe.infCte.infCteAnu.dEmi")).Date, @"dd/MM/yyyy"); + break; + } + + } + #endregion + + #region Banda com os dados da carga + if (dataBandDadosCarga.Visible) + { + var seguros = Report.GetDataSource("cteProc.CTe.infCte.infCTeNorm.seg"); + seguros.Init(); + if (seguros.HasMoreRows) + { + switch(Convert.ToInt32((respSeg)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.seg.respSeg"))) + { + case 0: Text142.Text = "REMETENTE"; break; + case 1: Text142.Text = "EXPEDIDOR"; break; + case 2: Text142.Text = "RECEBEDOR"; break; + case 3: Text142.Text = "DESTINATÁRIO"; break; + case 4: Text142.Text = "EMITENTE"; break; + case 5: Text142.Text = "TOMADOR"; break; + } + } + + var qtdes = Report.GetDataSource("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ"); + qtdes.Init(); + while (qtdes.HasMoreRows) + { + switch (Convert.ToInt32((cUnid)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ.cUnid"))) + { + case 0: + Text146.Text += FormatNumber(((Decimal)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ.qCarga")), 3) + "\n"; + break; + case 1: + Text148.Text += FormatNumber(((Decimal)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ.qCarga")), 3) + "\n"; + break; + case 2: + Text150.Text += FormatNumber(((Decimal)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ.qCarga")), 3) + "\n"; + break; + case 3: + Text152.Text += FormatNumber(((Decimal)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ.qCarga")), 3) + "\n"; + break; + case 4: + Text154.Text += FormatNumber(((Decimal)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ.qCarga")), 3) + "\n"; + break; + case 5: + Text158.Text += FormatNumber(((Decimal)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ.qCarga")), 3) + "\n"; + break; + } + qtdes.Next(); + } + } + #endregion + + #region Banda de valores do CTe + if (dataBandValor.Visible) + { + bool aux = true; + var comp = Report.GetDataSource("cteProc.CTe.infCte.vPrest.Comp"); + comp.Init(); + while (comp.HasMoreRows) + { + string texto = ((String)Report.GetColumnValue("cteProc.CTe.infCte.vPrest.Comp.xNome")) + " ..... " + FormatCurrency(((Decimal)Report.GetColumnValue("cteProc.CTe.infCte.vPrest.Comp.vComp")),2); + + if (aux) + Text203.Text += texto + "\n"; + else + Text204.Text += texto + "\n"; + + aux = !aux; + comp.Next(); + } + } + #endregion + + #region Banda com os impostos + if (dataBandImpostos.Visible) + { + var icms = (ICMSBasico)Report.GetColumnValue("cteProc.CTe.infCte.imp.ICMS.TipoICMS"); + if (icms is ICMSSN) //Simples Nacional + Text188.Text = "SN - SIMPLES NACIONAL"; + else if (icms is ICMS00) + { + Text188.Text = "00 - TRIBUTAÇÃO NORMAL DO ICMS"; + + ICMS00 icms00 = icms as ICMS00; + Text194.Text = FormatCurrency(icms00.vBC ,2); + Text195.Text = FormatNumber(icms00.pICMS ,2) + "%"; + Text196.Text = FormatCurrency(icms00.vICMS ,2); + } + else if (icms is ICMS20) + { + Text188.Text = "20 - TRIBUTAÇÃO COM REDUÇÃO DE BC DO ICMS"; + + ICMS20 icms20 = icms as ICMS20; + Text194.Text = FormatCurrency(icms20.vBC ,2); + Text195.Text = FormatNumber(icms20.pICMS ,2) + "%"; + Text196.Text = FormatCurrency(icms20.vICMS ,2); + Text197.Text = FormatNumber(icms20.pRedBC ,2) + "%"; + } + else if (icms is ICMS45) + { + ICMS45 icms45 = icms as ICMS45; + if (icms45.CST == CST.ICMS40) + Text188.Text = "40 - ICMS ISENÇÃO"; + if (icms45.CST == CST.ICMS41) + Text188.Text = "41 - ICMS NÃO TRIBUTADO"; + if (icms45.CST == CST.ICMS51) + Text188.Text = "51 - ICMS DIFERIDO"; + } + else if (icms is ICMS60) + { + Text188.Text = "60 - ICMS COBRADO ANTERIORMENTE POR SUBSTITUIÇÃO TRIBUTÁRIA"; + } + else if (icms is ICMS90) + { + Text188.Text = "90 - ICMS OUTROS"; + + ICMS90 icms90 = icms as ICMS90; + Text194.Text = FormatCurrency(icms90.vBC ,2); + Text195.Text = FormatNumber(icms90.pICMS ,2) + "%"; + Text196.Text = FormatCurrency(icms90.vICMS ,2); + Text197.Text = FormatNumber(icms90.pRedBC ,2) + "%"; + } + else if (icms is ICMSOutraUF) + { + Text188.Text = "90 - ICMS Outra UF"; + + ICMSOutraUF icmsOutraUf = icms as ICMSOutraUF; + Text194.Text = FormatCurrency(icmsOutraUf.vBCOutraUF ,2); + Text195.Text = FormatNumber(icmsOutraUf.pICMSOutraUF ,2) + "%"; + Text196.Text = FormatCurrency(icmsOutraUf.vICMSOutraUF ,2); + Text197.Text = icmsOutraUf.pRedBCOutraUFSpecified ? FormatNumber(icmsOutraUf.pRedBCOutraUF ,2) + "%" : ""; + } + } + #endregion + + #region Banda com os documentos originários + if (dataBandDocumentosOriginarios.Visible) + { + Text193.Text = string.Empty; //Coluna 1 dos documentos + Text205.Text = string.Empty; //Coluna 2 dos documentos + + bool aux = true; + var _infDocNFe = Report.GetDataSource("cteProc.CTe.infCte.infCTeNorm.infDoc.infNFe"); + _infDocNFe.Init(); + while (_infDocNFe.HasMoreRows) + { + string texto = "NFe " + ((String)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infNFe.chave")).Substring(25,9) + " " + FormatarChave((String)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infNFe.chave")); + if (aux) + Text193.Text += texto + "\n"; + else + Text205.Text += texto + "\n"; + + aux = !aux; + _infDocNFe.Next(); + } + + var _infDocNF = Report.GetDataSource("cteProc.CTe.infCte.infCTeNorm.infDoc.infNF"); + _infDocNF.Init(); + while (_infDocNF.HasMoreRows) + { + string texto = "NF " + FormatarCampo((String)Report.GetColumnValue("cteProc.CTe.infCte.rem.CNPJ"),'d') + " " + + ((String)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infNF.nDoc")) + "-" + + ((String)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infNF.serie")); + + if (aux) + Text193.Text += texto + "\n"; + else + Text205.Text += texto + "\n"; + + aux = !aux; + _infDocNF.Next(); + } + + var _infDocOutros = Report.GetDataSource("cteProc.CTe.infCte.infCTeNorm.infDoc.infOutros"); + _infDocOutros.Init(); + while (_infDocOutros.HasMoreRows) + { + string texto = ""; + switch (Convert.ToInt32((tpDoc)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infOutros.tpDoc"))) + { + case 0: texto = "DECLARAÇÃO Declaração Doc.: " + (String)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infOutros.nDoc"); break; + case 10: texto = "DUTOVIÁRIO Dutoviário Doc.: " + (String)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infOutros.nDoc"); break; + default: texto = "OUTROS Doc.: " + ((String)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infOutros.nDoc")) + " Descr.: " + (String)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infOutros.descOutros"); break; + } + + if (aux) + Text193.Text += texto + "\n"; + else + Text205.Text += texto + "\n"; + + aux = !aux; + _infDocOutros.Next(); + } + + if (!aux){ + Text205.Text += "\n"; + } + + } + #endregion + + #region Banda das observações do contribuite + if (dataBandObservacao.Visible) + { + if ((Boolean)Report.GetParameterValue("QuebrarLinhasObservacao")) + Text168.Text = ((String)Report.GetColumnValue("cteProc.CTe.infCte.compl.xObs")).Replace(";", Environment.NewLine);; + + Text185.Visible = ((Boolean)Report.GetParameterValue("DocumentoCancelado")); + Text186.Visible = Convert.ToInt32((TipoAmbiente)Report.GetColumnValue("cteProc.CTe.infCte.ide.tpAmb")) == 2; + } + #endregion + + #region Dados específicos do modal rodivário + if (dataBandRodoviario.Visible) + { + Text183.Text = "NÃO"; + if ((Boolean)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infModal.ContainerModal.lotaSpecified")) + if (Convert.ToInt32((Nullable<lota>)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infModal.ContainerModal.lota")) == 1) + Text183.Text = "SIM"; + } + #endregion + + #region Observações do fisco, sempre deve aparecer + //#592 + Text173.Text = string.Empty; + Text207.Text = string.Empty; + var dsObsCont = Report.GetDataSource("cteProc.CTe.infCte.compl.ObsCont"); + dsObsCont.Init(); + while (dsObsCont.HasMoreRows) + { + Text173.Text += ((String)Report.GetColumnValue("cteProc.CTe.infCte.compl.ObsCont.xCampo")) + Environment.NewLine; + string texto = ((String)Report.GetColumnValue("cteProc.CTe.infCte.compl.ObsCont.xTexto")); + while (texto.Length > 70) + { + Text173.Text += Environment.NewLine; + Text207.Text += texto.Substring(0,70) + Environment.NewLine; + texto = texto.Substring(70); + } + Text207.Text += texto + Environment.NewLine; + dsObsCont.Next(); + } + + //#592 + Text208.Text = string.Empty; + Text209.Text = string.Empty; + var dsObsFisco = Report.GetDataSource("cteProc.CTe.infCte.compl.ObsFisco"); + dsObsFisco.Init(); + while (dsObsFisco.HasMoreRows) + { + Text208.Text += ((String)Report.GetColumnValue("cteProc.CTe.infCte.compl.ObsFisco.xCampo")); + string texto = ((String)Report.GetColumnValue("cteProc.CTe.infCte.compl.ObsFisco.xTexto")); + while (texto.Length > 45) + { + Text208.Text += Environment.NewLine; + Text209.Text += texto.Substring(0,45) + Environment.NewLine; + texto = texto.Substring(45); + } + Text209.Text += texto + Environment.NewLine; + + dsObsFisco.Next(); + } + #endregion + + } + + private void dataBandRodoviario_BeforePrint(object sender, EventArgs e) + { + if (!dataBandRodoviario.Visible) + return; + + var _rodo = (rodo)(ContainerModal)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infModal.ContainerModal"); + + Text181.Text = _rodo.RNTRC; + Text182.Text = _rodo.CIOT; + Text184.Text = _rodo.dPrev.HasValue ? _rodo.dPrev.Value.ToString("dd/MM/yyyy HH:mm") : string.Empty; + } + + private void dataBandAereo_BeforePrint(object sender, EventArgs e) + { + if (!dataBandAereo.Visible) + return; + + var _aereo = (aereo)(ContainerModal)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infModal.ContainerModal"); + + Text230.Text = _aereo.nMinu; + Text240.Text = _aereo.nOCA; + Text233.Text = _aereo.dPrevAereo.ToString("dd/MM/yyyy HH:mm"); + Text231.Text = _aereo.natCarga.xDime; + Text242.Text = string.Join(",", _aereo.natCarga.cInfManu); + + Text247.Text = _aereo.tarifa.CL.ToString(); + Text248.Text = _aereo.tarifa.cTar; + Text249.Text = _aereo.tarifa.vTar.ToString("C2"); + + dataProdutosPerigososHeader.Visible = _aereo.peri != null && _aereo.peri.Count > 0; + dataProdutosPerigosos.Visible = _aereo.peri != null && _aereo.peri.Count > 0; + } + + private void dataProdutosPerigosos_BeforePrint(object sender, EventArgs e) + { + if (!dataProdutosPerigosos.Visible) + return; + + var _peri = (aereoPeri)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infModal.ContainerModal.peri"); + + if (_peri == null) + return; + + Text256.Text = _peri.nONU; + Text257.Text = _peri.qTotEmb; + Text258.Text = _peri.infTotAP.qTotProd.ToString("N4"); + Text259.Text = _peri.infTotAP.uniAP.ToString(); + } + + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CTe.Dacte.Base/ConfiguracaoDacte.cs b/CTe.Dacte.Base/ConfiguracaoDacte.cs index 8e2a76698..008f7817b 100644 --- a/CTe.Dacte.Base/ConfiguracaoDacte.cs +++ b/CTe.Dacte.Base/ConfiguracaoDacte.cs @@ -42,6 +42,7 @@ public ConfiguracaoDacte() { this.Logomarca = null; this.DocumentoCancelado = false; + this.QuebrarLinhasObservacao = false; } /// @@ -59,6 +60,11 @@ public ConfiguracaoDacte() /// public string Desenvolvedor { get; set; } + /// + /// Substitui ; (ponto e virgula) por quebra de linha no DACTe + /// + public bool QuebrarLinhasObservacao { get; set; } + /// /// Retorna um objeto do tipo Image a partir da logo armazenada na propriedade Logomarca /// diff --git a/CTe.Dacte.Base/Properties/AssemblyInfo.cs b/CTe.Dacte.Base/Properties/AssemblyInfo.cs deleted file mode 100644 index 601f7217a..000000000 --- a/CTe.Dacte.Base/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("CTe.Dacte.Base")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("CTe.Dacte.Base")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("e46eca77-8732-4d99-9460-fa5e2cd90266")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CTe.Dacte.Fast/CTe.Dacte.Fast.csproj b/CTe.Dacte.Fast/CTe.Dacte.Fast.csproj index 2a01c192a..b8e4ba1a4 100644 --- a/CTe.Dacte.Fast/CTe.Dacte.Fast.csproj +++ b/CTe.Dacte.Fast/CTe.Dacte.Fast.csproj @@ -1,93 +1,20 @@ - - - - - Debug - AnyCPU - {1D58CBBD-56A5-4A10-8DAB-F795D35150EE} - Library - Properties - CTe.Dacte.Fast - CTe.Dacte.Fast - v4.5 - 512 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - False - ..\MDFe.Damdfe.Fast\Dlls\FastReport.dll - - - False - ..\MDFe.Damdfe.Fast\Dlls\FastReport.Bars.dll - - - False - ..\MDFe.Damdfe.Fast\Dlls\FastReport.Editor.dll - - - - - - - - - - - - - - - - - - True - True - Resources.resx - - - - - - - - - - {c86e3921-f0b8-4bfe-9ef1-0e9084326b13} - CTe.Classes - - - {e46eca77-8732-4d99-9460-fa5e2cd90266} - CTe.Dacte.Base - - - - - ResXFileCodeGenerator - Resources.Designer.cs - - - - - - - - \ No newline at end of file + + + + net462 + + + + + + + + + + + + + + + + diff --git a/CTe.Dacte.Fast/DacteFrCte.cs b/CTe.Dacte.Fast/DacteFrCte.cs index c4b9b3ab2..1176e9787 100644 --- a/CTe.Dacte.Fast/DacteFrCte.cs +++ b/CTe.Dacte.Fast/DacteFrCte.cs @@ -31,23 +31,44 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using System.IO; +using CTe.Classes; +using CTe.Dacte.Base; using FastReport; using FastReport.Export.Pdf; -using CTe.Dacte.Base; -using CTe.Classes; +using System; +using System.IO; +using DFe.Utils; namespace CTe.Dacte.Fast { public class DacteFrCte { - protected Report Relatorio; + public Report Relatorio; public DacteFrCte() { Relatorio = new Report(); } + public DacteFrCte(cteProc proc, ConfiguracaoDacte config, string arquivoRelatorio = "") + { + Relatorio = new Report(); + RegisterData(proc); + + if (string.IsNullOrWhiteSpace(arquivoRelatorio)) + { + const string caminho = @"CTe\CTeRetrato.frx"; + var frx = FrxFileHelper.TryGetFrxFile(caminho); + Relatorio.Load(new MemoryStream(frx)); + } + else + { + Relatorio.Load(arquivoRelatorio); + } + + Configurar(config); + } + public void LoadReport(string arquivoRelatorio) { Relatorio.Load(arquivoRelatorio); @@ -61,28 +82,19 @@ public void LoadReport(MemoryStream stream) public void RegisterData(cteProc proc) { Relatorio.RegisterData(new[] { proc }, "cteProc", 20); - Relatorio.GetDataSource("cteProc").Enabled = true; + Relatorio.GetDataSource("cteProc").Enabled = true; } public void Configurar(ConfiguracaoDacte config) { - Relatorio.SetParameterValue("DoocumentoCancelado", config.DocumentoCancelado); + Relatorio.SetParameterValue("DocumentoCancelado", config.DocumentoCancelado); Relatorio.SetParameterValue("Desenvolvedor", config.Desenvolvedor); + Relatorio.SetParameterValue("QuebrarLinhasObservacao", config.QuebrarLinhasObservacao); + if (Relatorio.FindObject("poEmitLogo") != null) ((PictureObject)Relatorio.FindObject("poEmitLogo")).Image = config.ObterLogo(); } - public DacteFrCte(cteProc proc, ConfiguracaoDacte config, string arquivoRelatorio = "") - { - Relatorio = new Report(); - RegisterData(proc); - if (!string.IsNullOrEmpty(arquivoRelatorio)) - Relatorio.Load(arquivoRelatorio); - else - Relatorio.Load(new MemoryStream(Properties.Resources.CTeRetrato)); - Configurar(config); - } - /// /// Abre a janela de visualização do DACTe /// @@ -115,7 +127,7 @@ public void Imprimir(bool exibirDialogo = true, string impressora = "") } /// - /// Converte o DAMDFe para PDF e salva-o no caminho/arquivo indicado + /// Converte o DACTe para PDF e salva-o no caminho/arquivo indicado /// /// Caminho/arquivo onde deve ser salvo o PDF do DACTe public void ExportarPdf(string arquivo) @@ -123,5 +135,45 @@ public void ExportarPdf(string arquivo) Relatorio.Prepare(); Relatorio.Export(new PDFExport(), arquivo); } + + /// + /// Converte o DACTe para PDF e copia para o stream + /// + /// Variável do tipo Stream para output + public void ExportarPdf(Stream outputStream) + { + Relatorio.Prepare(); + Relatorio.Export(new PDFExport(), outputStream); + outputStream.Position = 0; + } + + /// + /// Converte o DACTe para PDF e salva-o no caminho/arquivo indicado + /// + /// Caminho/arquivo onde deve ser salvo o PDF do DACTe + /// Instancia do tipo de exportacao do FastReport + public void ExportarPdf(string arquivo, FastReport.Export.ExportBase exportBase) + { + if (exportBase == null) + throw new NullReferenceException("exportBase deve ter um objeto instanciado, tente 'new PDFExport()'"); + + Relatorio.Prepare(); + Relatorio.Export(exportBase, arquivo); + } + + /// + /// Converte o DACTe para PDF e copia para o stream + /// + /// Variável do tipo Stream para output + /// Instancia do tipo de exportacao do FastReport + public void ExportarPdf(Stream outputStream, FastReport.Export.ExportBase exportBase) + { + if (exportBase == null) + throw new NullReferenceException("exportBase deve ter um objeto instanciado, tente 'new PDFExport()'"); + + Relatorio.Prepare(); + Relatorio.Export(exportBase, outputStream); + outputStream.Position = 0; + } } } \ No newline at end of file diff --git a/CTe.Dacte.Fast/DacteFrEvento.cs b/CTe.Dacte.Fast/DacteFrEvento.cs index 8a8c5dd36..8afd99eda 100644 --- a/CTe.Dacte.Fast/DacteFrEvento.cs +++ b/CTe.Dacte.Fast/DacteFrEvento.cs @@ -33,20 +33,39 @@ using System.IO; using FastReport; -using FastReport.Export.Pdf; using CTe.Classes; using CTe.Classes.Servicos.Consulta; +using System; +using DFe.Utils; +using FastReport.Export.Pdf; namespace CTe.Dacte.Fast { public class DacteFrEvento { - protected Report Relatorio; + public Report Relatorio; public DacteFrEvento() { Relatorio = new Report(); } + public DacteFrEvento(cteProc proc, procEventoCTe procEventoCTe, string desenvolvedor = "", string arquivoRelatorio = "") + { + Relatorio = new Report(); + + if (string.IsNullOrWhiteSpace(arquivoRelatorio)) + { + const string caminho = @"CTe\CTeEvento.frx"; + var frx = FrxFileHelper.TryGetFrxFile(caminho); + Relatorio.Load(new MemoryStream(frx)); + } + else + { + Relatorio.Load(arquivoRelatorio); + } + + Configurar(desenvolvedor: desenvolvedor); + } public void LoadReport(string arquivoRelatorio) { @@ -72,17 +91,6 @@ public void Configurar(string desenvolvedor = "") Relatorio.SetParameterValue("Desenvolvedor", desenvolvedor); } - public DacteFrEvento(cteProc proc, procEventoCTe procEventoCTe, string desenvolvedor = "", string arquivoRelatorio = "") - { - Relatorio = new Report(); - RegisterData(proc, procEventoCTe); - if (!string.IsNullOrEmpty(arquivoRelatorio)) - Relatorio.Load(arquivoRelatorio); - else - Relatorio.Load(new MemoryStream(Properties.Resources.CTeEvento)); - Configurar(desenvolvedor: desenvolvedor); - } - /// /// Abre a janela de visualização do DAMDFe @@ -124,5 +132,45 @@ public void ExportarPdf(string arquivo) Relatorio.Prepare(); Relatorio.Export(new PDFExport(), arquivo); } + + /// + /// Converte o DAMDFe para PDF e copia para o stream + /// + /// Caminho/arquivo onde deve ser salvo o PDF do DAMDFe + public void ExportarPdf(Stream outputStream) + { + Relatorio.Prepare(); + Relatorio.Export(new PDFExport(), outputStream); + outputStream.Position = 0; + } + + /// + /// Converte o DAMDFe para PDF e salva-o no caminho/arquivo indicado + /// + /// Caminho/arquivo onde deve ser salvo o PDF do DAMDFe + /// Instancia do tipo de exportacao do FastReport + public void ExportarPdf(string arquivo, FastReport.Export.ExportBase exportBase) + { + if (exportBase == null) + throw new NullReferenceException("exportBase deve ter um objeto instanciado, tente 'new PDFExport()'"); + + Relatorio.Prepare(); + Relatorio.Export(exportBase, arquivo); + } + + /// + /// Converte o DAMDFe para PDF e copia para o stream + /// + /// Caminho/arquivo onde deve ser salvo o PDF do DAMDFe + /// Instancia do tipo de exportacao do FastReport + public void ExportarPdf(Stream outputStream, FastReport.Export.ExportBase exportBase) + { + if (exportBase == null) + throw new NullReferenceException("exportBase deve ter um objeto instanciado, tente 'new PDFExport()'"); + + Relatorio.Prepare(); + Relatorio.Export(exportBase, outputStream); + outputStream.Position = 0; + } } } diff --git a/CTe.Dacte.Fast/Dlls/FastReport.Bars.dll b/CTe.Dacte.Fast/Dlls/FastReport.Bars.dll index 35f504f5a..f02708d20 100644 Binary files a/CTe.Dacte.Fast/Dlls/FastReport.Bars.dll and b/CTe.Dacte.Fast/Dlls/FastReport.Bars.dll differ diff --git a/CTe.Dacte.Fast/Dlls/FastReport.Editor.dll b/CTe.Dacte.Fast/Dlls/FastReport.Editor.dll index 1b77c5f95..32de88aa0 100644 Binary files a/CTe.Dacte.Fast/Dlls/FastReport.Editor.dll and b/CTe.Dacte.Fast/Dlls/FastReport.Editor.dll differ diff --git a/CTe.Dacte.Fast/Dlls/FastReport.dll b/CTe.Dacte.Fast/Dlls/FastReport.dll index a7982eb81..f20ad7ab4 100644 Binary files a/CTe.Dacte.Fast/Dlls/FastReport.dll and b/CTe.Dacte.Fast/Dlls/FastReport.dll differ diff --git a/CTe.Dacte.Fast/Properties/AssemblyInfo.cs b/CTe.Dacte.Fast/Properties/AssemblyInfo.cs deleted file mode 100644 index 20cd7019f..000000000 --- a/CTe.Dacte.Fast/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("CTe.Dacte.Fast")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("CTe.Dacte.Fast")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("1d58cbbd-56a5-4a10-8dab-f795d35150ee")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CTe.Dacte.Fast/Properties/Resources.Designer.cs b/CTe.Dacte.Fast/Properties/Resources.Designer.cs deleted file mode 100644 index b26583bc6..000000000 --- a/CTe.Dacte.Fast/Properties/Resources.Designer.cs +++ /dev/null @@ -1,83 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace CTe.Dacte.Fast.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CTe.Dacte.Fast.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] CTeEvento { - get { - object obj = ResourceManager.GetObject("CTeEvento", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] CTeRetrato { - get { - object obj = ResourceManager.GetObject("CTeRetrato", resourceCulture); - return ((byte[])(obj)); - } - } - } -} diff --git a/CTe.Dacte.Fast/Properties/Resources.resx b/CTe.Dacte.Fast/Properties/Resources.resx deleted file mode 100644 index afe79f500..000000000 --- a/CTe.Dacte.Fast/Properties/Resources.resx +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\Resources\CTeEvento.frx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ..\Resources\CTeRetrato.frx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/CTe.Dacte.Fast/Resources/CTeRetrato.frx b/CTe.Dacte.Fast/Resources/CTeRetrato.frx deleted file mode 100644 index 4b20df8e9..000000000 --- a/CTe.Dacte.Fast/Resources/CTeRetrato.frx +++ /dev/null @@ -1,1322 +0,0 @@ - - - using System; -using System.Collections; -using System.Collections.Generic; -using System.ComponentModel; -using System.Windows.Forms; -using System.Drawing; -using System.Data; -using FastReport; -using FastReport.Data; -using FastReport.Dialog; -using FastReport.Barcode; -using FastReport.Table; -using FastReport.Utils; - -using DFe.Classes.Flags; -using CTe.Classes.Informacoes; -using CTe.Classes.Informacoes.Tipos; -using CTe.Classes.Informacoes.Impostos.Tributacao; -using CTe.Classes.Informacoes.Impostos.ICMS; -using CTe.Classes.Informacoes.Impostos.ICMS.Tipos; -using CTe.Classes.Informacoes.Identificacao; - -namespace FastReport -{ - public class ReportScript - { - private string FormatarCampo(long valor, char format) - { - string _valor = valor.ToString(); - if (format == 'c' && valor > 0) - _valor = valor.ToString("00000000"); - else if (format == 'c') - _valor = ""; - - return this.FormatarCampo(_valor, format); - } - - private string FormatarCampo(string valor, char format) - { - switch (format) - { - case 'c': //CEP - if (valor.Length == 8) - valor = valor.Substring(0,2) + "." + valor.Substring(2,3) + "-" + valor.Substring(5,3); - break; - case 'f': //Telefone /celular - if (valor.Length == 10) - valor = "(" +valor.Substring(0,2) + ") " + valor.Substring(2,4) + "-" + valor.Substring(6,4); - else if (valor.Length == 11) - valor = "(" +valor.Substring(0,2) + ") " + valor.Substring(2,5) + "-" + valor.Substring(7,4); - break; - case 'd': //cpf / cnpj - if (valor.Length == 11) - valor = valor.Substring(0,3)+"."+valor.Substring(3,3)+"."+valor.Substring(6,3)+"-"+valor.Substring(9,2); - else if (valor.Length == 14) - valor = valor.Substring(0,2)+"."+valor.Substring(2,3)+"."+valor.Substring(5,3)+"/"+valor.Substring(8,4)+"-"+valor.Substring(12,2); - break; - case 'p': - if (valor.Length == 7) - valor = valor.Substring(0,3)+"-"+valor.Substring(3,4); - break; - } - return valor; - } - - private string FormatarChave(string chave) - { - string retorno = ""; - chave = chave.Substring(3); - for (int i = 0; i < chave.Length; i++) - { - retorno += chave[i]; - if ((i+1) % 4 == 0) - retorno += " "; - } - return retorno; - } - - private void PageHeader1_BeforePrint(object sender, EventArgs e) - { - switch(Convert.ToInt32((tpCTe)Report.GetColumnValue("cteProc.CTe.infCte.ide.tpCTe"))) - { - case 0: Text41.Text = "NORMAL"; break; - case 1: Text41.Text = "COMPLEMENTO"; break; - case 2: Text41.Text = "ANULAÇÃO"; break; - case 3: Text41.Text = "SUBSTITUTO"; break; - } - - switch(Convert.ToInt32((tpCTe)Report.GetColumnValue("cteProc.CTe.infCte.ide.tpServ"))) - { - case 0: Text42.Text = "NORMAL"; break; - case 1: Text42.Text = "SUBCONTRATAÇÃO"; break; - case 2: Text42.Text = "REDESPACHO"; break; - case 3: Text42.Text = "REDESPACHO INTERMEDIÁRIO"; break; - case 4: Text42.Text = "SERV. VINC. MULTIMODAL"; break; - case 6: Text42.Text = "TRANSPORTE DE PESSOAS"; break; - case 7: Text42.Text = "TRANSPORTE DE VALORES"; break; - case 8: Text42.Text = "EXCESSO DE BAGAGEM"; break; - } - - string cnpjRemetente = ((String)Report.GetColumnValue("cteProc.CTe.infCte.rem.CNPJ")); - if (string.IsNullOrEmpty(cnpjRemetente)) - cnpjRemetente = ((String)Report.GetColumnValue("cteProc.CTe.infCte.rem.CPF")); - Text62.Text = FormatarCampo(cnpjRemetente, 'd'); - - string cnpjExpedidor = ((String)Report.GetColumnValue("cteProc.CTe.infCte.exped.CNPJ")); - if (string.IsNullOrEmpty(cnpjExpedidor)) - cnpjExpedidor = ((String)Report.GetColumnValue("cteProc.CTe.infCte.exped.CPF")); - Text94.Text = FormatarCampo(cnpjExpedidor, 'd'); - - string cnpjDestinatario = ((String)Report.GetColumnValue("cteProc.CTe.infCte.dest.CNPJ")); - if (string.IsNullOrEmpty(cnpjDestinatario)) - cnpjDestinatario = ((String)Report.GetColumnValue("cteProc.CTe.infCte.dest.CPF")); - Text78.Text = FormatarCampo(cnpjDestinatario, 'd'); - - string cnpjRecebedor = ((String)Report.GetColumnValue("cteProc.CTe.infCte.receb.CNPJ")); - if (string.IsNullOrEmpty(cnpjRecebedor)) - cnpjRecebedor = ((String)Report.GetColumnValue("cteProc.CTe.infCte.receb.CPF")); - Text109.Text = FormatarCampo(cnpjRecebedor, 'd'); - - string cnpjTomador = ((String)Report.GetColumnValue("cteProc.CTe.infCte.ide.toma4.CNPJ")); - if (string.IsNullOrEmpty(cnpjTomador)) - cnpjTomador = ((String)Report.GetColumnValue("cteProc.CTe.infCte.ide.toma4.CPF")); - - int toma = 4; - if ((tomaBase3)Report.GetColumnValue("cteProc.CTe.infCte.ide.tomaBase3") != null) - toma = Convert.ToInt32((toma)Report.GetColumnValue("cteProc.CTe.infCte.ide.tomaBase3.toma")); - else if ((toma)Report.GetColumnValue("cteProc.CTe.infCte.ide.toma4.toma") != null) - toma = Convert.ToInt32((toma)Report.GetColumnValue("cteProc.CTe.infCte.ide.toma4.toma")); - - switch (toma) - { - case 0: //REMETENTE - Text44.Text = "REMETENTE"; - Text118.Text = "[cteProc.CTe.infCte.rem.xNome]"; - Text119.Text = "[cteProc.CTe.infCte.rem.enderReme.xMun] - [cteProc.CTe.infCte.rem.enderReme.ProxyUF]"; - Text120.Text = "[FormatarCampo([cteProc.CTe.infCte.rem.enderReme.CEP],'c')]"; - Text121.Text = "[cteProc.CTe.infCte.rem.enderReme.xLgr], [cteProc.CTe.infCte.rem.enderReme.nro] [cteProc.CTe.infCte.rem.enderReme.xCpl]"; - Text123.Text = "[cteProc.CTe.infCte.rem.enderReme.xPais] - [cteProc.CTe.infCte.rem.enderReme.cPais]"; - Text126.Text = FormatarCampo(cnpjRemetente,'d'); - Text127.Text = "[cteProc.CTe.infCte.rem.IE]"; - Text128.Text = "[FormatarCampo([cteProc.CTe.infCte.rem.fone],'f')]"; - break; - case 1: //Expedidor - Text44.Text = "EXPEDIDOR"; - Text118.Text = "[cteProc.CTe.infCte.exped.xNome]"; - Text119.Text = "[cteProc.CTe.infCte.exped.enderExped.xMun] - [cteProc.CTe.infCte.exped.enderExped.ProxyUF]"; - Text120.Text = "[FormatarCampo([cteProc.CTe.infCte.exped.enderExped.CEP],'c')]"; - Text121.Text = "[cteProc.CTe.infCte.exped.enderExped.xLgr], [cteProc.CTe.infCte.exped.enderExped.nro] [cteProc.CTe.infCte.exped.enderExped.xCpl]"; - Text123.Text = "[cteProc.CTe.infCte.exped.enderExped.xPais] - [cteProc.CTe.infCte.exped.enderExped.cPais]"; - Text126.Text = FormatarCampo(cnpjExpedidor,'d'); - Text127.Text = "[cteProc.CTe.infCte.exped.IE]"; - Text128.Text = "[FormatarCampo([cteProc.CTe.infCte.exped.fone],'f')]"; - break; - case 2: //Recebedor - Text44.Text = "RECEBEDOR"; - Text118.Text = "[cteProc.CTe.infCte.receb.xNome]"; - Text119.Text = "[cteProc.CTe.infCte.receb.enderReceb.xMun] - [cteProc.CTe.infCte.receb.enderReceb.ProxyUF]"; - Text120.Text = "[FormatarCampo([cteProc.CTe.infCte.receb.enderReceb.CEP],'c')]"; - Text121.Text = "[cteProc.CTe.infCte.receb.enderReceb.xLgr], [cteProc.CTe.infCte.receb.enderReceb.nro] [cteProc.CTe.infCte.receb.enderReceb.xCpl]"; - Text123.Text = "[cteProc.CTe.infCte.receb.enderReceb.xPais] - [cteProc.CTe.infCte.receb.enderReceb.cPais]"; - Text126.Text = FormatarCampo(cnpjRecebedor,'d'); - Text127.Text = "[cteProc.CTe.infCte0.receb.IE]"; - Text128.Text = "[FormatarCampo([cteProc.CTe.infCte.receb.fone],'f')]"; - break; - case 3: //Destinatário - Text44.Text = "DESTINATÁRIO"; - Text118.Text = "[cteProc.CTe.infCte.dest.xNome]"; - Text119.Text = "[cteProc.CTe.infCte.dest.enderDest.xMun] - [cteProc.CTe.infCte.dest.enderDest.ProxyUF]"; - Text120.Text = "[FormatarCampo([cteProc.CTe.infCte.dest.enderDest.CEP],'c')]"; - Text121.Text = "[cteProc.CTe.infCte.dest.enderDest.xLgr], [cteProc.CTe.infCte.dest.enderDest.nro] [cteProc.CTe.infCte.dest.enderDest.xCpl]"; - Text123.Text = "[cteProc.CTe.infCte.dest.enderDest.xPais] - [cteProc.CTe.infCte.dest.enderDest.cPais]"; - Text126.Text = FormatarCampo(cnpjDestinatario,'d'); - Text127.Text = "[cteProc.CTe.infCte.dest.IE]"; - Text128.Text = "[FormatarCampo([cteProc.CTe.infCte.dest.fone],'f')]"; - break; - case 4: //Outros - Text44.Text = "OUTROS"; - Text118.Text = "[cteProc.CTe.infCte.ide.toma4.xNome]"; - Text119.Text = "[cteProc.CTe.infCte.ide.toma4.enderToma.xMun] - [cteProc.CTe.infCte.ide.toma4.enderToma.ProxyUF]"; - Text120.Text = FormatarCampo(((Int64)Report.GetColumnValue("cteProc.CTe.infCte.ide.toma4.enderToma.CEP")).ToString(), 'c'); - Text121.Text = "[cteProc.CTe.infCte.ide.toma4.enderToma.xLgr], [cteProc.CTe.infCte.ide.toma4.enderToma.nro] [cteProc.CTe.infCte.ide.toma4.enderToma.xCpl]"; - Text123.Text = "[cteProc.CTe.infCte.ide.toma4.enderToma.xPais] - [cteProc.CTe.infCte.ide.toma4.enderToma.cPais]"; - Text126.Text = FormatarCampo(cnpjTomador,'d'); - Text127.Text = "[cteProc.CTe.infCte.ide.toma4.IE]"; - Text128.Text = FormatarCampo((String)Report.GetColumnValue("cteProc.CTe.infCte.ide.toma4.fone"), 'f'); - - break; - } - - if ((Nullable<forPag>)Report.GetColumnValue("cteProc.CTe.infCte.ide.forPag") != null) - { - switch(Convert.ToInt32((Nullable<forPag>)Report.GetColumnValue("cteProc.CTe.infCte.ide.forPag"))) - { - case 0: Text43.Text = "PAGO"; break; - case 1: Text43.Text = "A PAGAR"; break; - case 2: Text43.Text = "OUTROS"; break; - } - } - - var seguros = Report.GetDataSource("cteProc.CTe.infCte.infCTeNorm.seg"); - seguros.Init(); - if (seguros.HasMoreRows) - { - switch(Convert.ToInt32((respSeg)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.seg.respSeg"))) - { - case 0: Text142.Text = "REMETENTE"; break; - case 1: Text142.Text = "EXPEDIDOR"; break; - case 2: Text142.Text = "RECEBEDOR"; break; - case 3: Text142.Text = "DESTINATÁRIO"; break; - case 4: Text142.Text = "EMITENTE"; break; - case 5: Text142.Text = "TOMADOR"; break; - } - } - - var qtdes = Report.GetDataSource("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ"); - qtdes.Init(); - while (qtdes.HasMoreRows) - { - switch (Convert.ToInt32((cUnid)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ.cUnid"))) - { - case 0: - Text146.Text += FormatNumber(((Decimal)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ.qCarga")), 3) + "\n"; - break; - case 1: - Text148.Text += FormatNumber(((Decimal)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ.qCarga")), 3) + "\n"; - break; - case 2: - Text150.Text += FormatNumber(((Decimal)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ.qCarga")), 3) + "\n"; - break; - case 3: - Text152.Text += FormatNumber(((Decimal)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ.qCarga")), 3) + "\n"; - break; - case 4: - Text154.Text += FormatNumber(((Decimal)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ.qCarga")), 3) + "\n"; - break; - case 5: - Text158.Text += FormatNumber(((Decimal)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infCarga.infQ.qCarga")), 3) + "\n"; - break; - } - qtdes.Next(); - } - - Text183.Text = "NÃO"; - if ((Boolean)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infModal.ContainerModal.lotaSpecified")) - if (Convert.ToInt32((Nullable<lota>)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infModal.ContainerModal.lota")) == 1) - Text183.Text = "SIM"; - - Text185.Visible = ((Boolean)Report.GetParameterValue("DoocumentoCancelado")); - Text186.Visible = Convert.ToInt32((TipoAmbiente)Report.GetColumnValue("cteProc.CTe.infCte.ide.tpAmb")) == 2; - - var icms = (ICMSBasico)Report.GetColumnValue("cteProc.CTe.infCte.imp.ICMS.TipoICMS"); - if (icms is ICMSSN) //Simples Nacional - Text188.Text = "SN - SIMPLES NACIONAL"; - else if (icms is ICMS00) - { - Text188.Text = "00 - TRIBUTAÇÃO NORMAL DO ICMS"; - - ICMS00 icms00 = icms as ICMS00; - Text194.Text = FormatCurrency(icms00.vBC ,2); - Text195.Text = FormatNumber(icms00.pICMS ,2) + "%"; - Text196.Text = FormatCurrency(icms00.vICMS ,2); - } - else if (icms is ICMS20) - { - Text188.Text = "20 - TRIBUTAÇÃO COM REDUÇÃO DE BC DO ICMS"; - - ICMS20 icms20 = icms as ICMS20; - Text194.Text = FormatCurrency(icms20.vBC ,2); - Text195.Text = FormatNumber(icms20.pICMS ,2) + "%"; - Text196.Text = FormatCurrency(icms20.vICMS ,2); - Text197.Text = FormatNumber(icms20.pRedBC ,2) + "%"; - } - else if (icms is ICMS45) - { - ICMS45 icms45 = icms as ICMS45; - if (icms45.CST == CST.ICMS40) - Text188.Text = "40 - ICMS ISENÇÃO"; - if (icms45.CST == CST.ICMS41) - Text188.Text = "41 - ICMS NÃO TRIBUTADO"; - if (icms45.CST == CST.ICMS51) - Text188.Text = "51 - ICMS DIFERIDO"; - } - else if (icms is ICMS60) - { - Text188.Text = "60 - ICMS COBRADO ANTERIORMENTE POR SUBSTITUIÇÃO TRIBUTÁRIA"; - } - else if (icms is ICMS90) - { - Text188.Text = "90 - ICMS OUTROS"; - - ICMS90 icms90 = icms as ICMS90; - Text194.Text = FormatCurrency(icms90.vBC ,2); - Text195.Text = FormatNumber(icms90.pICMS ,2) + "%"; - Text196.Text = FormatCurrency(icms90.vICMS ,2); - Text197.Text = FormatNumber(icms90.pRedBC ,2) + "%"; - } - - bool aux = true; - var comp = Report.GetDataSource("cteProc.CTe.infCte.vPrest.Comp"); - comp.Init(); - while (comp.HasMoreRows) - { - string texto = ((String)Report.GetColumnValue("cteProc.CTe.infCte.vPrest.Comp.xNome")) + " ..... " + FormatCurrency(((Decimal)Report.GetColumnValue("cteProc.CTe.infCte.vPrest.Comp.vComp")),2); - - if (aux) - Text203.Text += texto + "\n"; - else - Text204.Text += texto + "\n"; - - aux = !aux; - comp.Next(); - } - - Text193.Text = ""; //Coluna 1 dos documentos - Text205.Text = ""; //Coluna 2 dos documentos - - aux = true; - - var _infDocNFe = Report.GetDataSource("cteProc.CTe.infCte.infCTeNorm.infDoc.infNFe"); - _infDocNFe.Init(); - while (_infDocNFe.HasMoreRows) - { - string texto = "NFe " + ((String)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infNFe.chave")).Substring(25,9) + " " + FormatarChave("NFe"+(String)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infNFe.chave")); - if (aux) - Text193.Text += texto + "\n"; - else - Text205.Text += texto + "\n"; - - aux = !aux; - _infDocNFe.Next(); - } - - var _infDocNF = Report.GetDataSource("cteProc.CTe.infCte.infCTeNorm.infDoc.infNF"); - _infDocNF.Init(); - while (_infDocNF.HasMoreRows) - { - string texto = "NF " + FormatarCampo((String)Report.GetColumnValue("cteProc.CTe.infCte.rem.CNPJ"),'d') + " " + ((String)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infNF.nDoc")) + "-" + ((Int16)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infNF.serie")).ToString(); - if (aux) - Text193.Text += texto + "\n"; - else - Text205.Text += texto + "\n"; - - aux = !aux; - _infDocNF.Next(); - } - - var _infDocOutros = Report.GetDataSource("cteProc.CTe.infCte.infCTeNorm.infDoc.infOutros"); - _infDocOutros.Init(); - while (_infDocOutros.HasMoreRows) - { - string texto = ""; - switch (Convert.ToInt32((tpDoc)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infOutros.tpDoc"))) - { - case 0: texto = "DECLARAÇÃO Declaração Doc.: " + (String)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infOutros.nDoc"); break; - case 10: texto = "DUTOVIÁRIO Dutoviário Doc.: " + (String)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infOutros.nDoc"); break; - default: texto = "OUTROS Doc.: " + ((String)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infOutros.nDoc")) + " Descr.: " + (String)Report.GetColumnValue("cteProc.CTe.infCte.infCTeNorm.infDoc.infOutros.descOutros"); break; - } - - if (aux) - Text193.Text += texto + "\n"; - else - Text205.Text += texto + "\n"; - - aux = !aux; - _infDocOutros.Next(); - } - - } - - } -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/CTe.Dacte.OpenFast/CTe.Dacte.OpenFast.csproj b/CTe.Dacte.OpenFast/CTe.Dacte.OpenFast.csproj new file mode 100644 index 000000000..a8094a73c --- /dev/null +++ b/CTe.Dacte.OpenFast/CTe.Dacte.OpenFast.csproj @@ -0,0 +1,18 @@ + + + net462;netstandard2.0;net6.0 + openfastreport + + + + + + + + + + + + + + diff --git a/CTe.Dacte.OpenFast/DacteFrCte.cs b/CTe.Dacte.OpenFast/DacteFrCte.cs new file mode 100644 index 000000000..bae117357 --- /dev/null +++ b/CTe.Dacte.OpenFast/DacteFrCte.cs @@ -0,0 +1,148 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using CTe.Classes; +using CTe.Dacte.Base; +using FastReport; +using FastReport.Export.PdfSimple; +using System; +using System.IO; +using DFe.Utils; + +namespace CTe.Dacte.OpenFast +{ + public class DacteFrCte + { + public Report Relatorio; + + public DacteFrCte() + { + Relatorio = new Report(); + } + + public DacteFrCte(cteProc proc, ConfiguracaoDacte config, string arquivoRelatorio = "") + { + Relatorio = new Report(); + RegisterData(proc); + + if (string.IsNullOrWhiteSpace(arquivoRelatorio)) + { + const string caminho = @"CTe\CTeRetrato.frx"; + var frx = FrxFileHelper.TryGetFrxFile(caminho); + Relatorio.Load(new MemoryStream(frx)); + } + else + { + Relatorio.Load(arquivoRelatorio); + } + + Configurar(config); + } + + public void LoadReport(string arquivoRelatorio) + { + Relatorio.Load(arquivoRelatorio); + } + + public void LoadReport(MemoryStream stream) + { + Relatorio.Load(stream); + } + + public void RegisterData(cteProc proc) + { + Relatorio.RegisterData(new[] { proc }, "cteProc", 20); + Relatorio.GetDataSource("cteProc").Enabled = true; + } + + public void Configurar(ConfiguracaoDacte config) + { + Relatorio.SetParameterValue("DocumentoCancelado", config.DocumentoCancelado); + Relatorio.SetParameterValue("Desenvolvedor", config.Desenvolvedor); + Relatorio.SetParameterValue("QuebrarLinhasObservacao", config.QuebrarLinhasObservacao); + + if (Relatorio.FindObject("poEmitLogo") != null) + ((PictureObject)Relatorio.FindObject("poEmitLogo")).SetImageData(config.Logomarca); + } + + /// + /// Converte o DACTe para PDF e salva-o no caminho/arquivo indicado + /// + /// Caminho/arquivo onde deve ser salvo o PDF do DACTe + public void ExportarPdf(string arquivo) + { + Relatorio.Prepare(); + Relatorio.Export(new PDFSimpleExport(), arquivo); + } + + /// + /// Converte o DACTe para PDF e copia para o stream + /// + /// Variável do tipo Stream para output + public void ExportarPdf(Stream outputStream) + { + Relatorio.Prepare(); + Relatorio.Export(new PDFSimpleExport(), outputStream); + outputStream.Position = 0; + } + + /// + /// Converte o DACTe para PDF e salva-o no caminho/arquivo indicado + /// + /// Caminho/arquivo onde deve ser salvo o PDF do DACTe + /// Instancia do tipo de exportacao do FastReport + public void ExportarPdf(string arquivo, FastReport.Export.ExportBase exportBase) + { + if (exportBase == null) + throw new NullReferenceException("exportBase deve ter um objeto instanciado, tente 'new PDFExport()'"); + + Relatorio.Prepare(); + Relatorio.Export(exportBase, arquivo); + } + + /// + /// Converte o DACTe para PDF e copia para o stream + /// + /// Variável do tipo Stream para output + /// Instancia do tipo de exportacao do FastReport + public void ExportarPdf(Stream outputStream, FastReport.Export.ExportBase exportBase) + { + if (exportBase == null) + throw new NullReferenceException("exportBase deve ter um objeto instanciado, tente 'new PDFExport()'"); + + Relatorio.Prepare(); + Relatorio.Export(exportBase, outputStream); + outputStream.Position = 0; + } + } +} \ No newline at end of file diff --git a/CTe.Dacte.OpenFast/DacteFrEvento.cs b/CTe.Dacte.OpenFast/DacteFrEvento.cs new file mode 100644 index 000000000..d260e321b --- /dev/null +++ b/CTe.Dacte.OpenFast/DacteFrEvento.cs @@ -0,0 +1,144 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.IO; +using CTe.Classes; +using CTe.Classes.Servicos.Consulta; +using DFe.Utils; +using FastReport; +using FastReport.Export.PdfSimple; + +namespace CTe.Dacte.OpenFast +{ + public class DacteFrEvento + { + public Report Relatorio; + + public DacteFrEvento() + { + Relatorio = new Report(); + } + public DacteFrEvento(cteProc proc, procEventoCTe procEventoCTe, string desenvolvedor = "", string arquivoRelatorio = "") + { + Relatorio = new Report(); + + if (string.IsNullOrWhiteSpace(arquivoRelatorio)) + { + const string caminho = @"CTe\CTeEvento.frx"; + var frx = FrxFileHelper.TryGetFrxFile(caminho); + Relatorio.Load(new MemoryStream(frx)); + } + else + { + Relatorio.Load(arquivoRelatorio); + } + + Configurar(desenvolvedor: desenvolvedor); + } + + public void LoadReport(string arquivoRelatorio) + { + Relatorio.Load(arquivoRelatorio); + } + + public void LoadReport(MemoryStream stream) + { + Relatorio.Load(stream); + } + + public void RegisterData(cteProc proc, procEventoCTe procEventoCTe) + { + Relatorio.RegisterData(new[] { proc }, "cteProc", 20); + Relatorio.GetDataSource("cteProc").Enabled = true; + + Relatorio.RegisterData(new[] { procEventoCTe }, "procEventoCTe", 20); + Relatorio.GetDataSource("procEventoCTe").Enabled = true; + } + + public void Configurar(string desenvolvedor = "") + { + Relatorio.SetParameterValue("Desenvolvedor", desenvolvedor); + } + + /// + /// Converte o DAMDFe para PDF e salva-o no caminho/arquivo indicado + /// + /// Caminho/arquivo onde deve ser salvo o PDF do DAMDFe + public void ExportarPdf(string arquivo) + { + Relatorio.Prepare(); + Relatorio.Export(new PDFSimpleExport(), arquivo); + } + + /// + /// Converte o DAMDFe para PDF e copia para o stream + /// + /// Caminho/arquivo onde deve ser salvo o PDF do DAMDFe + public void ExportarPdf(Stream outputStream) + { + Relatorio.Prepare(); + Relatorio.Export(new PDFSimpleExport(), outputStream); + outputStream.Position = 0; + } + + /// + /// Converte o DAMDFe para PDF e salva-o no caminho/arquivo indicado + /// + /// Caminho/arquivo onde deve ser salvo o PDF do DAMDFe + /// Instancia do tipo de exportacao do FastReport + public void ExportarPdf(string arquivo, FastReport.Export.ExportBase exportBase) + { + if (exportBase == null) + throw new NullReferenceException("exportBase deve ter um objeto instanciado, tente 'new PDFExport()'"); + + Relatorio.Prepare(); + Relatorio.Export(exportBase, arquivo); + } + + /// + /// Converte o DAMDFe para PDF e copia para o stream + /// + /// Caminho/arquivo onde deve ser salvo o PDF do DAMDFe + /// Instancia do tipo de exportacao do FastReport + public void ExportarPdf(Stream outputStream, FastReport.Export.ExportBase exportBase) + { + if (exportBase == null) + throw new NullReferenceException("exportBase deve ter um objeto instanciado, tente 'new PDFExport()'"); + + Relatorio.Prepare(); + Relatorio.Export(exportBase, outputStream); + outputStream.Position = 0; + } + } +} diff --git a/CTe.Servicos/CTe.Servicos.csproj b/CTe.Servicos/CTe.Servicos.csproj index eb95e4603..0b5f03d68 100644 --- a/CTe.Servicos/CTe.Servicos.csproj +++ b/CTe.Servicos/CTe.Servicos.csproj @@ -1,95 +1,13 @@ - - - + + - Debug - AnyCPU - {63227402-2B1E-4BC7-A6DF-362129923CF6} - Library - Properties - CTe.Servicos - CTe.Servicos - v4.5 - 512 - + net462;netstandard2.0;net6.0 + - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - {C86E3921-F0B8-4BFE-9EF1-0E9084326B13} - CTe.Classes - - - {21a894ec-b79e-4936-bff3-abead2e5c44f} - CTe.Utils - - - {9CC914F9-4C3E-43BB-A34B-A12AE4923548} - CTe.Wsdl - - - {9984EC15-18E1-4A87-B4DB-18AC913DC4E8} - DFe.Classes - - - {B4E1A7A6-5D66-4326-8A8D-39338E6FC84C} - DFe.Utils - + + - - - \ No newline at end of file + + diff --git a/CTe.Servicos/ConsultaProtocolo/ConsultaProtcoloServico.cs b/CTe.Servicos/ConsultaProtocolo/ConsultaProtcoloServico.cs index bf3a77048..04cb5abf5 100644 --- a/CTe.Servicos/ConsultaProtocolo/ConsultaProtcoloServico.cs +++ b/CTe.Servicos/ConsultaProtocolo/ConsultaProtcoloServico.cs @@ -31,25 +31,72 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.Threading.Tasks; +using CTe.Classes; using CTe.Classes.Servicos.Consulta; using CTe.Servicos.Factory; -using CTe.Utils.Extencoes; +using CTe.Utils.Extensoes; namespace CTe.Servicos.ConsultaProtocolo { public class ConsultaProtcoloServico { - public retConsSitCTe ConsultaProtocolo(string chave) + public retConsSitCTe ConsultaProtocolo(string chave, ConfiguracaoServico configuracaoServico = null) { - var consSitCTe = ClassesFactory.CriarconsSitCTe(chave); - consSitCTe.ValidarSchema(); - consSitCTe.SalvarXmlEmDisco(); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; - var webService = WsdlFactory.CriaWsdlConsultaProtocolo(); + var consSitCTe = ClassesFactory.CriarconsSitCTe(chave, configServico); + + if (configServico.IsValidaSchemas) + consSitCTe.ValidarSchema(configServico); + + consSitCTe.SalvarXmlEmDisco(configServico); + + var webService = WsdlFactory.CriaWsdlConsultaProtocolo(configServico); + var retornoXml = webService.cteConsultaCT(consSitCTe.CriaRequestWs()); + + var retorno = retConsSitCTe.LoadXml(retornoXml.OuterXml, consSitCTe); + retorno.SalvarXmlEmDisco(chave, configServico); + + return retorno; + } + + public retConsSitCTe ConsultaProtocoloV4(string chave, ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var consSitCTe = ClassesFactory.CriarconsSitCTe(chave, configServico); + + if (configServico.IsValidaSchemas) + consSitCTe.ValidarSchema(configServico); + + consSitCTe.SalvarXmlEmDisco(configServico); + + var webService = WsdlFactory.CriaWsdlConsultaProtocoloV4(configServico); var retornoXml = webService.cteConsultaCT(consSitCTe.CriaRequestWs()); var retorno = retConsSitCTe.LoadXml(retornoXml.OuterXml, consSitCTe); - retorno.SalvarXmlEmDisco(chave); + retorno.SalvarXmlEmDisco(chave, configServico); + + return retorno; + } + + public async Task ConsultaProtocoloAsync(string chave, ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var consSitCTe = ClassesFactory.CriarconsSitCTe(chave, configServico); + + if (configServico.IsValidaSchemas) + consSitCTe.ValidarSchema(configServico); + + consSitCTe.SalvarXmlEmDisco(configServico); + + var webService = WsdlFactory.CriaWsdlConsultaProtocolo(configServico); + var retornoXml = await webService.cteConsultaCTAsync(consSitCTe.CriaRequestWs()); + + var retorno = retConsSitCTe.LoadXml(retornoXml.OuterXml, consSitCTe); + retorno.SalvarXmlEmDisco(chave, configServico); return retorno; } diff --git a/CTe.Servicos/ConsultaRecibo/ConsultaReciboServico.cs b/CTe.Servicos/ConsultaRecibo/ConsultaReciboServico.cs index de061ca38..67350d156 100644 --- a/CTe.Servicos/ConsultaRecibo/ConsultaReciboServico.cs +++ b/CTe.Servicos/ConsultaRecibo/ConsultaReciboServico.cs @@ -31,9 +31,11 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.Threading.Tasks; +using CTe.Classes; using CTe.Classes.Servicos.Recepcao.Retorno; using CTe.Servicos.Factory; -using CTe.Utils.Extencoes; +using CTe.Utils.Extensoes; namespace CTe.Servicos.ConsultaRecibo { @@ -46,17 +48,42 @@ public ConsultaReciboServico(string recibo) _recibo = recibo; } - public retConsReciCTe Consultar() + public retConsReciCTe Consultar(ConfiguracaoServico configuracaoServico = null) { - var consReciCTe = ClassesFactory.CriaConsReciCTe(_recibo); - consReciCTe.ValidarSchema(); - consReciCTe.SalvarXmlEmDisco(); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; - var webService = WsdlFactory.CriaWsdlCteRetRecepcao(); + var consReciCTe = ClassesFactory.CriaConsReciCTe(_recibo, configServico); + + if (configServico.IsValidaSchemas) + consReciCTe.ValidarSchema(configServico); + + consReciCTe.SalvarXmlEmDisco(configServico); + + var webService = WsdlFactory.CriaWsdlCteRetRecepcao(configServico); var retornoXml = webService.cteRetRecepcao(consReciCTe.CriaRequestWs()); var retorno = retConsReciCTe.LoadXml(retornoXml.OuterXml, consReciCTe); - retorno.SalvarXmlEmDisco(); + retorno.SalvarXmlEmDisco(configServico); + + return retorno; + } + + public async Task ConsultarAsync(ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var consReciCTe = ClassesFactory.CriaConsReciCTe(_recibo, configServico); + + if (configServico.IsValidaSchemas) + consReciCTe.ValidarSchema(configServico); + + consReciCTe.SalvarXmlEmDisco(configServico); + + var webService = WsdlFactory.CriaWsdlCteRetRecepcao(configServico); + var retornoXml = await webService.cteRetRecepcaoAsync(consReciCTe.CriaRequestWs()); + + var retorno = retConsReciCTe.LoadXml(retornoXml.OuterXml, consReciCTe); + retorno.SalvarXmlEmDisco(configServico); return retorno; } diff --git a/CTe.Servicos/ConsultaStatus/StatusServico.cs b/CTe.Servicos/ConsultaStatus/StatusServico.cs index ab153ff2d..296f79b6b 100644 --- a/CTe.Servicos/ConsultaStatus/StatusServico.cs +++ b/CTe.Servicos/ConsultaStatus/StatusServico.cs @@ -31,25 +31,66 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.Threading.Tasks; +using CTe.Classes; using CTe.Classes.Servicos.Status; using CTe.Servicos.Factory; -using CTe.Utils.Extencoes; +using CTe.Utils.Extensoes; namespace CTe.Servicos.ConsultaStatus { public class StatusServico { - public retConsStatServCte ConsultaStatus() + public retConsStatServCte ConsultaStatus(ConfiguracaoServico configuracaoServico = null) { - var consStatServCte = ClassesFactory.CriaConsStatServCte(); - consStatServCte.ValidarSchema(); - consStatServCte.SalvarXmlEmDisco(); + var consStatServCte = ClassesFactory.CriaConsStatServCte(configuracaoServico); + + if (configuracaoServico.IsValidaSchemas) + consStatServCte.ValidarSchema(configuracaoServico); + + consStatServCte.SalvarXmlEmDisco(configuracaoServico); - var webService = WsdlFactory.CriaWsdlCteStatusServico(); + var webService = WsdlFactory.CriaWsdlCteStatusServico(configuracaoServico); var retornoXml = webService.cteStatusServicoCT(consStatServCte.CriaRequestWs()); var retorno = retConsStatServCte.LoadXml(retornoXml.OuterXml, consStatServCte); - retorno.SalvarXmlEmDisco(); + retorno.SalvarXmlEmDisco(configuracaoServico); + + return retorno; + } + + public retConsStatServCTe ConsultaStatusV4(ConfiguracaoServico configuracaoServico = null) + { + var consStatServCte = ClassesFactory.CriaConsStatServCTe(configuracaoServico); + + if (configuracaoServico.IsValidaSchemas) + consStatServCte.ValidarSchema(configuracaoServico); + + consStatServCte.SalvarXmlEmDisco(configuracaoServico); + + var webService = WsdlFactory.CriaWsdlCteStatusServico(configuracaoServico); + var retornoXml = webService.cteStatusServicoCT(consStatServCte.CriaRequestWs()); + + var retorno = retConsStatServCTe.LoadXml(retornoXml.OuterXml, consStatServCte); + retorno.SalvarXmlEmDisco(configuracaoServico); + + return retorno; + } + + public async Task ConsultaStatusAsync(ConfiguracaoServico configuracaoServico = null) + { + var consStatServCte = ClassesFactory.CriaConsStatServCte(configuracaoServico); + + if (configuracaoServico.IsValidaSchemas) + consStatServCte.ValidarSchema(configuracaoServico); + + consStatServCte.SalvarXmlEmDisco(configuracaoServico); + + var webService = WsdlFactory.CriaWsdlCteStatusServico(configuracaoServico); + var retornoXml = await webService.cteStatusServicoCTAsync(consStatServCte.CriaRequestWs()); + + var retorno = retConsStatServCte.LoadXml(retornoXml.OuterXml, consStatServCte); + retorno.SalvarXmlEmDisco(configuracaoServico); return retorno; } diff --git a/CTe.Servicos/DistribuicaoDFe/RetornoCteDistDFeInt.cs b/CTe.Servicos/DistribuicaoDFe/RetornoCteDistDFeInt.cs new file mode 100644 index 000000000..ee4cf0831 --- /dev/null +++ b/CTe.Servicos/DistribuicaoDFe/RetornoCteDistDFeInt.cs @@ -0,0 +1,54 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using CTe.Classes.Servicos.DistribuicaoDFe; + +namespace CTe.Servicos.DistribuicaoDFe +{ + public class RetornoCteDistDFeInt + { + public RetornoCteDistDFeInt(string envioStr, string retornoStr, string retornoCompletaStr, retDistDFeInt retorno) + { + EnvioStr = envioStr; + RetornoStr = retornoStr; + RetornoCompletoStr = retornoCompletaStr; + Retorno = retorno; + } + + public string EnvioStr { get; protected set; } + public string RetornoStr { get; protected set; } + public string RetornoCompletoStr { get; protected set; } + + public retDistDFeInt Retorno { get; set; } + } +} diff --git a/CTe.Servicos/DistribuicaoDFe/ServicoCTeDistribuicaoDFe.cs b/CTe.Servicos/DistribuicaoDFe/ServicoCTeDistribuicaoDFe.cs new file mode 100644 index 000000000..e068c9f3e --- /dev/null +++ b/CTe.Servicos/DistribuicaoDFe/ServicoCTeDistribuicaoDFe.cs @@ -0,0 +1,252 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + + + +using CTe.Classes; +using CTe.Classes.Servicos.DistribuicaoDFe; +using CTe.Servicos.Factory; +using CTe.Utils.DistribuicaoDFe; +using CTe.Wsdl.DistribuicaoDFe; +using DFe.Utils; +using Shared.DFe.Utils; +using System; +using System.IO; +using System.Reflection; +using System.Security.Cryptography.X509Certificates; +using System.Threading.Tasks; +using System.Xml; +using Compressao = DFe.Utils.Compressao; + + +namespace CTe.Servicos.DistribuicaoDFe +{ + public class ServicoCTeDistribuicaoDFe + { + public ServicoCTeDistribuicaoDFe() + { + + } + + private readonly ConfiguracaoServico _configuracaoServico; + private readonly X509Certificate2 _certificado; + public ServicoCTeDistribuicaoDFe(ConfiguracaoServico configuracaoServico, X509Certificate2 certificado = null) + { + _configuracaoServico = configuracaoServico; + _certificado = certificado ?? configuracaoServico.X509Certificate2; + } + + + /// + /// Serviço destinado à distribuição de informações resumidas e documentos fiscais eletrônicos de interesse de um ator, seja este pessoa física ou jurídica. + /// + /// Código da UF do Autor + /// CNPJ/CPF do interessado no DF-e + /// Último NSU recebido pelo Interessado + /// Número Sequencial Único + /// + /// Retorna um objeto da classe CTeDistDFeInteresse com os documentos de interesse do CNPJ/CPF pesquisado + public RetornoCteDistDFeInt CTeDistDFeInteresse(string ufAutor, string documento, string ultNSU = "0", string nSU = "0", ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? _configuracaoServico ?? ConfiguracaoServico.Instancia; + + distDFeInt pedDistDFeInt; + XmlDocument dadosConsulta; + var ws = InicializaCTeDistDFeInteresse(documento, ultNSU, nSU, out pedDistDFeInt, out dadosConsulta, configServico); + + XmlNode retorno = ws.Execute(dadosConsulta); + + var retornoXmlString = retorno.OuterXml; + + var retConsulta = new retDistDFeInt().CarregarDeXmlString(retornoXmlString); + + SalvarArquivoXml(DateTime.Now.ParaDataHoraString() + "-distDFeInt.xml", retornoXmlString, configServico); + + #region Obtém um retDistDFeInt de cada evento e salva em arquivo + + if (retConsulta.loteDistDFeInt != null && configServico.UnZip) + { + for (int i = 0; i < retConsulta.loteDistDFeInt.Length; i++) + { + string conteudo = Compressao.Unzip(retConsulta.loteDistDFeInt[i].XmlNfe).RemoverDeclaracaoXml(); + string chCTe = string.Empty; + + if (conteudo.StartsWith("(conteudo); + chCTe = retConteudo.protCTe.infProt.chCTe; + } + else if (conteudo.StartsWith("(conteudo); + chCTe = procEventoNFeConteudo.eventoCTe.infEvento.chCTe; + } + else if (conteudo.StartsWith("(conteudo); + chCTe = retConteudo.protCTe.infProt.chCTe; + } + else + { + + } + + string[] schema = retConsulta.loteDistDFeInt[i].schema.Split('_'); + if (chCTe == string.Empty) + chCTe = DateTime.Now.ParaDataHoraString() + "_SEMCHAVE"; + + SalvarArquivoXml(chCTe + "-" + schema[0] + ".xml", conteudo, configServico); + } + } + + #endregion + + return new RetornoCteDistDFeInt(pedDistDFeInt.ObterXmlString(), retConsulta.ObterXmlString(), retornoXmlString, retConsulta); + } + + public async Task CTeDistDFeInteresseAsync(string ufAutor, string documento, string ultNSU = "0", string nSU = "0", ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? _configuracaoServico ?? ConfiguracaoServico.Instancia; + distDFeInt pedDistDFeInt; + XmlDocument dadosConsulta; + var ws = InicializaCTeDistDFeInteresse(documento, ultNSU, nSU, out pedDistDFeInt, out dadosConsulta, configServico); + + XmlNode retorno = await ws.ExecuteAsync(dadosConsulta); + + var retornoXmlString = retorno.OuterXml; + + var retConsulta = new retDistDFeInt().CarregarDeXmlString(retornoXmlString); + + SalvarArquivoXml(DateTime.Now.ParaDataHoraString() + "-distDFeInt.xml", retornoXmlString, configServico); + + #region Obtém um retDistDFeInt de cada evento e salva em arquivo + + if (retConsulta.loteDistDFeInt != null && configServico.UnZip) + { + for (int i = 0; i < retConsulta.loteDistDFeInt.Length; i++) + { + string conteudo = Compressao.Unzip(retConsulta.loteDistDFeInt[i].XmlNfe).RemoverDeclaracaoXml(); + string chCTe = string.Empty; + + if (conteudo.StartsWith("(conteudo); + chCTe = retConteudo.protCTe.infProt.chCTe; + } + else if (conteudo.StartsWith("(conteudo); + chCTe = procEventoNFeConteudo.eventoCTe.infEvento.chCTe; + } + else if (conteudo.StartsWith("(conteudo); + chCTe = retConteudo.protCTe.infProt.chCTe; + } + + string[] schema = retConsulta.loteDistDFeInt[i].schema.Split('_'); + if (chCTe == string.Empty) + chCTe = DateTime.Now.ParaDataHoraString() + "_SEMCHAVE"; + + SalvarArquivoXml(chCTe + "-" + schema[0] + ".xml", conteudo, configServico); + } + } + + #endregion + + return new RetornoCteDistDFeInt(pedDistDFeInt.ObterXmlString(), retConsulta.ObterXmlString(), retornoXmlString, retConsulta); + } + + private CTeDistDFeInteresse InicializaCTeDistDFeInteresse(string documento, string ultNSU, string nSU, + out distDFeInt pedDistDFeInt, out XmlDocument dadosConsulta, ConfiguracaoServico configuracaoServico) + { + var versaoServico = configuracaoServico.VersaoLayout; + + #region Cria o objeto wdsl para consulta + + var ws = WsdlFactory.CriaWsdlCTeDistDFeInteresse(configuracaoServico, _certificado); + + #endregion + + #region Cria o objeto distCTeInt + + pedDistDFeInt = new distDFeInt + { + versao = "1.00", + tpAmb = configuracaoServico.tpAmb, + cUFAutor = configuracaoServico.cUF + }; + + if (documento.Length == 11) + pedDistDFeInt.CPF = documento; + if (documento.Length > 11) + pedDistDFeInt.CNPJ = documento; + + + pedDistDFeInt.distNSU = new distNSU { ultNSU = ultNSU.PadLeft(15, '0') }; + + if (!nSU.Equals("0")) + { + pedDistDFeInt.consNSU = new consNSU { NSU = nSU.PadLeft(15, '0') }; + pedDistDFeInt.distNSU = null; + } + + #endregion + + if (configuracaoServico.IsValidaSchemas) + pedDistDFeInt.ValidaSchema(configuracaoServico); + + var xmlConsulta = pedDistDFeInt.ObterXmlString(); + + dadosConsulta = new XmlDocument(); + dadosConsulta.LoadXml(xmlConsulta); + + string path = DateTime.Now.ParaDataHoraString() + "-ped-DistDFeInt.xml"; + + SalvarArquivoXml(path, xmlConsulta, configuracaoServico); + return ws; + } + + private void SalvarArquivoXml(string nomeArquivo, string xmlString, ConfiguracaoServico configuracaoServico) + { + if (!configuracaoServico.IsSalvarXml) return; + string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + + var dir = string.IsNullOrEmpty(configuracaoServico.DiretorioSalvarXml) ? path : configuracaoServico.DiretorioSalvarXml; + var stw = new StreamWriter(dir + @"\" + nomeArquivo); + stw.WriteLine(xmlString); + stw.Close(); + } + + } +} diff --git a/CTe.Servicos/Enderecos/Helpers/UrlHelper.cs b/CTe.Servicos/Enderecos/Helpers/UrlHelper.cs index 52c3d603a..827cd2a1e 100644 --- a/CTe.Servicos/Enderecos/Helpers/UrlHelper.cs +++ b/CTe.Servicos/Enderecos/Helpers/UrlHelper.cs @@ -33,6 +33,8 @@ using System; using CTe.Classes; +using CTe.Classes.Informacoes.Tipos; +using CTe.Classes.Servicos.Tipos; using DFe.Classes.Entidades; using DFe.Classes.Flags; @@ -40,28 +42,185 @@ namespace CTe.Servicos.Enderecos.Helpers { public class UrlHelper { - public static UrlCTe ObterUrlServico() + public static UrlCTe ObterUrlServico(ConfiguracaoServico configuracaoServico = null) { - var configuracaoServico = ConfiguracaoServico.Instancia; + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; - switch (configuracaoServico.tpAmb) + switch (configServico.tpAmb) { case TipoAmbiente.Homologacao: - return UrlHomologacao(); + if (configServico.TipoEmissao == tpEmis.teSVCRS) + { + return UrlHomologacaoSvrs(configServico); + } + + if (configServico.TipoEmissao == tpEmis.teSVCSP) + { + return UrlHomologacaoSvcsp(configServico); + } + + return UrlHomologacao(configServico); + case TipoAmbiente.Producao: + if (configServico.TipoEmissao == tpEmis.teSVCRS) + { + return UrlProducaoSvrs(configServico); + } + + if (configServico.TipoEmissao == tpEmis.teSVCSP) + { + return UrlProducaoSvcsp(configServico); + } + + return UrlProducao(configServico); + } + + throw new InvalidOperationException("Tipo Ambiente inválido"); + } + + public static string ObterUrlQrCode(ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + switch (configServico.tpAmb) + { + case TipoAmbiente.Homologacao: + return UrlHomologacao(configServico).QrCode; case TipoAmbiente.Producao: - return UrlProducao(); + return UrlProducao(configServico).QrCode; } throw new InvalidOperationException("Tipo Ambiente inválido"); } - private static UrlCTe UrlProducao() + private static UrlCTe UrlProducaoSvcsp(ConfiguracaoServico configuracaoServico) { - var configuracaoServico = ConfiguracaoServico.Instancia; + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoEventoV4.asmx", + CteRecepcaoSinc = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoSincV4.asmx", + CteConsulta = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeConsultaV4.asmx", + CteStatusServico = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeStatusServicoV4.asmx", + CteRecepcaoOs = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoOSV4.asmx", + CteRecepcaoGtve = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoGTVeV4.asmx", + QrCode = @"https://nfe.fazenda.sp.gov.br/CTeConsulta/qrCode" + }; + } + + return new UrlCTe + { + CteRecepcao = @"https://nfe.fazenda.sp.gov.br/cteWEB/services/cteRecepcao.asmx", + CteRetRecepcao = @"https://nfe.fazenda.sp.gov.br/cteWEB/services/CteRetRecepcao.asmx", + CteConsulta = @"https://nfe.fazenda.sp.gov.br/cteWEB/services/CteConsulta.asmx", + CteStatusServico = @"https://nfe.fazenda.sp.gov.br/cteWEB/services/CteStatusServico.asmx", + QrCode = @"http://dfe-portal.svrs.rs.gov.br/cte/QRCode", + CteRecepcaoEvento = @"https://nfe.fazenda.sp.gov.br/cteWEB/services/CteRecepcaoEvento.asmx" + }; + } + private static UrlCTe UrlHomologacaoSvcsp(ConfiguracaoServico configuracaoServico) + { + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoEventoV4.asmx", + CteRecepcaoSinc = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoSincV4.asmx", + CteConsulta = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeConsultaV4.asmx", + CteStatusServico = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeStatusServicoV4.asmx", + CteRecepcaoOs = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoOSV4.asmx", + CteRecepcaoGtve = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoGTVeV4.asmx", + QrCode = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeConsulta/qrCode" + }; + } + + return new UrlCTe + { + CteRecepcaoEvento = @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/CteRecepcaoEvento.asmx", + CteRecepcao = @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/CteRecepcao.asmx", + CteRetRecepcao = @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/CteRetRecepcao.asmx", + CteConsulta = @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/CteConsulta.asmx", + QrCode = @"https://dfe-portal.svrs.rs.gov.br/cte/qrCode", + CteStatusServico = @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/CteStatusServico.asmx" + }; + } + + private static UrlCTe UrlHomologacaoSvrs(ConfiguracaoServico configuracaoServico) + { + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://cte-homologacao.svrs.rs.gov.br/ws/CTeRecepcaoEventoV4/CTeRecepcaoEventoV4.asmx", + CteRecepcaoSinc = @"https://cte-homologacao.svrs.rs.gov.br/ws/CTeRecepcaoSincV4/CTeRecepcaoSincV4.asmx", + CteConsulta = @"https://cte-homologacao.svrs.rs.gov.br/ws/CTeConsultaV4/CTeConsultaV4.asmx", + CteStatusServico = @"https://cte-homologacao.svrs.rs.gov.br/ws/CTeStatusServicoV4/CTeStatusServicoV4.asmx", + CteRecepcaoOs = @"https://cte-homologacao.svrs.rs.gov.br/ws/CTeRecepcaoOSV4/CTeRecepcaoOSV4.asmx", + CteRecepcaoGtve = @"https://cte-homologacao.svrs.rs.gov.br/ws/CTeRecepcaoGTVeV4/CTeRecepcaoGTVeV4.asmx", + QrCode = @"https://dfe-portal.svrs.rs.gov.br/cte/qrCode" + }; + } + + return new UrlCTe + { + CteRecepcao = @"https://cte-homologacao.svrs.rs.gov.br/ws/cterecepcao/CTeRecepcao.asmx", + CteRetRecepcao = @"https://cte-homologacao.svrs.rs.gov.br/ws/cteretrecepcao/CTeRetRecepcao.asmx", + CteInutilizacao = @"https://cte-homologacao.svrs.rs.gov.br/ws/cteinutilizacao/cteinutilizacao.asmx", + CteConsulta = @"https://cte-homologacao.svrs.rs.gov.br/ws/cteconsulta/CTeConsulta.asmx", + CteStatusServico = @"https://cte-homologacao.svrs.rs.gov.br/ws/ctestatusservico/CTeStatusServico.asmx", + QrCode = @"https://dfe-portal.svrs.rs.gov.br/cte/qrCode", + CteRecepcaoEvento = @"https://cte-homologacao.svrs.rs.gov.br/ws/cterecepcaoevento/CTeRecepcaoEvento.asmx" + }; + } + + private static UrlCTe UrlProducaoSvrs(ConfiguracaoServico configuracaoServico) + { + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://cte.svrs.rs.gov.br/ws/CTeRecepcaoEventoV4/CTeRecepcaoEventoV4.asmx", + CteRecepcaoSinc = @"https://cte.svrs.rs.gov.br/ws/CTeRecepcaoSincV4/CTeRecepcaoSincV4.asmx", + CteConsulta = @"https://cte.svrs.rs.gov.br/ws/CTeConsultaV4/CTeConsultaV4.asmx", + CteStatusServico = @"https://cte.svrs.rs.gov.br/ws/CTeStatusServicoV4/CTeStatusServicoV4.asmx", + CteRecepcaoOs = @"https://cte.svrs.rs.gov.br/ws/CTeRecepcaoOSV4/CTeRecepcaoOSV4.asmx", + CteRecepcaoGtve = @"https://cte.svrs.rs.gov.br/ws/CTeRecepcaoGTVeV4/CTeRecepcaoGTVeV4.asmx", + QrCode = @"https://dfe-portal.svrs.rs.gov.br/cte/qrCode" + }; + } + + return new UrlCTe + { + CteRecepcao = @"https://cte.svrs.rs.gov.br/ws/cterecepcao/CTeRecepcao.asmx", + CteRetRecepcao = @"https://cte.svrs.rs.gov.br/ws/cteretrecepcao/CTeRetRecepcao.asmx", + CteInutilizacao = @"https://cte.svrs.rs.gov.br/ws/cteinutilizacao/cteinutilizacao.asmx", + CteConsulta = @"https://cte.svrs.rs.gov.br/ws/cteconsulta/CTeConsulta.asmx", + CteStatusServico = @"https://cte.svrs.rs.gov.br/ws/ctestatusservico/CTeStatusServico.asmx", + QrCode = @"https://dfe-portal.svrs.rs.gov.br/cte/qrCode", + CteRecepcaoEvento = @"https://cte.svrs.rs.gov.br/ws/cterecepcaoevento/CTeRecepcaoEvento.asmx" + }; + } + + private static UrlCTe UrlProducao(ConfiguracaoServico configuracaoServico) + { switch (configuracaoServico.cUF) { case Estado.MT: + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://cte.sefaz.mt.gov.br/ctews2/services/CTeRecepcaoEventoV4", + CteRecepcaoSinc = @"https://cte.sefaz.mt.gov.br/ctews2/services/CTeRecepcaoSincV4", + CteConsulta = @"https://cte.sefaz.mt.gov.br/ctews2/services/CTeConsultaV4", + CteStatusServico = @"https://cte.sefaz.mt.gov.br/ctews2/services/CTeStatusServicoV4", + CteRecepcaoOs = @"https://cte.sefaz.mt.gov.br/ctews/services/CTeRecepcaoOSV4", + CteRecepcaoGtve = @"https://cte.sefaz.mt.gov.br/ctews2/services/CTeRecepcaoGTVeV4", + QrCode = @"https://www.sefaz.mt.gov.br/cte/qrcode" + }; + } + return new UrlCTe { CteStatusServico = @"https://cte.sefaz.mt.gov.br/ctews/services/CteStatusServico", @@ -69,9 +228,25 @@ private static UrlCTe UrlProducao() CteRecepcao = "https://cte.sefaz.mt.gov.br/ctews/services/CteRecepcao", CteInutilizacao = "https://cte.sefaz.mt.gov.br/ctews/services/CteInutilizacao", CteRecepcaoEvento = "https://cte.sefaz.mt.gov.br/ctews2/services/CteRecepcaoEvento?wsdl", - CteConsulta = @"https://cte.sefaz.mt.gov.br/ctews/services/CteConsulta" + CteConsulta = @"https://cte.sefaz.mt.gov.br/ctews/services/CteConsulta", + QrCode = @"https://www.sefaz.mt.gov.br/cte/qrcode", + CTeDistribuicaoDFe = "https://www1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx" }; case Estado.MS: + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://producao.cte.ms.gov.br/ws/CTeRecepcaoEventoV4", + CteRecepcaoSinc = @"https://producao.cte.ms.gov.br/ws/CTeRecepcaoSincV4", + CteConsulta = @"https://producao.cte.ms.gov.br/ws/CTeConsultaV4", + CteStatusServico = @"https://producao.cte.ms.gov.br/ws/CTeStatusServicoV4", + CteRecepcaoOs = @"https://producao.cte.ms.gov.br/ws/CTeRecepcaoOSV4", + CteRecepcaoGtve = @"https://producao.cte.ms.gov.br/ws/CTeRecepcaoGTVeV4", + QrCode = @"http://www.dfe.ms.gov.br/cte/qrcode" + }; + } + return new UrlCTe { CteStatusServico = @"https://producao.cte.ms.gov.br/ws/CteStatusServico", @@ -79,9 +254,25 @@ private static UrlCTe UrlProducao() CteRecepcao = @"https://producao.cte.ms.gov.br/ws/CteRecepcao", CteInutilizacao = @"https://producao.cte.ms.gov.br/ws/CteInutilizacao", CteRecepcaoEvento = @"https://producao.cte.ms.gov.br/ws/CteRecepcaoEvento", - CteConsulta = @"https://producao.cte.ms.gov.br/ws/CteConsulta" + CteConsulta = @"https://producao.cte.ms.gov.br/ws/CteConsulta", + QrCode = @"http://www.dfe.ms.gov.br/cte/qrcode", + CTeDistribuicaoDFe = "https://www1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx" }; case Estado.MG: + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://cte.fazenda.mg.gov.br/cte/services/CTeRecepcaoEventoV4", + CteRecepcaoSinc = @"https://cte.fazenda.mg.gov.br/cte/services/CTeRecepcaoSincV4", + CteConsulta = @"https://cte.fazenda.mg.gov.br/cte/services/CTeConsultaV4", + CteStatusServico = @"https://cte.fazenda.mg.gov.br/cte/services/CTeStatusServicoV4", + CteRecepcaoOs = @"https://cte.fazenda.mg.gov.br/cte/services/CTeRecepcaoOSV4", + CteRecepcaoGtve = @"https://cte.fazenda.mg.gov.br/cte/services/CTeRecepcaoGTVeV4", + QrCode = @"https://portalcte.fazenda.mg.gov.br/portalcte/sistema/qrcode.xhtml" + }; + } + return new UrlCTe { CteStatusServico = @"https://cte.fazenda.mg.gov.br/cte/services/CteStatusServico", @@ -89,9 +280,25 @@ private static UrlCTe UrlProducao() CteRecepcao = @"https://cte.fazenda.mg.gov.br/cte/services/CteRecepcao", CteInutilizacao = @"https://cte.fazenda.mg.gov.br/cte/services/CteInutilizacao", CteRecepcaoEvento = @"https://cte.fazenda.mg.gov.br/cte/services/RecepcaoEvento", - CteConsulta = @"https://cte.fazenda.mg.gov.br/cte/services/CteConsulta" + CteConsulta = @"https://cte.fazenda.mg.gov.br/cte/services/CteConsulta", + QrCode = @"https://portalcte.fazenda.mg.gov.br/portalcte/sistema/qrcode.xhtml", + CTeDistribuicaoDFe = "https://www1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx" }; case Estado.PR: + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://cte.fazenda.pr.gov.br/cte4/CTeRecepcaoEventoV4", + CteRecepcaoSinc = @"https://cte.fazenda.pr.gov.br/cte4/CTeRecepcaoSincV4", + CteConsulta = @"https://cte.fazenda.pr.gov.br/cte4/CTeConsultaV4", + CteStatusServico = @"https://cte.fazenda.pr.gov.br/cte4/CTeStatusServicoV4", + CteRecepcaoOs = @"https://cte.fazenda.pr.gov.br/cte4/CTeRecepcaoOSV4", + CteRecepcaoGtve = @"https://cte.fazenda.pr.gov.br/cte4/CTeRecepcaoGTVeV4", + QrCode = @"http://www.fazenda.pr.gov.br/cte/qrcode" + }; + } + return new UrlCTe { CteStatusServico = @" https://cte.fazenda.pr.gov.br/cte/CteStatusServico?wsdl", @@ -99,22 +306,25 @@ private static UrlCTe UrlProducao() CteRecepcao = @"https://cte.fazenda.pr.gov.br/cte/CteRecepcao?wsdl", CteInutilizacao = @"https://cte.fazenda.pr.gov.br/cte/CteInutilizacao?wsdl", CteRecepcaoEvento = @"https://cte.fazenda.pr.gov.br/cte/CteRecepcaoEvento?wsdl", - CteConsulta = @"https://cte.fazenda.pr.gov.br/cte/CteConsulta?wsdl" - }; - case Estado.RS: - return new UrlCTe - { - CteStatusServico = - @"https://cte.svrs.rs.gov.br/ws/ctestatusservico/CteStatusServico.asmx", - CteRetRecepcao = @"https://cte.svrs.rs.gov.br/ws/cteretrecepcao/cteRetRecepcao.asmx", - CteRecepcao = @"https://cte.svrs.rs.gov.br/ws/cterecepcao/CteRecepcao.asmx", - CteInutilizacao = - @"https://cte.svrs.rs.gov.br/ws/cteinutilizacao/cteinutilizacao.asmx", - CteRecepcaoEvento = - @"https://cte.svrs.rs.gov.br/ws/cterecepcaoevento/cterecepcaoevento.asmx", - CteConsulta = @"https://cte.svrs.rs.gov.br/ws/cteconsulta/CteConsulta.asmx" + CteConsulta = @"https://cte.fazenda.pr.gov.br/cte/CteConsulta?wsdl", + QrCode = @"http://www.fazenda.pr.gov.br/cte/qrcode", + CTeDistribuicaoDFe = "https://www1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx" }; case Estado.SP: + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoEventoV4.asmx", + CteRecepcaoSinc = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoSincV4.asmx", + CteConsulta = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeConsultaV4.asmx", + CteStatusServico = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeStatusServicoV4.asmx", + CteRecepcaoOs = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoOSV4.asmx", + CteRecepcaoGtve = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoGTVeV4.asmx", + QrCode = @"https://nfe.fazenda.sp.gov.br/CTeConsulta/qrCode" + }; + } + return new UrlCTe { CteStatusServico = @@ -126,7 +336,9 @@ private static UrlCTe UrlProducao() @"https://nfe.fazenda.sp.gov.br/cteWEB/services/cteInutilizacao.asmx", CteRecepcaoEvento = @"https://nfe.fazenda.sp.gov.br/cteweb/services/cteRecepcaoEvento.asmx", - CteConsulta = @"https://nfe.fazenda.sp.gov.br/cteWEB/services/cteConsulta.asmx" + CteConsulta = @"https://nfe.fazenda.sp.gov.br/cteWEB/services/cteConsulta.asmx", + QrCode = @"https://nfe.fazenda.sp.gov.br/CTeConsulta/qrCode", + CTeDistribuicaoDFe = "https://www1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx" }; case Estado.AC: case Estado.AL: @@ -146,21 +358,52 @@ private static UrlCTe UrlProducao() case Estado.SC: case Estado.SE: case Estado.TO: + case Estado.RS: + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://cte.svrs.rs.gov.br/ws/CTeRecepcaoEventoV4/CTeRecepcaoEventoV4.asmx", + CteRecepcaoSinc = @"https://cte.svrs.rs.gov.br/ws/CTeRecepcaoSincV4/CTeRecepcaoSincV4.asmx", + CteConsulta = @"https://cte.svrs.rs.gov.br/ws/CTeConsultaV4/CTeConsultaV4.asmx", + CteStatusServico = @"https://cte.svrs.rs.gov.br/ws/CTeStatusServicoV4/CTeStatusServicoV4.asmx", + CteRecepcaoOs = @"https://cte.svrs.rs.gov.br/ws/CTeRecepcaoOSV4/CTeRecepcaoOSV4.asmx", + CteRecepcaoGtve = @"https://cte.svrs.rs.gov.br/ws/CTeRecepcaoGTVeV4/CTeRecepcaoGTVeV4.asmx", + QrCode = @"https://dfe-portal.svrs.rs.gov.br/cte/qrCode", + }; + } + return new UrlCTe { CteStatusServico = - @"https://cte.svrs.rs.gov.br/ws/ctestatusservico/CteStatusServico.asmx", - CteConsulta = @"https://cte.svrs.rs.gov.br/ws/cteconsulta/CteConsulta.asmx", + @"https://cte.svrs.rs.gov.br/ws/ctestatusservico/CteStatusServico.asmx", CteInutilizacao = @"https://cte.svrs.rs.gov.br/ws/cteinutilizacao/cteinutilizacao.asmx", CteRecepcao = @"https://cte.svrs.rs.gov.br/ws/cterecepcao/CteRecepcao.asmx", CteRecepcaoEvento = @"https://cte.svrs.rs.gov.br/ws/cterecepcaoevento/cterecepcaoevento.asmx", - CteRetRecepcao = @"https://cte.svrs.rs.gov.br/ws/cteretrecepcao/cteRetRecepcao.asmx" + CteRetRecepcao = @"https://cte.svrs.rs.gov.br/ws/cteretrecepcao/cteRetRecepcao.asmx", + CteConsulta = @"https://cte.svrs.rs.gov.br/ws/cteconsulta/CteConsulta.asmx", + QrCode = @"https://dfe-portal.svrs.rs.gov.br/cte/qrCode", + CTeDistribuicaoDFe = "https://www1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx" }; case Estado.AP: case Estado.PE: case Estado.RR: + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoEventoV4.asmx", + CteRecepcaoSinc = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoSincV4.asmx", + CteConsulta = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeConsultaV4.asmx", + CteStatusServico = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeStatusServicoV4.asmx", + CteRecepcaoOs = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoOSV4.asmx", + CteRecepcaoGtve = @"https://nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoGTVeV4.asmx", + QrCode = @"https://nfe.fazenda.sp.gov.br/CTeConsulta/qrCode" + }; + } + return new UrlCTe { CteStatusServico = @"https://nfe.fazenda.sp.gov.br/cteWEB/services/CteStatusServico.asmx", @@ -168,7 +411,9 @@ private static UrlCTe UrlProducao() CteRecepcao = @"https://nfe.fazenda.sp.gov.br/cteWEB/services/cteRecepcao.asmx", CteInutilizacao = @"https://nfe.fazenda.sp.gov.br/cteWEB/services/cteInutilizacao.asmx", CteRecepcaoEvento = @"https://nfe.fazenda.sp.gov.br/cteWEB/services/CteRecepcaoEvento.asmx", - CteConsulta = @"https://nfe.fazenda.sp.gov.br/cteWEB/services/CteConsulta.asmx" + CteConsulta = @"https://nfe.fazenda.sp.gov.br/cteWEB/services/CteConsulta.asmx", + QrCode = @"https://nfe.fazenda.sp.gov.br/CTeConsulta/qrCode", + CTeDistribuicaoDFe = "https://www1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx" }; default: throw new InvalidOperationException( @@ -177,13 +422,25 @@ private static UrlCTe UrlProducao() } - private static UrlCTe UrlHomologacao() + private static UrlCTe UrlHomologacao(ConfiguracaoServico configuracaoServico) { - var configuracaoServico = ConfiguracaoServico.Instancia; - switch (configuracaoServico.cUF) { case Estado.MT: + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://homologacao.sefaz.mt.gov.br/ctews2/services/CTeRecepcaoEventoV4", + CteRecepcaoSinc = @"https://homologacao.sefaz.mt.gov.br/ctews2/services/CTeRecepcaoSincV4", + CteConsulta = @"https://homologacao.sefaz.mt.gov.br/ctews2/services/CTeConsultaV4", + CteStatusServico = @"https://homologacao.sefaz.mt.gov.br/ctews2/services/CTeStatusServicoV4", + CteRecepcaoOs = @"https://homologacao.sefaz.mt.gov.br/ctews/services/CTeRecepcaoOSV4", + CteRecepcaoGtve = @"https://homologacao.sefaz.mt.gov.br/ctews2/services/CTeRecepcaoGTVeV4", + QrCode = @"https://homologacao.sefaz.mt.gov.br/cte/qrcode" + }; + } + return new UrlCTe { CteStatusServico = @"https://homologacao.sefaz.mt.gov.br/ctews/services/CteStatusServico", @@ -192,9 +449,23 @@ private static UrlCTe UrlHomologacao() CteInutilizacao = @"https://homologacao.sefaz.mt.gov.br/ctews/services/CteInutilizacao", CteRecepcaoEvento = @"https://homologacao.sefaz.mt.gov.br/ctews2/services/CteRecepcaoEvento?wsdl", - CteConsulta = @"https://homologacao.sefaz.mt.gov.br/ctews/services/CteConsulta" + CteConsulta = @"https://homologacao.sefaz.mt.gov.br/ctews/services/CteConsulta", + QrCode = @"https://homologacao.sefaz.mt.gov.br/cte/qrcode", + CTeDistribuicaoDFe = @"https://hom1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx" }; case Estado.MS: + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://homologacao.cte.ms.gov.br/ws/CTeRecepcaoEventoV4", + CteRecepcaoSinc = @"https://homologacao.cte.ms.gov.br/ws/CTeRecepcaoSincV4", + CteConsulta = @"https://homologacao.cte.ms.gov.br/ws/CTeConsultaV4", + CteStatusServico = @"https://homologacao.cte.ms.gov.br/ws/CTeStatusServicoV4", + QrCode = @"http://www.dfe.ms.gov.br/cte/qrcode" + }; + } + return new UrlCTe { CteStatusServico = @"https://homologacao.cte.ms.gov.br/ws/CteStatusServico", @@ -202,9 +473,25 @@ private static UrlCTe UrlHomologacao() CteRecepcao = @"https://homologacao.cte.ms.gov.br/ws/CteRecepcao", CteInutilizacao = @"https://homologacao.cte.ms.gov.br/ws/CteInutilizacao", CteRecepcaoEvento = @"https://homologacao.cte.ms.gov.br/ws/CteRecepcaoEvento", - CteConsulta = @"https://homologacao.cte.ms.gov.br/ws/CteConsulta" + CteConsulta = @"https://homologacao.cte.ms.gov.br/ws/CteConsulta", + QrCode = @"http://www.dfe.ms.gov.br/cte/qrcode", + CTeDistribuicaoDFe = @"https://hom1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx" }; case Estado.MG: + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://hcte.fazenda.mg.gov.br/cte/services/CTeRecepcaoEventoV4", + CteRecepcaoSinc = @"https://hcte.fazenda.mg.gov.br/cte/services/CTeRecepcaoSincV4", + CteConsulta = @"https://hcte.fazenda.mg.gov.br/cte/services/CTeConsultaV4", + CteStatusServico = @"https://hcte.fazenda.mg.gov.br/cte/services/CTeStatusServicoV4", + CteRecepcaoOs = @"https://hcte.fazenda.mg.gov.br/cte/services/CTeRecepcaoOSV4", + CteRecepcaoGtve = @"https://hcte.fazenda.mg.gov.br/cte/services/CTeRecepcaoGTVeV4", + QrCode = @"https://portalcte.fazenda.mg.gov.br/portalcte/sistema/qrcode.xhtml" + }; + } + return new UrlCTe { CteStatusServico = @"https://hcte.fazenda.mg.gov.br/cte/services/CteStatusServico?wsdl", @@ -212,9 +499,25 @@ private static UrlCTe UrlHomologacao() CteRecepcao = @"https://hcte.fazenda.mg.gov.br/cte/services/CteRecepcao?wsdl", CteInutilizacao = @"https://hcte.fazenda.mg.gov.br/cte/services/CteInutilizacao?wsdl", CteRecepcaoEvento = @"https://hcte.fazenda.mg.gov.br/cte/services/RecepcaoEvento?wsdl", - CteConsulta = @"https://hcte.fazenda.mg.gov.br/cte/services/CteConsulta?wsdl" + CteConsulta = @"https://hcte.fazenda.mg.gov.br/cte/services/CteConsulta?wsdl", + QrCode = @"https://hcte.fazenda.mg.gov.br/portalcte/sistema/qrcode.xhtml", + CTeDistribuicaoDFe = @"https://hom1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx" }; case Estado.PR: + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://homologacao.cte.fazenda.pr.gov.br/cte4/CTeRecepcaoEventoV4", + CteRecepcaoSinc = @"https://homologacao.cte.fazenda.pr.gov.br/cte4/CTeRecepcaoSincV4", + CteConsulta = @"https://homologacao.cte.fazenda.pr.gov.br/cte4/CTeConsultaV4", + CteStatusServico = @"https://homologacao.cte.fazenda.pr.gov.br/cte4/CTeStatusServicoV4", + CteRecepcaoOs = @"https://homologacao.cte.fazenda.pr.gov.br/cte4/CTeRecepcaoOSV4", + CteRecepcaoGtve = @"https://homologacao.cte.fazenda.pr.gov.br/cte4/CTeRecepcaoGTVeV4", + QrCode = @"http://www.fazenda.pr.gov.br/cte/qrcode" + }; + } + return new UrlCTe { CteStatusServico = @"https://homologacao.cte.fazenda.pr.gov.br/cte/CteStatusServico?wsdl", @@ -222,7 +525,9 @@ private static UrlCTe UrlHomologacao() CteRecepcao = @"https://homologacao.cte.fazenda.pr.gov.br/cte/CteRecepcao?wsdl", CteInutilizacao = @"https://homologacao.cte.fazenda.pr.gov.br/cte/CteInutilizacao?wsdl", CteRecepcaoEvento = @"https://homologacao.cte.fazenda.pr.gov.br/cte/CteRecepcaoEvento?wsdl", - CteConsulta = @"https://homologacao.cte.fazenda.pr.gov.br/cte/CteConsulta?wsdl" + CteConsulta = @"https://homologacao.cte.fazenda.pr.gov.br/cte/CteConsulta?wsdl", + QrCode = @"http://www.fazenda.pr.gov.br/cte/qrcode", + CTeDistribuicaoDFe = @"https://hom1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx" }; case Estado.RS: return new UrlCTe @@ -235,21 +540,35 @@ private static UrlCTe UrlHomologacao() @"https://cte-homologacao.svrs.rs.gov.br/ws/cteinutilizacao/cteinutilizacao.asmx", CteRecepcaoEvento = @"https://cte-homologacao.svrs.rs.gov.br/ws/cterecepcaoevento/cterecepcaoevento.asmx", - CteConsulta = @"https://cte-homologacao.svrs.rs.gov.br/ws/cteconsulta/CteConsulta.asmx" + CteConsulta = @"https://cte-homologacao.svrs.rs.gov.br/ws/cteconsulta/CteConsulta.asmx", + QrCode = @"https://dfe-portal.svrs.rs.gov.br/cte/qrCode", + CTeDistribuicaoDFe = @"https://hom1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx" }; case Estado.SP: + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoEventoV4.asmx", + CteRecepcaoSinc = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoSincV4.asmx", + CteConsulta = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeConsultaV4.asmx", + CteStatusServico = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeStatusServicoV4.asmx", + CteRecepcaoOs = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoOSV4.asmx", + CteRecepcaoGtve = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoGTVeV4.asmx", + QrCode = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeConsulta/qrCode" + }; + } + return new UrlCTe { - CteStatusServico = - @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteStatusServico.asmx", - CteRetRecepcao = - @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteRetRecepcao.asmx", + CteStatusServico = @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteStatusServico.asmx", + CteRetRecepcao = @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteRetRecepcao.asmx", CteRecepcao = @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteRecepcao.asmx", - CteInutilizacao = - @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteInutilizacao.asmx", - CteRecepcaoEvento = - @"https://homologacao.nfe.fazenda.sp.gov.br/cteweb/services/cteRecepcaoEvento.asmx", - CteConsulta = @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteConsulta.asmx" + CteInutilizacao = @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteInutilizacao.asmx", + CteRecepcaoEvento = @"https://homologacao.nfe.fazenda.sp.gov.br/cteweb/services/cteRecepcaoEvento.asmx", + CteConsulta = @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteConsulta.asmx", + QrCode = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeConsulta/qrCode", + CTeDistribuicaoDFe = @"https://hom1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx" }; case Estado.AC: case Estado.AL: @@ -269,6 +588,20 @@ private static UrlCTe UrlHomologacao() case Estado.SC: case Estado.SE: case Estado.TO: + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://cte-homologacao.svrs.rs.gov.br/ws/CTeRecepcaoEventoV4/CTeRecepcaoEventoV4.asmx", + CteRecepcaoSinc = @"https://cte-homologacao.svrs.rs.gov.br/ws/CTeRecepcaoSincV4/CTeRecepcaoSincV4.asmx", + CteConsulta = @"https://cte-homologacao.svrs.rs.gov.br/ws/CTeConsultaV4/CTeConsultaV4.asmx", + CteStatusServico = @"https://cte-homologacao.svrs.rs.gov.br/ws/CTeStatusServicoV4/CTeStatusServicoV4.asmx", + CteRecepcaoOs = @"https://cte-homologacao.svrs.rs.gov.br/ws/CTeRecepcaoOSV4/CTeRecepcaoOSV4.asmx", + CteRecepcaoGtve = @"https://cte-homologacao.svrs.rs.gov.br/ws/CTeRecepcaoGTVeV4/CTeRecepcaoGTVeV4.asmx", + QrCode = @"https://dfe-portal.svrs.rs.gov.br/cte/qrCode" + }; + } + return new UrlCTe { CteStatusServico = @@ -279,11 +612,27 @@ private static UrlCTe UrlHomologacao() CteRecepcao = @"https://cte-homologacao.svrs.rs.gov.br/ws/cterecepcao/CTeRecepcao.asmx", CteRecepcaoEvento = @"https://cte-homologacao.svrs.rs.gov.br/ws/cterecepcaoevento/CTeRecepcaoEvento.asmx", - CteRetRecepcao = @"https://cte-homologacao.svrs.rs.gov.br/ws/cteretrecepcao/CTeRetRecepcao.asmx" + CteRetRecepcao = @"https://cte-homologacao.svrs.rs.gov.br/ws/cteretrecepcao/CTeRetRecepcao.asmx", + QrCode = @"https://dfe-portal.svrs.rs.gov.br/cte/qrCode", + CTeDistribuicaoDFe = @"https://hom1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx" }; case Estado.AP: case Estado.PE: case Estado.RR: + if (configuracaoServico.VersaoLayout == versao.ve400) + { + return new UrlCTe + { + CteRecepcaoEvento = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoEventoV4.asmx", + CteRecepcaoSinc = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoSincV4.asmx", + CteConsulta = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeConsultaV4.asmx", + CteStatusServico = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeStatusServicoV4.asmx", + CteRecepcaoOs = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoOSV4.asmx", + CteRecepcaoGtve = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeWS/WS/CTeRecepcaoGTVeV4.asmx", + QrCode = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeConsulta/qrCode" + }; + } + return new UrlCTe { CteStatusServico = @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/CteStatusServico.asmx", @@ -291,7 +640,9 @@ private static UrlCTe UrlHomologacao() CteRecepcao = @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/CteRecepcao.asmx", CteInutilizacao = @"https://nfe.fazenda.sp.gov.br/cteWEB/services/cteInutilizacao.asmx", CteRecepcaoEvento = @"https://cte.sefaz.rs.gov.br/ws/CteRecepcaoEvento/CteRecepcaoEvento.asmx", - CteConsulta = @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/CteConsulta.asmx" + CteConsulta = @"https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/CteConsulta.asmx", + QrCode = @"https://homologacao.nfe.fazenda.sp.gov.br/CTeConsulta/qrCode", + CTeDistribuicaoDFe = @"https://hom1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx" }; default: throw new InvalidOperationException( diff --git a/CTe.Servicos/Enderecos/UrlCTe.cs b/CTe.Servicos/Enderecos/UrlCTe.cs index 0233f3bd4..3edf97a97 100644 --- a/CTe.Servicos/Enderecos/UrlCTe.cs +++ b/CTe.Servicos/Enderecos/UrlCTe.cs @@ -36,9 +36,20 @@ public class UrlCTe { public string CteConsulta { get; set; } public string CteInutilizacao { get; set; } + public string CteRecepcaoSinc { get; set; } public string CteRecepcao { get; set; } public string CteRecepcaoEvento { get; set; } public string CteRetRecepcao { get; set; } public string CteStatusServico { get; set; } + public string CTeDistribuicaoDFe { get; set; } + public string QrCode { get; set; } + public string CteRecepcaoOs { get; set; } + public string CteRecepcaoGtve { get; set; } + + public UrlCTe() + { + //CTe tem como URL de distribuição ambinente nacional + CTeDistribuicaoDFe = @"https://www1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx"; + } } } \ No newline at end of file diff --git a/CTe.Servicos/EnviarCte/ServicoEnviarCte.cs b/CTe.Servicos/EnviarCte/ServicoEnviarCte.cs index b0ff96604..583b08f54 100644 --- a/CTe.Servicos/EnviarCte/ServicoEnviarCte.cs +++ b/CTe.Servicos/EnviarCte/ServicoEnviarCte.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Threading.Tasks; using CTe.Classes; using CTe.Classes.Servicos.Recepcao; using CTe.Classes.Servicos.Recepcao.Retorno; @@ -10,11 +11,52 @@ namespace CTe.Servicos.EnviarCte { public class ServicoEnviarCte { - public RetornoEnviarCte Enviar(int lote, Classes.CTe cte) + public RetornoEnviarCte Enviar(int lote, Classes.CTe cte, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + ServicoCTeRecepcao servicoRecepcao = new ServicoCTeRecepcao(); + + retEnviCte retEnviCte = servicoRecepcao.CTeRecepcao(lote, new List { cte }, configServico); + + if (retEnviCte.cStat != 103) + { + return new RetornoEnviarCte(retEnviCte, null, null); + } + + ConsultaReciboServico servicoConsultaRecibo = new ConsultaReciboServico(retEnviCte.infRec.nRec); + + retConsReciCTe retConsReciCTe = servicoConsultaRecibo.Consultar(configServico); + + cteProc cteProc = null; + if (retConsReciCTe.cStat == 104) + { + + if (retConsReciCTe.protCTe[0].infProt.cStat != 100) + { + return new RetornoEnviarCte(retEnviCte, retConsReciCTe, null); + } + + cteProc = new cteProc + { + CTe = cte, + versao = configServico.VersaoLayout, + protCTe = retConsReciCTe.protCTe[0] + }; + } + + cteProc.SalvarXmlEmDisco(configServico); + + return new RetornoEnviarCte(retEnviCte, retConsReciCTe, cteProc); + } + + public async Task EnviarAsync(int lote, Classes.CTe cte, ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + ServicoCTeRecepcao servicoRecepcao = new ServicoCTeRecepcao(); - retEnviCte retEnviCte = servicoRecepcao.CTeRecepcao(lote, new List {cte}); + retEnviCte retEnviCte = await servicoRecepcao.CTeRecepcaoAsync(lote, new List { cte }, configServico); if (retEnviCte.cStat != 103) { @@ -23,7 +65,7 @@ public RetornoEnviarCte Enviar(int lote, Classes.CTe cte) ConsultaReciboServico servicoConsultaRecibo = new ConsultaReciboServico(retEnviCte.infRec.nRec); - retConsReciCTe retConsReciCTe = servicoConsultaRecibo.Consultar(); + retConsReciCTe retConsReciCTe = await servicoConsultaRecibo.ConsultarAsync(configServico); cteProc cteProc = null; @@ -38,12 +80,12 @@ public RetornoEnviarCte Enviar(int lote, Classes.CTe cte) cteProc = new cteProc { CTe = cte, - versao = ConfiguracaoServico.Instancia.VersaoLayout, + versao = configServico.VersaoLayout, protCTe = retConsReciCTe.protCTe[0] }; } - cteProc.SalvarXmlEmDisco(); + cteProc.SalvarXmlEmDisco(configServico); return new RetornoEnviarCte(retEnviCte, retConsReciCTe, cteProc); } diff --git a/CTe.Servicos/Eventos/Contratos/IServicoController.cs b/CTe.Servicos/Eventos/Contratos/IServicoController.cs index 928699bf3..a359639b3 100644 --- a/CTe.Servicos/Eventos/Contratos/IServicoController.cs +++ b/CTe.Servicos/Eventos/Contratos/IServicoController.cs @@ -31,6 +31,8 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.Threading.Tasks; +using CTe.Classes; using CTe.Classes.Servicos.Evento; using CTe.Classes.Servicos.Evento.Flags; using CteEletronico = CTe.Classes.CTe; @@ -39,6 +41,9 @@ namespace CTe.Servicos.Eventos.Contratos { public interface IServicoController { - retEventoCTe Executar(CteEletronico cte, int sequenciaEvento, EventoContainer container, TipoEvento evento); + retEventoCTe Executar(CteEletronico cte, int sequenciaEvento, EventoContainer container, CTeTipoEvento evento, ConfiguracaoServico configuracaoServico = null); + + Task ExecutarAsync(CteEletronico cte, int sequenciaEvento, EventoContainer container, + CTeTipoEvento cTeTipoEvento, ConfiguracaoServico configuracaoServico = null); } } \ No newline at end of file diff --git a/CTe.Servicos/Eventos/EventoCancelamento.cs b/CTe.Servicos/Eventos/EventoCancelamento.cs index 28daa3a3f..c644667fb 100644 --- a/CTe.Servicos/Eventos/EventoCancelamento.cs +++ b/CTe.Servicos/Eventos/EventoCancelamento.cs @@ -31,20 +31,29 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.Threading.Tasks; +using CTe.Classes; using CTe.Classes.Servicos.Evento; using CTe.Classes.Servicos.Evento.Flags; using CTe.Servicos.Factory; +using CTe.Utils.CTe; using CteEletronico = CTe.Classes.CTe; +using CteEletronicoOS = CTe.CTeOSClasses.CTeOS; namespace CTe.Servicos.Eventos { public class EventoCancelamento { private readonly CteEletronico _cte; + private readonly CteEletronicoOS _cteOs; + private readonly int _sequenciaEvento; private readonly string _numeroProtocolo; private readonly string _justificativa; + public eventoCTe EventoEnviado { get; private set; } + public retEventoCTe RetornoSefaz { get; private set; } + public EventoCancelamento(CteEletronico cte, int sequenciaEvento, string numeroProtocolo, string justificativa) { _cte = cte; @@ -53,13 +62,45 @@ public EventoCancelamento(CteEletronico cte, int sequenciaEvento, string numeroP _justificativa = justificativa; } - public retEventoCTe Cancelar() + public EventoCancelamento(CteEletronicoOS cte, int sequenciaEvento, string numeroProtocolo, string justificativa) + { + _cteOs = cte; + _sequenciaEvento = sequenciaEvento; + _numeroProtocolo = numeroProtocolo; + _justificativa = justificativa; + } + + public retEventoCTe Cancelar(ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + var evento = ClassesFactory.CriaEvCancCTe(_justificativa, _numeroProtocolo); + + EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Cancelamento, _sequenciaEvento, _cte.Chave(), _cte.infCte.emit.CNPJ, evento, configServico); + RetornoSefaz = new ServicoController().Executar(_cte, _sequenciaEvento, evento, CTeTipoEvento.Cancelamento, configServico); + + return RetornoSefaz; + } + + public retEventoCTe CancelarOs(ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + var evento = ClassesFactory.CriaEvCancCTe(_justificativa, _numeroProtocolo); + + EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Cancelamento, _sequenciaEvento, _cteOs.Chave(), _cteOs.InfCte.emit.CNPJ, evento, configServico); + RetornoSefaz = new ServicoController().Executar(_cteOs, _sequenciaEvento, evento, CTeTipoEvento.Cancelamento, configServico); + + return RetornoSefaz; + } + + public async Task CancelarAsync(ConfiguracaoServico configuracaoServico = null) { - var eventoCancelar = ClassesFactory.CriaEvCancCTe(_justificativa, _numeroProtocolo); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + var evento = ClassesFactory.CriaEvCancCTe(_justificativa, _numeroProtocolo); - var retorno = new ServicoController().Executar(_cte, _sequenciaEvento, eventoCancelar, TipoEvento.Cancelamento); + EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Cancelamento, _sequenciaEvento, _cte.Chave(), _cte.infCte.emit.CNPJ, evento, configServico); + RetornoSefaz = await new ServicoController().ExecutarAsync(_cte, _sequenciaEvento, evento, CTeTipoEvento.Cancelamento, configServico); - return retorno; + return RetornoSefaz; } } } \ No newline at end of file diff --git a/CTe.Servicos/Eventos/EventoCartaCorrecao.cs b/CTe.Servicos/Eventos/EventoCartaCorrecao.cs index 1db9cc2ad..a3c673439 100644 --- a/CTe.Servicos/Eventos/EventoCartaCorrecao.cs +++ b/CTe.Servicos/Eventos/EventoCartaCorrecao.cs @@ -32,19 +32,27 @@ /********************************************************************************/ using System.Collections.Generic; +using System.Threading.Tasks; +using CTe.Classes; using CTe.Classes.Servicos.Evento; using CTe.Classes.Servicos.Evento.Flags; using CTe.Servicos.Factory; +using CTe.Utils.CTe; using CteEletronico = CTe.Classes.CTe; +using CteEletronicoOS = CTe.CTeOSClasses.CTeOS; namespace CTe.Servicos.Eventos { public class EventoCartaCorrecao { private readonly CteEletronico _cte; + private readonly CteEletronicoOS _cteOs; private readonly int _sequenciaEvento; private readonly List _infCorrecaos; + public eventoCTe EventoEnviado { get; private set; } + public retEventoCTe RetornoSefaz { get; private set; } + public EventoCartaCorrecao(CteEletronico cte, int sequenciaEvento, List infCorrecaos) { @@ -53,13 +61,41 @@ public EventoCartaCorrecao(CteEletronico cte, int sequenciaEvento, _infCorrecaos = infCorrecaos; } - public retEventoCTe AdicionarCorrecoes() + public EventoCartaCorrecao(CteEletronicoOS cte, int sequenciaEvento, List infCorrecaos) + { + _cteOs = cte; + _sequenciaEvento = sequenciaEvento; + _infCorrecaos = infCorrecaos; + } + + public retEventoCTe AdicionarCorrecoes(ConfiguracaoServico configuracaoServico = null) + { + var eventoCorrecao = ClassesFactory.CriaEvCCeCTe(_infCorrecaos); + + EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.CartaCorrecao, _sequenciaEvento, _cte.Chave(), _cte.infCte.emit.CNPJ, eventoCorrecao, configuracaoServico); + RetornoSefaz = new ServicoController().Executar(_cte, _sequenciaEvento, eventoCorrecao, CTeTipoEvento.CartaCorrecao, configuracaoServico); + + return RetornoSefaz; + } + + public retEventoCTe AdicionarCorrecoesOs(ConfiguracaoServico configuracaoServico = null) + { + var eventoCorrecao = ClassesFactory.CriaEvCCeCTe(_infCorrecaos); + + EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.CartaCorrecao, _sequenciaEvento, _cteOs.Chave(), _cteOs.InfCte.emit.CNPJ, eventoCorrecao, configuracaoServico); + RetornoSefaz = new ServicoController().Executar(_cteOs, _sequenciaEvento, eventoCorrecao, CTeTipoEvento.CartaCorrecao, configuracaoServico); + + return RetornoSefaz; + } + + public async Task AdicionarCorrecoesAsync(ConfiguracaoServico configuracaoServico = null) { var eventoCorrecao = ClassesFactory.CriaEvCCeCTe(_infCorrecaos); - var retorno = new ServicoController().Executar(_cte, _sequenciaEvento, eventoCorrecao, TipoEvento.CartaCorrecao); + EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.CartaCorrecao, _sequenciaEvento, _cte.Chave(), _cte.infCte.emit.CNPJ, eventoCorrecao, configuracaoServico); + RetornoSefaz = await new ServicoController().ExecutarAsync(_cte, _sequenciaEvento, eventoCorrecao, CTeTipoEvento.CartaCorrecao, configuracaoServico); - return retorno; + return RetornoSefaz; } } } \ No newline at end of file diff --git a/CTe.Servicos/Eventos/EventoDesacordo.cs b/CTe.Servicos/Eventos/EventoDesacordo.cs new file mode 100644 index 000000000..d2cef837a --- /dev/null +++ b/CTe.Servicos/Eventos/EventoDesacordo.cs @@ -0,0 +1,82 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.Threading.Tasks; +using CTe.Classes; +using CTe.Classes.Servicos.Evento; +using CTe.Classes.Servicos.Evento.Flags; +using CTe.Servicos.Factory; + +namespace CTe.Servicos.Eventos +{ + public class EventoDesacordo + { + private readonly int _sequenciaEvento; + private readonly string _cnpj; + private readonly string _chave; + private readonly string _indicadorDesacordo; + private readonly string _observacao; + + public eventoCTe EventoEnviado { get; private set; } + public retEventoCTe RetornoSefaz { get; private set; } + + public EventoDesacordo(int sequenciaEvento, string chave, string cnpj, string indicadorDesacordo, string observacao) + { + _chave = chave; + _cnpj = cnpj; + _sequenciaEvento = sequenciaEvento; + _indicadorDesacordo = indicadorDesacordo; + _observacao = observacao; + } + + public retEventoCTe Discordar(ConfiguracaoServico configuracaoServico = null) + { + var eventoDiscordar = ClassesFactory.CriaEvPrestDesacordo(_indicadorDesacordo, _observacao); + + EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Desacordo, _sequenciaEvento, _chave, _cnpj, eventoDiscordar, configuracaoServico); + RetornoSefaz = new ServicoController().Executar(CTeTipoEvento.Desacordo, _sequenciaEvento, _chave, _cnpj, eventoDiscordar, configuracaoServico); + + return RetornoSefaz; + } + + public async Task DiscordarAsync(ConfiguracaoServico configuracaoServico = null) + { + var eventoDiscordar = ClassesFactory.CriaEvPrestDesacordo(_indicadorDesacordo, _observacao); + + EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Desacordo, _sequenciaEvento, _chave, _cnpj, eventoDiscordar, configuracaoServico); + RetornoSefaz = await new ServicoController().ExecutarAsync(CTeTipoEvento.Desacordo, _sequenciaEvento, _chave, _cnpj, eventoDiscordar, configuracaoServico); + + return RetornoSefaz; + } + } +} \ No newline at end of file diff --git a/CTe.Servicos/Eventos/FactoryEvento.cs b/CTe.Servicos/Eventos/FactoryEvento.cs index 784ee9a01..f862794e2 100644 --- a/CTe.Servicos/Eventos/FactoryEvento.cs +++ b/CTe.Servicos/Eventos/FactoryEvento.cs @@ -36,6 +36,7 @@ using CTe.Classes; using CTe.Classes.Servicos.Evento; using CTe.Classes.Servicos.Evento.Flags; +using CTe.Classes.Servicos.Tipos; using CTe.Utils.CTe; using CTeEletronico = CTe.Classes.CTe; @@ -43,30 +44,42 @@ namespace CTe.Servicos.Eventos { public class FactoryEvento { - public static eventoCTe CriaEvento(CTeEletronico cte, TipoEvento tipoEvento, int sequenciaEvento, EventoContainer container) + //Vou manter para evitar quebra de código pois a classe e o metodo são publicos + public static eventoCTe CriaEvento(CTeEletronico cte, CTeTipoEvento cTeTipoEvento, int sequenciaEvento, EventoContainer container, ConfiguracaoServico configuracaoServico = null) { - var configuracaoServico = ConfiguracaoServico.Instancia; + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + return CriaEvento(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configServico); + } + + public static eventoCTe CriaEvento(CTeTipoEvento cTeTipoEvento, int sequenciaEvento, string chave, string cnpj, EventoContainer container, ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; var id = new StringBuilder("ID"); - id.Append((int)tipoEvento); - id.Append(cte.Chave()); - id.Append(sequenciaEvento.ToString("D2")); + id.Append((int)cTeTipoEvento); + id.Append(chave); + + if (configServico.VersaoLayout == versao.ve200 || configServico.VersaoLayout == versao.ve300) + id.Append(sequenciaEvento.ToString("D2")); + + if (configServico.VersaoLayout == versao.ve400) + id.Append(sequenciaEvento.ToString("D3")); return new eventoCTe { - versao = configuracaoServico.VersaoLayout, - infEvento = new infEventoEnv + versao = configServico.VersaoLayout, + infEvento = new infEventoEnv(configServico) { - tpAmb = configuracaoServico.tpAmb, - CNPJ = cte.infCte.emit.CNPJ, - cOrgao = configuracaoServico.cUF, - chCTe = cte.Chave(), - dhEvento = DateTime.Now, + tpAmb = configServico.tpAmb, + CNPJ = cnpj, + cOrgao = configServico.cUF, + chCTe = chave, + dhEvento = DateTimeOffset.Now, nSeqEvento = sequenciaEvento, - tpEvento = tipoEvento, + tpEvento = cTeTipoEvento, detEvento = new detEvento { - versaoEvento = configuracaoServico.VersaoLayout, + versaoEvento = configServico.VersaoLayout, EventoContainer = container }, Id = id.ToString() diff --git a/CTe.Servicos/Eventos/ServicoController.cs b/CTe.Servicos/Eventos/ServicoController.cs index 7cb09965a..5e319f335 100644 --- a/CTe.Servicos/Eventos/ServicoController.cs +++ b/CTe.Servicos/Eventos/ServicoController.cs @@ -31,29 +31,105 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.Threading.Tasks; +using System.Xml; +using CTe.Classes; using CTe.Classes.Servicos.Evento; using CTe.Classes.Servicos.Evento.Flags; +using CTe.Classes.Servicos.Tipos; using CTe.Servicos.Eventos.Contratos; using CTe.Servicos.Factory; +using CTe.Utils.CTe; using CTe.Utils.Evento; using CteEletronico = CTe.Classes.CTe; +using CteEletronicoOS = CTe.CTeOSClasses.CTeOS; namespace CTe.Servicos.Eventos { public class ServicoController : IServicoController { - public retEventoCTe Executar(CteEletronico cte, int sequenciaEvento, EventoContainer container, TipoEvento tipoEvento) + public retEventoCTe Executar(CteEletronico cte, int sequenciaEvento, EventoContainer container, CTeTipoEvento cTeTipoEvento, ConfiguracaoServico configuracaoServico = null) { - var evento = FactoryEvento.CriaEvento(cte, tipoEvento, sequenciaEvento, container); - evento.Assina(); - evento.ValidarSchema(); - evento.SalvarXmlEmDisco(); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + return Executar(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configServico); + } + + public retEventoCTe Executar(CteEletronicoOS cte, int sequenciaEvento, EventoContainer container, CTeTipoEvento cTeTipoEvento, ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + return Executar(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.InfCte.emit.CNPJ, container, configServico); + } + + public async Task ExecutarAsync(CteEletronico cte, int sequenciaEvento, EventoContainer container, CTeTipoEvento cTeTipoEvento, ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + return await ExecutarAsync(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configServico); + } + + public retEventoCTe Executar(CTeTipoEvento cTeTipoEvento, int sequenciaEvento, string chave, string cnpj, EventoContainer container, ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + var evento = FactoryEvento.CriaEvento(cTeTipoEvento, sequenciaEvento, chave, cnpj, container, configServico); + evento.Assina(configServico); + + if (configServico.IsValidaSchemas) + evento.ValidarSchema(configServico); + + evento.SalvarXmlEmDisco(configServico); + + XmlNode retornoXml = null; + + if (evento.versao == versao.ve200 || evento.versao == versao.ve300) + { + var webService = WsdlFactory.CriaWsdlCteEvento(configServico); + retornoXml = webService.cteRecepcaoEvento(evento.CriaXmlRequestWs()); + } + + if (evento.versao == versao.ve400) + { + var webService = WsdlFactory.CriaWsdlCteEventoV4(configServico); + retornoXml = webService.cteRecepcaoEvento(evento.CriaXmlRequestWs()); + } + + var retorno = retEventoCTe.LoadXml(retornoXml.OuterXml, evento); + retorno.SalvarXmlEmDisco(configServico); + + return retorno; + } + + public async Task ExecutarAsync(CTeTipoEvento cTeTipoEvento, + int sequenciaEvento, + string chave, string + cnpj, EventoContainer container, + ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var evento = FactoryEvento.CriaEvento(cTeTipoEvento, sequenciaEvento, chave, cnpj, container, configServico); + evento.Assina(configServico); + + if (configServico.IsValidaSchemas) + evento.ValidarSchema(configServico); + + evento.SalvarXmlEmDisco(configServico); + + XmlNode retornoXml = null; + + if (evento.versao == versao.ve200 || evento.versao == versao.ve300) + { + var webService = WsdlFactory.CriaWsdlCteEvento(configServico); + retornoXml = await webService.cteRecepcaoEventoAsync(evento.CriaXmlRequestWs()); + } - var webService = WsdlFactory.CriaWsdlCteEvento(); - var retornoXml = webService.cteRecepcaoEvento(evento.CriaXmlRequestWs()); + if (evento.versao == versao.ve400) + { + var webService = WsdlFactory.CriaWsdlCteEventoV4(configServico); + retornoXml = await webService.cteRecepcaoEventoAsync(evento.CriaXmlRequestWs()); + } + var retorno = retEventoCTe.LoadXml(retornoXml.OuterXml, evento); - retorno.SalvarXmlEmDisco(); + retorno.SalvarXmlEmDisco(configServico); return retorno; } diff --git a/CTe.Servicos/Factory/ClassesFactory.cs b/CTe.Servicos/Factory/ClassesFactory.cs index db651a7c8..03492279d 100644 --- a/CTe.Servicos/Factory/ClassesFactory.cs +++ b/CTe.Servicos/Factory/ClassesFactory.cs @@ -42,6 +42,7 @@ using CTe.Classes.Servicos.Recepcao.Retorno; using CTe.Classes.Servicos.Status; using CTe.Servicos.Inutilizacao; +using DFe.Classes.Entidades; using DFe.Classes.Extensoes; using CTeEletronica = CTe.Classes.CTe; @@ -49,37 +50,49 @@ namespace CTe.Servicos.Factory { public class ClassesFactory { - public static consStatServCte CriaConsStatServCte() + public static consStatServCte CriaConsStatServCte(ConfiguracaoServico configuracaoServico = null) { - var configuracaoServico = ConfiguracaoServico.Instancia; + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; return new consStatServCte { - versao = configuracaoServico.VersaoLayout, - tpAmb = configuracaoServico.tpAmb + versao = configServico.VersaoLayout, + tpAmb = configServico.tpAmb }; } - public static consSitCTe CriarconsSitCTe(string chave) + public static consStatServCTe CriaConsStatServCTe(ConfiguracaoServico configuracaoServico = null) { - var configuracaoServico = ConfiguracaoServico.Instancia; + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + return new consStatServCTe + { + versao = configServico.VersaoLayout, + cUF = configServico.cUF, + tpAmb = configServico.tpAmb + }; + } + + public static consSitCTe CriarconsSitCTe(string chave, ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; return new consSitCTe { - tpAmb = configuracaoServico.tpAmb, - versao = configuracaoServico.VersaoLayout, + tpAmb = configServico.tpAmb, + versao = configServico.VersaoLayout, chCTe = chave }; } - public static inutCTe CriaInutCTe(ConfigInutiliza configInutiliza) + public static inutCTe CriaInutCTe(ConfigInutiliza configInutiliza, ConfiguracaoServico configuracaoServico = null) { if (configInutiliza == null) throw new ArgumentNullException("Preciso de uma configuração de inutilização"); - var configuracaoServico = ConfiguracaoServico.Instancia; + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; var id = new StringBuilder("ID"); - id.Append(configuracaoServico.cUF.GetCodigoIbgeEmString()); + id.Append(configServico.cUF.GetCodigoIbgeEmString()); id.Append(configInutiliza.Cnpj); id.Append((byte) configInutiliza.ModeloDocumento); id.Append(configInutiliza.Serie.ToString("D3")); @@ -88,12 +101,12 @@ public static inutCTe CriaInutCTe(ConfigInutiliza configInutiliza) return new inutCTe { - versao = configuracaoServico.VersaoLayout, + versao = configServico.VersaoLayout, infInut = new infInutEnv { Id = id.ToString(), - tpAmb = configuracaoServico.tpAmb, - cUF = configuracaoServico.cUF, + tpAmb = configServico.tpAmb, + cUF = configServico.cUF, CNPJ = configInutiliza.Cnpj, ano = configInutiliza.Ano, nCTIni = configInutiliza.NumeroInicial, @@ -105,14 +118,14 @@ public static inutCTe CriaInutCTe(ConfigInutiliza configInutiliza) }; } - public static consReciCTe CriaConsReciCTe(string recibo) + public static consReciCTe CriaConsReciCTe(string recibo, ConfiguracaoServico configuracaoServico = null) { - var configuracaoServico = ConfiguracaoServico.Instancia; + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; return new consReciCTe { - tpAmb = configuracaoServico.tpAmb, - versao = configuracaoServico.VersaoLayout, + tpAmb = configServico.tpAmb, + versao = configServico.VersaoLayout, nRec = recibo }; } @@ -134,11 +147,29 @@ public static evCCeCTe CriaEvCCeCTe(List infCorrecaos) }; } - public static enviCTe CriaEnviCTe(int lote, List cteEletronicoList) + public static evPrestDesacordo CriaEvPrestDesacordo(string indicadorDesacordo, string observacao, ConfiguracaoServico configuracaoServico = null) { - var configuracaoServico = ConfiguracaoServico.Instancia; + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var evPrestDesacordo = new evPrestDesacordo + { + indDesacordoOper = indicadorDesacordo, + xObs = observacao + }; + + if (configServico.cUF == Estado.MT)//sem acentuação issue #1386 + { + evPrestDesacordo.descEvento = "Prestacao do Servico em Desacordo"; + } - return new enviCTe(configuracaoServico.VersaoLayout, lote, cteEletronicoList); + return evPrestDesacordo; + } + + public static enviCTe CriaEnviCTe(int lote, List cteEletronicoList, ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + return new enviCTe(configServico.ObterVersaoLayoutValida(), lote, cteEletronicoList); } } } \ No newline at end of file diff --git a/CTe.Servicos/Factory/WsdlFactory.cs b/CTe.Servicos/Factory/WsdlFactory.cs index 4977e2a7e..fb633d0e2 100644 --- a/CTe.Servicos/Factory/WsdlFactory.cs +++ b/CTe.Servicos/Factory/WsdlFactory.cs @@ -34,81 +34,134 @@ using CTe.Classes; using CTe.Classes.Ext; using CTe.Servicos.Enderecos.Helpers; -using CTe.Wsdl.Configuracao; using CTe.Wsdl.ConsultaProtocolo; +using CTe.Wsdl.DistribuicaoDFe; using CTe.Wsdl.Evento; using CTe.Wsdl.Inutilizacao; using CTe.Wsdl.Recepcao; using CTe.Wsdl.RetRecepcao; using CTe.Wsdl.Status; using DFe.Classes.Extensoes; +using CTe.CTeOSDocumento.Common; +using CTe.Wsdl.ConsultaProtocolo.V4; +using CTe.Wsdl.Evento.V4; +using CTe.Wsdl.Recepcao.Sincrono; +using System.Security.Cryptography.X509Certificates; namespace CTe.Servicos.Factory { public class WsdlFactory { - public static CteStatusServico CriaWsdlCteStatusServico() + public static CteStatusServico CriaWsdlCteStatusServico(ConfiguracaoServico configuracaoServico = null, X509Certificate2 certificado = null) { - var url = UrlHelper.ObterUrlServico().CteStatusServico; + var url = UrlHelper.ObterUrlServico(configuracaoServico).CteStatusServico; - var configuracaoWsdl = CriaConfiguracao(url); + var configuracaoWsdl = CriaConfiguracao(url, configuracaoServico, certificado); return new CteStatusServico(configuracaoWsdl); } - public static CteConsulta CriaWsdlConsultaProtocolo() + public static CteConsulta CriaWsdlConsultaProtocolo(ConfiguracaoServico configuracaoServico = null, X509Certificate2 certificado = null) { - var url = UrlHelper.ObterUrlServico().CteConsulta; + var url = UrlHelper.ObterUrlServico(configuracaoServico).CteConsulta; - var configuracaoWsdl = CriaConfiguracao(url); + var configuracaoWsdl = CriaConfiguracao(url, configuracaoServico, certificado); return new CteConsulta(configuracaoWsdl); } - public static CteInutilizacao CriaWsdlCteInutilizacao() + public static CteConsultaV4 CriaWsdlConsultaProtocoloV4(ConfiguracaoServico configuracaoServico = null, X509Certificate2 certificado = null) { - var url = UrlHelper.ObterUrlServico().CteInutilizacao; + var url = UrlHelper.ObterUrlServico(configuracaoServico).CteConsulta; - var configuracaoWsdl = CriaConfiguracao(url); + var configuracaoWsdl = CriaConfiguracao(url, configuracaoServico, certificado); + + return new CteConsultaV4(configuracaoWsdl); + } + + public static CteInutilizacao CriaWsdlCteInutilizacao(ConfiguracaoServico configuracaoServico = null, X509Certificate2 certificado = null) + { + var url = UrlHelper.ObterUrlServico(configuracaoServico).CteInutilizacao; + + var configuracaoWsdl = CriaConfiguracao(url, configuracaoServico, certificado); return new CteInutilizacao(configuracaoWsdl); } - public static CteRetRecepcao CriaWsdlCteRetRecepcao() + public static CteRetRecepcao CriaWsdlCteRetRecepcao(ConfiguracaoServico configuracaoServico = null, X509Certificate2 certificado = null) { - var url = UrlHelper.ObterUrlServico().CteRetRecepcao; + var url = UrlHelper.ObterUrlServico(configuracaoServico).CteRetRecepcao; - var configuracaoWsdl = CriaConfiguracao(url); + var configuracaoWsdl = CriaConfiguracao(url, configuracaoServico, certificado); return new CteRetRecepcao(configuracaoWsdl); } - public static CteRecepcao CriaWsdlCteRecepcao() + public static CteRecepcao CriaWsdlCteRecepcao(ConfiguracaoServico configuracaoServico = null, X509Certificate2 certificado = null) { - var url = UrlHelper.ObterUrlServico().CteRecepcao; + var url = UrlHelper.ObterUrlServico(configuracaoServico).CteRecepcao; - var configuracaoWsdl = CriaConfiguracao(url); + var configuracaoWsdl = CriaConfiguracao(url, configuracaoServico, certificado); return new CteRecepcao(configuracaoWsdl); } - public static CteRecepcaoEvento CriaWsdlCteEvento() + public static CteRecepcaoSincronoV4 CriaWsdlCteRecepcaoSincronoV4(ConfiguracaoServico configuracaoServico = null, X509Certificate2 certificado = null) + { + var url = UrlHelper.ObterUrlServico(configuracaoServico).CteRecepcaoSinc; + + var configuracaoWsdl = CriaConfiguracao(url, configuracaoServico, certificado); + + return new CteRecepcaoSincronoV4(configuracaoWsdl); + } + public static CteRecepcaoSincronoOSV4 CriaWsdlCteRecepcaoSincronoOSV4(ConfiguracaoServico configuracaoServico = null, X509Certificate2 certificado = null) + { + var url = UrlHelper.ObterUrlServico(configuracaoServico).CteRecepcaoOs; + + var configuracaoWsdl = CriaConfiguracao(url, configuracaoServico, certificado); + + return new CteRecepcaoSincronoOSV4(configuracaoWsdl); + } + + public static CteRecepcaoEvento CriaWsdlCteEvento(ConfiguracaoServico configuracaoServico = null, X509Certificate2 certificado = null) { - var url = UrlHelper.ObterUrlServico().CteRecepcaoEvento; + var url = UrlHelper.ObterUrlServico(configuracaoServico).CteRecepcaoEvento; - var configuracaoWsdl = CriaConfiguracao(url); + var configuracaoWsdl = CriaConfiguracao(url, configuracaoServico, certificado); return new CteRecepcaoEvento(configuracaoWsdl); } - private static WsdlConfiguracao CriaConfiguracao(string url) + public static CteRecepcaoEventoV4 CriaWsdlCteEventoV4(ConfiguracaoServico configuracaoServico = null, X509Certificate2 certificado = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var url = UrlHelper.ObterUrlServico(configServico).CteRecepcaoEvento; + + var configuracaoWsdl = CriaConfiguracao(url, configServico, certificado); + + return new CteRecepcaoEventoV4(configuracaoWsdl); + } + + + public static CTeDistDFeInteresse CriaWsdlCTeDistDFeInteresse(ConfiguracaoServico configuracaoServico = null, X509Certificate2 certificado = null) + { + var url = UrlHelper.ObterUrlServico(configuracaoServico).CTeDistribuicaoDFe; + + var configuracaoWsdl = CriaConfiguracao(url, configuracaoServico, certificado); + + return new CTeDistDFeInteresse(configuracaoWsdl); + } + + + private static WsdlConfiguracao CriaConfiguracao(string url, ConfiguracaoServico configuracaoServico, X509Certificate2 certificado) { - var configuracaoServico = ConfiguracaoServico.Instancia; + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; - var codigoEstado = configuracaoServico.cUF.GetCodigoIbgeEmString(); - var certificadoDigital = configuracaoServico.X509Certificate2; - var versaoEmString = configuracaoServico.VersaoLayout.GetString(); - var timeOut = configuracaoServico.TimeOut; + var codigoEstado = configServico.cUF.GetCodigoIbgeEmString(); + var certificadoDigital = certificado ?? configServico.X509Certificate2; + var versaoEmString = configServico.VersaoLayout.GetString(); + var timeOut = configServico.TimeOut; return new WsdlConfiguracao { diff --git a/CTe.Servicos/Inutilizacao/InutilizacaoServico.cs b/CTe.Servicos/Inutilizacao/InutilizacaoServico.cs index ded65e17a..361674039 100644 --- a/CTe.Servicos/Inutilizacao/InutilizacaoServico.cs +++ b/CTe.Servicos/Inutilizacao/InutilizacaoServico.cs @@ -32,9 +32,11 @@ /********************************************************************************/ using System; +using System.Threading.Tasks; +using CTe.Classes; using CTe.Classes.Servicos.Inutilizacao; using CTe.Servicos.Factory; -using CTe.Utils.Extencoes; +using CTe.Utils.Extensoes; using CTe.Utils.Inutilizacao; using DFe.Classes.Flags; @@ -74,18 +76,38 @@ public InutilizacaoServico(ConfigInutiliza configInutiliza) _configInutiliza = configInutiliza; } - public retInutCTe Inutilizar() + public retInutCTe Inutilizar(ConfiguracaoServico configuracaoServico = null) { - var inutCte = ClassesFactory.CriaInutCTe(_configInutiliza); - inutCte.Assinar(); - inutCte.ValidarShcema(); - inutCte.SalvarXmlEmDisco(); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; - var webService = WsdlFactory.CriaWsdlCteInutilizacao(); + var inutCte = ClassesFactory.CriaInutCTe(_configInutiliza, configServico); + inutCte.Assinar(configServico); + inutCte.ValidarSchema(configServico); + inutCte.SalvarXmlEmDisco(configServico); + + var webService = WsdlFactory.CriaWsdlCteInutilizacao(configServico); var retornoXml = webService.cteInutilizacaoCT(inutCte.CriaRequestWs()); var retorno = retInutCTe.LoadXml(retornoXml.OuterXml, inutCte); - retorno.SalvarXmlEmDisco(inutCte.infInut.Id.Substring(2)); + retorno.SalvarXmlEmDisco(inutCte.infInut.Id.Substring(2), configServico); + + return retorno; + } + + public async Task InutilizarAsync(ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var inutCte = ClassesFactory.CriaInutCTe(_configInutiliza, configServico); + inutCte.Assinar(configServico); + inutCte.ValidarSchema(configServico); + inutCte.SalvarXmlEmDisco(configServico); + + var webService = WsdlFactory.CriaWsdlCteInutilizacao(configServico); + var retornoXml = await webService.cteInutilizacaoCTAsync(inutCte.CriaRequestWs()); + + var retorno = retInutCTe.LoadXml(retornoXml.OuterXml, inutCte); + retorno.SalvarXmlEmDisco(inutCte.infInut.Id.Substring(2), configServico); return retorno; } diff --git a/CTe.Servicos/Properties/AssemblyInfo.cs b/CTe.Servicos/Properties/AssemblyInfo.cs deleted file mode 100644 index f20c2e056..000000000 --- a/CTe.Servicos/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("CTe.Servicos")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("CTe.Servicos")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("63227402-2b1e-4bc7-a6df-362129923cf6")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CTe.Servicos/Recepcao/ServicoCTeOSRecepcao.cs b/CTe.Servicos/Recepcao/ServicoCTeOSRecepcao.cs new file mode 100644 index 000000000..61c31cc20 --- /dev/null +++ b/CTe.Servicos/Recepcao/ServicoCTeOSRecepcao.cs @@ -0,0 +1,36 @@ +using CTe.Classes; +using CTe.CTeOSDocumento.CTe.CTeOS.Extensoes; +using CTe.CTeOSDocumento.CTe.CTeOS.Servicos.Autorizacao; +using CTe.Servicos.Enderecos.Helpers; +using CTe.Servicos.Factory; +using CTe.Utils.CTe; +using System.Text; +using CTeEletronico = CTe.CTeOSClasses.CTeOS; + +namespace CTe.Servicos.Recepcao +{ + public class ServicoCTeOSRecepcao + { + public retCTeOS CTeRecepcaoSincronoV4(CTeEletronico cte, ConfiguracaoServico configuracaoServico = null) + { + var instanciaConfiguracao = configuracaoServico ?? ConfiguracaoServico.Instancia; + + cte.InfCte.ide.tpEmis = instanciaConfiguracao.TipoEmissao; + cte.Assina(instanciaConfiguracao); + cte.infCTeSupl = cte.QrCode(instanciaConfiguracao.X509Certificate2, Encoding.UTF8, instanciaConfiguracao.IsAdicionaQrCode, UrlHelper.ObterUrlQrCode(instanciaConfiguracao)); + cte.SalvarXmlEmDisco(instanciaConfiguracao); //salva em disco antes de validas os schemas, facilitando encontrar possíveis erros + cte.ValidaSchema(instanciaConfiguracao); + cte.SalvarXmlEmDisco(instanciaConfiguracao); + + var webService = WsdlFactory.CriaWsdlCteRecepcaoSincronoOSV4(configuracaoServico); + + var retornoXml = webService.CTeRecepcaoSincV4(cte.CriaRequestWs(configuracaoServico)); + + var retorno = retCTeOS.LoadXml(retornoXml.OuterXml, cte); + + retorno.SalvarXmlEmDisco(cte.Chave(), configuracaoServico); + + return retorno; + } + } +} diff --git a/CTe.Servicos/Recepcao/ServicoCTeRecepcao.cs b/CTe.Servicos/Recepcao/ServicoCTeRecepcao.cs index 35b8037ef..7ac0ee9f0 100644 --- a/CTe.Servicos/Recepcao/ServicoCTeRecepcao.cs +++ b/CTe.Servicos/Recepcao/ServicoCTeRecepcao.cs @@ -33,8 +33,12 @@ using System; using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; using CTe.Classes; using CTe.Classes.Servicos.Recepcao; +using CTe.Classes.Servicos.Tipos; +using CTe.Servicos.Enderecos.Helpers; using CTe.Servicos.Factory; using CTe.Utils.CTe; using CTe.Utils.Recepcao; @@ -47,11 +51,86 @@ public class ServicoCTeRecepcao { public event EventHandler AntesDeEnviar; - public retEnviCte CTeRecepcao(int lote, List cteEletronicosList) + public retEnviCte CTeRecepcao(int lote, List cteEletronicosList, ConfiguracaoServico configuracaoServico = null) { - var instanciaConfiguracao = ConfiguracaoServico.Instancia; + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; - var enviCte = ClassesFactory.CriaEnviCTe(lote, cteEletronicosList); + var enviCte = PreparaEnvioCTe(lote, cteEletronicosList, configServico); + + var webService = WsdlFactory.CriaWsdlCteRecepcao(configServico); + + OnAntesDeEnviar(enviCte); + + var retornoXml = webService.cteRecepcaoLote(enviCte.CriaRequestWs(configServico)); + + var retorno = retEnviCte.LoadXml(retornoXml.OuterXml, enviCte); + retorno.SalvarXmlEmDisco(configServico); + + return retorno; + } + + public async Task CTeRecepcaoAsync(int lote, List cteEletronicosList, ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var enviCte = PreparaEnvioCTe(lote, cteEletronicosList, configServico); + + var webService = WsdlFactory.CriaWsdlCteRecepcao(configServico); + + OnAntesDeEnviar(enviCte); + + var retornoXml = await webService.cteRecepcaoLoteAsync(enviCte.CriaRequestWs(configServico)); + + var retorno = retEnviCte.LoadXml(retornoXml.OuterXml, enviCte); + retorno.SalvarXmlEmDisco(configServico); + + return retorno; + } + + public retCTe CTeRecepcaoSincronoV4(CTeEletronico cte, ConfiguracaoServico configuracaoServico = null) + { + var instanciaConfiguracao = configuracaoServico ?? ConfiguracaoServico.Instancia; + + if (instanciaConfiguracao.tpAmb == TipoAmbiente.Homologacao && instanciaConfiguracao.VersaoLayout == versao.ve300) + { + const string razaoSocial = "CT-E EMITIDO EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"; + + cte.infCte.rem.xNome = razaoSocial; + cte.infCte.dest.xNome = razaoSocial; + } + + if (instanciaConfiguracao.tpAmb == TipoAmbiente.Homologacao && instanciaConfiguracao.VersaoLayout == versao.ve400) + { + const string razaoSocial = "CTE EMITIDO EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"; + + cte.infCte.rem.xNome = razaoSocial; + cte.infCte.dest.xNome = razaoSocial; + } + + cte.infCte.ide.tpEmis = instanciaConfiguracao.TipoEmissao; + cte.Assina(instanciaConfiguracao); + cte.infCTeSupl = cte.QrCode(instanciaConfiguracao.X509Certificate2, Encoding.UTF8, instanciaConfiguracao.IsAdicionaQrCode, UrlHelper.ObterUrlQrCode(instanciaConfiguracao)); + cte.SalvarXmlEmDisco(instanciaConfiguracao); //salva em disco antes de validas os schemas, facilitando encontrar possíveis erros + cte.ValidaSchema(instanciaConfiguracao); + cte.SalvarXmlEmDisco(instanciaConfiguracao); + + var webService = WsdlFactory.CriaWsdlCteRecepcaoSincronoV4(instanciaConfiguracao); + + //OnAntesDeEnviar(enviCte); + + var retornoXml = webService.CTeRecepcaoSincV4(cte.CriaRequestWs(instanciaConfiguracao)); + + var retorno = retCTe.LoadXml(retornoXml.OuterXml, cte); + retorno.SalvarXmlEmDisco(cte.Chave(), instanciaConfiguracao); + + return retorno; + } + + private static enviCTe PreparaEnvioCTe(int lote, List cteEletronicosList, ConfiguracaoServico configuracaoServico = null) + { + var instanciaConfiguracao = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var enviCte = ClassesFactory.CriaEnviCTe(lote, cteEletronicosList, instanciaConfiguracao); if (instanciaConfiguracao.tpAmb == TipoAmbiente.Homologacao) { @@ -67,24 +146,21 @@ public retEnviCte CTeRecepcao(int lote, List cteEletronicosList) foreach (var cte in enviCte.CTe) { - cte.Assina(); - cte.ValidaSchema(); - cte.SalvarXmlEmDisco(); - } + cte.infCte.ide.tpEmis = instanciaConfiguracao.TipoEmissao; + cte.Assina(instanciaConfiguracao); + cte.infCTeSupl = cte.QrCode(instanciaConfiguracao.X509Certificate2, Encoding.UTF8, instanciaConfiguracao.IsAdicionaQrCode, UrlHelper.ObterUrlQrCode(instanciaConfiguracao)); - enviCte.ValidaSchema(); - enviCte.SalvarXmlEmDisco(); + if (configuracaoServico.IsValidaSchemas) + cte.ValidaSchema(instanciaConfiguracao); - var webService = WsdlFactory.CriaWsdlCteRecepcao(); - - OnAntesDeEnviar(enviCte); - - var retornoXml = webService.cteRecepcaoLote(enviCte.CriaRequestWs()); + cte.SalvarXmlEmDisco(instanciaConfiguracao); + } - var retorno = retEnviCte.LoadXml(retornoXml.OuterXml, enviCte); - retorno.SalvarXmlEmDisco(); + if (configuracaoServico.IsValidaSchemas) + enviCte.ValidaSchema(instanciaConfiguracao); - return retorno; + enviCte.SalvarXmlEmDisco(instanciaConfiguracao); + return enviCte; } protected virtual void OnAntesDeEnviar(enviCTe enviCTe) diff --git a/CTe.Utils/CTe.Utils.csproj b/CTe.Utils/CTe.Utils.csproj index 678e2ddcc..6791d0521 100644 --- a/CTe.Utils/CTe.Utils.csproj +++ b/CTe.Utils/CTe.Utils.csproj @@ -1,91 +1,13 @@ - - - + + - Debug - AnyCPU - {21A894EC-B79E-4936-BFF3-ABEAD2E5C44F} - Library - Properties - CTe.Utils - CTe.Utils - v4.5 - 512 - + net462;netstandard2.0;net6.0 + - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - {C86E3921-F0B8-4BFE-9EF1-0E9084326B13} - CTe.Classes - - - {9984EC15-18E1-4A87-B4DB-18AC913DC4E8} - DFe.Classes - - - {B4E1A7A6-5D66-4326-8A8D-39338E6FC84C} - DFe.Utils - + + - - - - \ No newline at end of file + + diff --git a/CTe.Utils/CTe.Utils.csproj.DotSettings b/CTe.Utils/CTe.Utils.csproj.DotSettings deleted file mode 100644 index 662f95686..000000000 --- a/CTe.Utils/CTe.Utils.csproj.DotSettings +++ /dev/null @@ -1,2 +0,0 @@ - - CSharp50 \ No newline at end of file diff --git a/CTe.Utils/CTe/ExCteOSProc.cs b/CTe.Utils/CTe/ExCteOSProc.cs new file mode 100644 index 000000000..c990a2edf --- /dev/null +++ b/CTe.Utils/CTe/ExCteOSProc.cs @@ -0,0 +1,101 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.IO; +using CTe.Classes; +using DFe.Utils; +using cteOSProc = CTe.Classes.cteOSProc; + +namespace CTe.Utils.CTe +{ + public static class ExtCteOSProc + { + /// + /// Carrega um arquivo XML para um objeto da classe cteOSProc + /// + /// + /// arquivo XML + /// Retorna um cteOSProc carregada com os dados do XML + public static cteOSProc CarregarDeArquivoXml(this cteOSProc cteOSProc, string arquivoXml) + { + return FuncoesXml.ArquivoXmlParaClasse(arquivoXml); + } + + /// + /// Converte o objeto cteOSProc para uma string no formato XML + /// + /// + /// Retorna uma string no formato XML com os dados do cteOSProc + public static string ObterXmlString(this cteOSProc cteOSProc) + { + return FuncoesXml.ClasseParaXmlString(cteOSProc); + } + + /// + /// Coverte uma string XML no formato cteOSProc para um objeto cteOSProc + /// + /// + /// + /// Retorna um objeto do tipo cteOSProc + public static cteOSProc CarregarDeXmlString(this cteOSProc cteOSProc, string xmlString) + { + var s = FuncoesXml.ObterNodeDeStringXml(typeof(cteOSProc).Name, xmlString); + return FuncoesXml.XmlStringParaClasse(s); + } + + /// + /// Grava os dados do objeto cteOSProc em um arquivo XML + /// + /// Objeto cteOSProc + /// Diretório com nome do arquivo a ser gravado + public static void SalvarArquivoXml(this cteOSProc cteOSProc, string arquivoXml) + { + FuncoesXml.ClasseParaArquivoXml(cteOSProc, arquivoXml); + } + + public static void SalvarXmlEmDisco(this cteOSProc cteOSProc, ConfiguracaoServico configuracaoServico = null) + { + if (cteOSProc == null) return; + + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + if (instanciaServico.NaoSalvarXml()) return; + + var caminhoXml = instanciaServico.DiretorioSalvarXml; + + var arquivoSalvar = Path.Combine(caminhoXml, cteOSProc.CTeOS.Chave() + "-cteOSProc.xml"); + + FuncoesXml.ClasseParaArquivoXml(cteOSProc, arquivoSalvar); + } + } +} \ No newline at end of file diff --git a/CTe.Utils/CTe/ExCteProc.cs b/CTe.Utils/CTe/ExCteProc.cs index ca3ffd44c..7b8b5d968 100644 --- a/CTe.Utils/CTe/ExCteProc.cs +++ b/CTe.Utils/CTe/ExCteProc.cs @@ -31,8 +31,8 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.IO; using CTe.Classes; -using CTe.Utils.CTe; using DFe.Utils; using cteProc = CTe.Classes.cteProc; @@ -83,17 +83,17 @@ public static void SalvarArquivoXml(this cteProc cteProc, string arquivoXml) FuncoesXml.ClasseParaArquivoXml(cteProc, arquivoXml); } - public static void SalvarXmlEmDisco(this cteProc cteProc) + public static void SalvarXmlEmDisco(this cteProc cteProc, ConfiguracaoServico configuracaoServico = null) { if (cteProc == null) return; - var instanciaServico = ConfiguracaoServico.Instancia; + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; if (instanciaServico.NaoSalvarXml()) return; var caminhoXml = instanciaServico.DiretorioSalvarXml; - var arquivoSalvar = caminhoXml + @"\" + cteProc.CTe.Chave() + "-cteproc.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, cteProc.CTe.Chave() + "-cteproc.xml"); FuncoesXml.ClasseParaArquivoXml(cteProc, arquivoSalvar); } diff --git a/CTe.Utils/CTe/ExtCTe.cs b/CTe.Utils/CTe/ExtCTe.cs index 2cc55b1c1..c43e6b003 100644 --- a/CTe.Utils/CTe/ExtCTe.cs +++ b/CTe.Utils/CTe/ExtCTe.cs @@ -32,11 +32,18 @@ /********************************************************************************/ using System; +using System.IO; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Xml; using CTe.Classes; +using CTe.Classes.Informacoes; using CTe.Classes.Informacoes.infCTeNormal.infModals; using CTe.Classes.Informacoes.Tipos; +using CTe.Classes.Servicos.Recepcao; using CTe.Classes.Servicos.Tipos; using CTe.Utils.Validacao; +using DFe.Classes.Entidades; using DFe.Utils; using DFe.Utils.Assinatura; using CteEletronica = CTe.Classes.CTe; @@ -53,7 +60,7 @@ public static class ExtCTe /// Retorna uma NFe carregada com os dados do XML public static CteEletronica CarregarDeArquivoXml(this CteEletronica cte, string arquivoXml) { - var s = FuncoesXml.ObterNodeDeArquivoXml(typeof (CteEletronica).Name, arquivoXml); + var s = FuncoesXml.ObterNodeDeArquivoXml(typeof(CteEletronica).Name, arquivoXml); return FuncoesXml.XmlStringParaClasse(s); } @@ -75,7 +82,7 @@ public static string ObterXmlString(this CteEletronica cte) /// Retorna um objeto do tipo CTe public static CteEletronica CarregarDeXmlString(this CteEletronica cte, string xmlString) { - var s = FuncoesXml.ObterNodeDeStringXml(typeof (CteEletronica).Name, xmlString); + var s = FuncoesXml.ObterNodeDeStringXml(typeof(CteEletronica).Name, xmlString); return FuncoesXml.XmlStringParaClasse(s); } @@ -83,20 +90,29 @@ public static CteEletronica CarregarDeXmlString(this CteEletronica cte, string x /// Gera id, cdv, assina e faz alguns ajustes nos dados da classe CTe antes de utilizá-la /// /// + /// /// Retorna um objeto CTe devidamente tradado - public static void ValidaSchema(this CteEletronica cte) + public static void ValidaSchema(this CteEletronica cte, ConfiguracaoServico configuracaoServico = null) { if (cte == null) throw new ArgumentNullException("cte"); var xmlValidacao = cte.ObterXmlString(); + var servicoInstancia = configuracaoServico ?? ConfiguracaoServico.Instancia; + + if (!servicoInstancia.IsValidaSchemas) + return; + switch (cte.infCte.versao) { case versao.ve200: - Validador.Valida(xmlValidacao, "cte_v2.00.xsd"); + Validador.Valida(xmlValidacao, "cte_v2.00.xsd", servicoInstancia); break; case versao.ve300: - Validador.Valida(xmlValidacao, "cte_v3.00.xsd"); + Validador.Valida(xmlValidacao, "cte_v3.00.xsd", servicoInstancia); + break; + case versao.ve400: + Validador.Valida(xmlValidacao, "cte_v4.00.xsd", servicoInstancia); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + @@ -104,7 +120,7 @@ public static void ValidaSchema(this CteEletronica cte) "versão 2.00 é 3.00"); } - if (cte.infCte.ide.tpCTe != tpCTe.Anulacao && cte.infCte.ide.tpCTe != tpCTe.Complemento) // Ct-e do Tipo Anulação/Complemento não tem Informações do Modal + if (cte.infCte.ide.tpCTe != tpCTe.Anulacao && cte.infCte.ide.tpCTe != tpCTe.Complemento) // Ct-e do Tipo Anulação/Complemento não tem Informações do Modal { var xmlModal = FuncoesXml.ClasseParaXmlString(cte.infCte.infCTeNorm.infModal); @@ -113,68 +129,104 @@ public static void ValidaSchema(this CteEletronica cte) case versaoModal.veM200: if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(aereo)) { - Validador.Valida(xmlModal, "cteModalAereo_v2.00.xsd"); + Validador.Valida(xmlModal, "cteModalAereo_v2.00.xsd", servicoInstancia); } if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(aquav)) { - Validador.Valida(xmlModal, "cteModalAquaviario_v2.00.xsd"); + Validador.Valida(xmlModal, "cteModalAquaviario_v2.00.xsd", servicoInstancia); } if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(duto)) { - Validador.Valida(xmlModal, "cteModalDutoviario_v2.00.xsd"); + Validador.Valida(xmlModal, "cteModalDutoviario_v2.00.xsd", servicoInstancia); } if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(ferrov)) { - Validador.Valida(xmlModal, "cteModalFerroviario_v2.00.xsd"); + Validador.Valida(xmlModal, "cteModalFerroviario_v2.00.xsd", servicoInstancia); } if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(rodo)) { - Validador.Valida(xmlModal, "cteModalRodoviario_v2.00.xsd"); + Validador.Valida(xmlModal, "cteModalRodoviario_v2.00.xsd", servicoInstancia); } if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(multimodal)) { - Validador.Valida(xmlModal, "cteMultimodal_v2.00.xsd"); + Validador.Valida(xmlModal, "cteMultimodal_v2.00.xsd", servicoInstancia); } break; case versaoModal.veM300: if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(aereo)) { - Validador.Valida(xmlModal, "cteModalAereo_v3.00.xsd"); + Validador.Valida(xmlModal, "cteModalAereo_v3.00.xsd", servicoInstancia); + } + + if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(aquav)) + { + Validador.Valida(xmlModal, "cteModalAquaviario_v3.00.xsd", servicoInstancia); + } + + if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(duto)) + { + Validador.Valida(xmlModal, "cteModalDutoviario_v3.00.xsd", servicoInstancia); + } + + if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(ferrov)) + { + Validador.Valida(xmlModal, "cteModalFerroviario_v3.00.xsd", servicoInstancia); + } + + if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(rodo)) + { + Validador.Valida(xmlModal, "cteModalRodoviario_v3.00.xsd", servicoInstancia); + } + + if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(multimodal)) + { + Validador.Valida(xmlModal, "cteMultimodal_v3.00.xsd", servicoInstancia); + } + + if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(rodoOS)) + { + Validador.Valida(xmlModal, "cteModalRodoviarioOS_v3.00.xsd", servicoInstancia); + } + break; + case versaoModal.veM400: + if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(aereo)) + { + Validador.Valida(xmlModal, "cteModalAereo_v4.00.xsd", servicoInstancia); } if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(aquav)) { - Validador.Valida(xmlModal, "cteModalAquaviario_v3.00.xsd"); + Validador.Valida(xmlModal, "cteModalAquaviario_v4.00.xsd", servicoInstancia); } if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(duto)) { - Validador.Valida(xmlModal, "cteModalDutoviario_v3.00.xsd"); + Validador.Valida(xmlModal, "cteModalDutoviario_v4.00.xsd", servicoInstancia); } if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(ferrov)) { - Validador.Valida(xmlModal, "cteModalFerroviario_v3.00.xsd"); + Validador.Valida(xmlModal, "cteModalFerroviario_v4.00.xsd", servicoInstancia); } if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(rodo)) { - Validador.Valida(xmlModal, "cteModalRodoviario_v3.00.xsd"); + Validador.Valida(xmlModal, "cteModalRodoviario_v4.00.xsd", servicoInstancia); } if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(multimodal)) { - Validador.Valida(xmlModal, "cteMultimodal_v3.00.xsd"); + Validador.Valida(xmlModal, "cteMultimodal_v4.00.xsd", servicoInstancia); } if (cte.infCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(rodoOS)) { - Validador.Valida(xmlModal, "cteModalRodoviarioOS_v.3.00.xsd"); + Validador.Valida(xmlModal, "cteModalRodoviarioOS_v4.00.xsd", servicoInstancia); } break; default: @@ -189,12 +241,13 @@ public static void ValidaSchema(this CteEletronica cte) /// Assina um objeto CTe /// /// + /// /// Retorna um objeto do tipo CTe assinado - public static void Assina(this CteEletronica cte) + public static void Assina(this CteEletronica cte, ConfiguracaoServico configuracaoServico = null) { if (cte == null) throw new ArgumentNullException("cte"); - var configuracaoServico = ConfiguracaoServico.Instancia; + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; var modeloDocumentoFiscal = cte.infCte.ide.mod; var tipoEmissao = (int)cte.infCte.ide.tpEmis; @@ -208,10 +261,10 @@ public static void Assina(this CteEletronica cte) var dadosChave = ChaveFiscal.ObterChave(estado, dataEHoraEmissao, cnpj, modeloDocumentoFiscal, serie, numeroDocumento, tipoEmissao, codigoNumerico); cte.infCte.Id = "CTe" + dadosChave.Chave; - cte.infCte.versao = configuracaoServico.VersaoLayout; + cte.infCte.versao = configServico.ObterVersaoLayoutValida(); cte.infCte.ide.cDV = dadosChave.DigitoVerificador; - var assinatura = AssinaturaDigital.Assina(cte, cte.infCte.Id, configuracaoServico.X509Certificate2); + var assinatura = AssinaturaDigital.Assina(cte, cte.infCte.Id, configServico.X509Certificate2); cte.Signature = assinatura; } @@ -222,19 +275,80 @@ public static string Chave(this CteEletronica cte) return chave; } - public static void SalvarXmlEmDisco(this CteEletronica cte) + public static infCTeSupl QrCode(this CteEletronica cte, X509Certificate2 certificadoDigital, + Encoding encoding, bool isAdicionaQrCode, string url) { - var instanciaServico = ConfiguracaoServico.Instancia; + if (isAdicionaQrCode == false) return null; + + if (encoding == null) + encoding = Encoding.UTF8; + + var chave = cte.infCte.Id.Substring(3, 44); + + var qrCode = new StringBuilder(url); + qrCode.Append("?"); + qrCode.Append("chCTe=").Append(chave); + qrCode.Append("&"); + qrCode.Append("tpAmb=").Append((int)cte.infCte.ide.tpAmb); + + if (cte.infCte.ide.tpEmis != tpEmis.teNormal + && cte.infCte.ide.tpEmis != tpEmis.teSVCRS + && cte.infCte.ide.tpEmis != tpEmis.teSVCSP + ) + { + var assinatura = Convert.ToBase64String(AssinaturaDigital.CriarAssinaturaPkcs1(certificadoDigital, encoding.GetBytes(chave))); + qrCode.Append("&sign="); + qrCode.Append(assinatura); + } + + return new infCTeSupl + { + qrCodCTe = qrCode.ToString() + }; + } + + public static void SalvarXmlEmDisco(this CteEletronica cte, ConfiguracaoServico configuracaoServico = null) + { + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; if (instanciaServico.NaoSalvarXml()) return; var caminhoXml = instanciaServico.DiretorioSalvarXml; - var arquivoSalvar = caminhoXml + @"\" + cte.Chave() + "-cte.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, cte.Chave() + "-cte.xml"); FuncoesXml.ClasseParaArquivoXml(cte, arquivoSalvar); } + public static XmlDocument CriaRequestWs(this CteEletronica cte, ConfiguracaoServico configuracaoServico = null) + { + var request = new XmlDocument(); + var xml = cte.ObterXmlString(); + + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + if (instanciaServico.cUF == Estado.PR + || instanciaServico.cUF == Estado.MT) + //Caso o lote seja enviado para o PR, colocar o namespace nos elementos do lote, pois o serviço do PR o exige, conforme https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe/issues/456 + xml = xml.Replace("", ""); + + request.LoadXml(xml); + + return request; + } + + public static void SalvarXmlEmDisco(this retCTe retEnviCte, string chave, ConfiguracaoServico configuracaoServico = null) + { + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + if (instanciaServico.NaoSalvarXml()) return; + + var caminhoXml = instanciaServico.DiretorioSalvarXml; + + var arquivoSalvar = Path.Combine(caminhoXml, chave + "-cte.xml"); + + FuncoesXml.ClasseParaArquivoXml(retEnviCte, arquivoSalvar); + } } } \ No newline at end of file diff --git a/CTe.Utils/CTe/ExtCTeOs.cs b/CTe.Utils/CTe/ExtCTeOs.cs new file mode 100644 index 000000000..437f6e799 --- /dev/null +++ b/CTe.Utils/CTe/ExtCTeOs.cs @@ -0,0 +1,223 @@ +using CTe.Classes; +using CTe.Classes.Informacoes; +using CTe.Classes.Informacoes.infCTeNormal.infModals; +using CTe.Classes.Informacoes.Tipos; +using CTe.CTeOSDocumento.CTe.CTeOS.Servicos.Autorizacao; +using CTe.Utils.Validacao; +using DFe.Classes.Entidades; +using DFe.Utils; +using DFe.Utils.Assinatura; +using System; +using System.IO; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Xml; +using CteEletronica = CTe.CTeOSClasses.CTeOS; + +namespace CTe.Utils.CTe +{ + public static class ExtCTeOs + { + /// + /// Assina um objeto CTe OS + /// + /// + /// + /// Retorna um objeto do tipo CTe assinado + public static void Assina(this CteEletronica cte, ConfiguracaoServico configuracaoServico = null) + { + if (cte == null) throw new ArgumentNullException("cte"); + + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var modeloDocumentoFiscal = cte.InfCte.ide.mod; + var tipoEmissao = (int)cte.InfCte.ide.tpEmis; + var codigoNumerico = cte.InfCte.ide.cCT; + var estado = cte.InfCte.ide.cUF; + var dataEHoraEmissao = cte.InfCte.ide.dhEmi; + var cnpj = cte.InfCte.emit.CNPJ; + var numeroDocumento = cte.InfCte.ide.nCT; + int serie = cte.InfCte.ide.serie; + + var dadosChave = ChaveFiscal.ObterChave(estado, dataEHoraEmissao, cnpj, modeloDocumentoFiscal, serie, numeroDocumento, tipoEmissao, codigoNumerico); + + cte.InfCte.Id = "CTe" + dadosChave.Chave; + cte.InfCte.versao = DFe.Classes.Flags.VersaoServico.Versao400; + cte.InfCte.ide.cDV = dadosChave.DigitoVerificador; + + var assinatura = AssinaturaDigital.Assina(cte, cte.InfCte.Id, configServico.X509Certificate2); + + cte.Signature = assinatura; + } + + public static infCTeSupl QrCode(this CteEletronica cte, X509Certificate2 certificadoDigital, + Encoding encoding, bool isAdicionaQrCode, string url) + { + if (isAdicionaQrCode == false) return null; + + if (encoding == null) + encoding = Encoding.UTF8; + + var chave = cte.InfCte.Id.Substring(3, 44); + + var qrCode = new StringBuilder(url); + qrCode.Append("?"); + qrCode.Append("chCTe=").Append(chave); + qrCode.Append("&"); + qrCode.Append("tpAmb=").Append((int)cte.InfCte.ide.tpAmb); + + if (cte.InfCte.ide.tpEmis != tpEmis.teNormal + && cte.InfCte.ide.tpEmis != tpEmis.teSVCRS + && cte.InfCte.ide.tpEmis != tpEmis.teSVCSP + ) + { + var assinatura = Convert.ToBase64String(AssinaturaDigital.CriarAssinaturaPkcs1(certificadoDigital, encoding.GetBytes(chave))); + qrCode.Append("&sign="); + qrCode.Append(assinatura); + } + + return new infCTeSupl + { + qrCodCTe = qrCode.ToString() + }; + } + + public static string Chave(this CteEletronica cte) + { + var chave = cte.InfCte.Id.Substring(3, 44); + return chave; + } + + public static void SalvarXmlEmDisco(this CteEletronica cte, ConfiguracaoServico configuracaoServico = null) + { + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + if (instanciaServico.NaoSalvarXml()) return; + + var caminhoXml = instanciaServico.DiretorioSalvarXml; + + var arquivoSalvar = Path.Combine(caminhoXml, cte.Chave() + "-cte.xml"); + + FuncoesXml.ClasseParaArquivoXml(cte, arquivoSalvar); + } + + + /// + /// Converte o objeto CTe para uma string no formato XML + /// + /// + /// Retorna uma string no formato XML com os dados da CTe + public static string ObterXmlString(this CteEletronica cte) + { + return FuncoesXml.ClasseParaXmlString(cte); + } + + public static XmlDocument CriaRequestWs(this CteEletronica cte, ConfiguracaoServico configuracaoServico = null) + { + var request = new XmlDocument(); + + var xml = cte.ObterXmlString(); + + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + if (instanciaServico.cUF == Estado.PR + || instanciaServico.cUF == Estado.MT) + //Caso o lote seja enviado para o PR, colocar o namespace nos elementos do lote, pois o serviço do PR o exige, conforme https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe/issues/456 + xml = xml.Replace("", ""); + + request.LoadXml(xml); + + return request; + } + + /// + /// Gera id, cdv, assina e faz alguns ajustes nos dados da classe CTe antes de utilizá-la + /// + /// + /// + /// Retorna um objeto CTe devidamente tradado + public static void ValidaSchema(this CteEletronica cte, ConfiguracaoServico configuracaoServico = null) + { + if (cte == null) throw new ArgumentNullException("cte"); + + var xmlValidacao = cte.ObterXmlString(); + + var servicoInstancia = configuracaoServico ?? ConfiguracaoServico.Instancia; + if (!servicoInstancia.IsValidaSchemas) + return; + + switch (cte.InfCte.versao) + { + case DFe.Classes.Flags.VersaoServico.Versao400: + Validador.Valida(xmlValidacao, "cteOS_v4.00.xsd", servicoInstancia); + break; + default: + throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + + "a versão está inválida, somente é permitido " + + "versão 4.00"); + } + + if (cte.InfCte.ide.tpCTe != tpCTe.Complemento) // Ct-e do Tipo Anulação/Complemento não tem Informações do Modal + { + var xmlModal = FuncoesXml.ClasseParaXmlString(cte.InfCte.infCTeNorm.infModal); + + switch (cte.InfCte.infCTeNorm.infModal.versaoModal) + { + case versaoModal.veM400: + if (cte.InfCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(aereo)) + { + Validador.Valida(xmlModal, "cteModalAereo_v4.00.xsd", servicoInstancia); + } + + if (cte.InfCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(aquav)) + { + Validador.Valida(xmlModal, "cteModalAquaviario_v4.00.xsd", servicoInstancia); + } + + if (cte.InfCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(duto)) + { + Validador.Valida(xmlModal, "cteModalDutoviario_v4.00.xsd", servicoInstancia); + } + + if (cte.InfCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(ferrov)) + { + Validador.Valida(xmlModal, "cteModalFerroviario_v4.00.xsd", servicoInstancia); + } + + if (cte.InfCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(rodo)) + { + Validador.Valida(xmlModal, "cteModalRodoviario_v4.00.xsd", servicoInstancia); + } + + if (cte.InfCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(multimodal)) + { + Validador.Valida(xmlModal, "cteMultimodal_v4.00.xsd", servicoInstancia); + } + + if (cte.InfCte.infCTeNorm.infModal.ContainerModal.GetType() == typeof(rodoOS)) + { + Validador.Valida(xmlModal, "cteModalRodoviarioOS_v4.00.xsd", servicoInstancia); + } + break; + default: + throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + + "a versão está inválida, somente é permitido " + + "versão 4.00"); + } + } + } + + public static void SalvarXmlEmDisco(this retCTeOS retEnviCte, string chave, ConfiguracaoServico configuracaoServico = null) + { + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + if (instanciaServico.NaoSalvarXml()) return; + + var caminhoXml = instanciaServico.DiretorioSalvarXml; + + var arquivoSalvar = Path.Combine(caminhoXml, chave + "-cte.xml"); + + FuncoesXml.ClasseParaArquivoXml(retEnviCte, arquivoSalvar); + } + } +} diff --git a/CTe.Utils/CTe/ExtEnvCte.cs b/CTe.Utils/CTe/ExtEnvCte.cs index 40010ff2f..8b698b751 100644 --- a/CTe.Utils/CTe/ExtEnvCte.cs +++ b/CTe.Utils/CTe/ExtEnvCte.cs @@ -32,6 +32,7 @@ /********************************************************************************/ using System; +using System.IO; using System.Xml; using CTe.Classes; using CTe.Classes.Servicos.Recepcao; @@ -44,17 +45,20 @@ namespace CTe.Utils.CTe { public static class ExtEnvCte { - public static void ValidaSchema(this enviCTe enviCTe) + public static void ValidaSchema(this enviCTe enviCTe, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + var xmlValidacao = enviCTe.ObterXmlString(); switch (enviCTe.versao) { case versao.ve200: - Validador.Valida(xmlValidacao, "enviCTe_v2.00.xsd"); + Validador.Valida(xmlValidacao, "enviCTe_v2.00.xsd", configServico); break; + case versao.ve400: case versao.ve300: - Validador.Valida(xmlValidacao, "enviCTe_v3.00.xsd"); + Validador.Valida(xmlValidacao, "enviCTe_v3.00.xsd", configServico); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + @@ -73,26 +77,29 @@ public static string ObterXmlString(this enviCTe pedEnvio) return FuncoesXml.ClasseParaXmlString(pedEnvio); } - public static void SalvarXmlEmDisco(this enviCTe enviCte) + public static void SalvarXmlEmDisco(this enviCTe enviCte, ConfiguracaoServico configuracaoServico = null) { - var instanciaServico = ConfiguracaoServico.Instancia; + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; if (instanciaServico.NaoSalvarXml()) return; var caminhoXml = instanciaServico.DiretorioSalvarXml; - var arquivoSalvar = caminhoXml + @"\" + enviCte.idLote + "-env-lot.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, enviCte.idLote + "-env-lot.xml"); FuncoesXml.ClasseParaArquivoXml(enviCte, arquivoSalvar); } - public static XmlDocument CriaRequestWs(this enviCTe enviCTe) + public static XmlDocument CriaRequestWs(this enviCTe enviCTe, ConfiguracaoServico configuracaoServico = null) { var request = new XmlDocument(); var xml = enviCTe.ObterXmlString(); - if (ConfiguracaoServico.Instancia.cUF == Estado.PR) + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + if (instanciaServico.cUF == Estado.PR + || instanciaServico.cUF == Estado.MT) //Caso o lote seja enviado para o PR, colocar o namespace nos elementos do lote, pois o serviço do PR o exige, conforme https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe/issues/456 xml = xml.Replace("", ""); diff --git a/CTe.Utils/Compressao.cs b/CTe.Utils/Compressao.cs new file mode 100644 index 000000000..12de03de2 --- /dev/null +++ b/CTe.Utils/Compressao.cs @@ -0,0 +1,94 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ +using System.IO; +using System.IO.Compression; +using System.Text; + +namespace CTe.Utils +{ + public static class Compressao + { + private static void CopiarPara(Stream src, Stream dest) + { + var bytes = new byte[4096]; + + int cnt; + + while ((cnt = src.Read(bytes, 0, bytes.Length)) != 0) + { + dest.Write(bytes, 0, cnt); + } + } + + /// + /// Compacta uma string para GZip + /// + /// + /// + public static byte[] Zip(string str) + { + var bytes = Encoding.UTF8.GetBytes(str); + + using (var msi = new MemoryStream(bytes)) + using (var mso = new MemoryStream()) + { + using (var gs = new GZipStream(mso, CompressionMode.Compress)) + { + CopiarPara(msi, gs); + } + + return mso.ToArray(); + } + } + + /// + /// Descompacta uma string GZip + /// + /// + /// + public static string Unzip(byte[] bytes) + { + using (var msi = new MemoryStream(bytes)) + using (var mso = new MemoryStream()) + { + using (var gs = new GZipStream(msi, CompressionMode.Decompress)) + { + CopiarPara(gs, mso); + } + + return Encoding.UTF8.GetString(mso.ToArray()); + } + } + + } +} diff --git a/CTe.Utils/DistribuicaoDFe/ExtdistDFeInt.cs b/CTe.Utils/DistribuicaoDFe/ExtdistDFeInt.cs new file mode 100644 index 000000000..6b73322d1 --- /dev/null +++ b/CTe.Utils/DistribuicaoDFe/ExtdistDFeInt.cs @@ -0,0 +1,90 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using CTe.Classes; +using CTe.Classes.Servicos.DistribuicaoDFe; +using CTe.Utils.Validacao; +using DFe.Utils; +using System; + +namespace CTe.Utils.DistribuicaoDFe +{ + public static class ExtdistDFeInt + { + + /// + /// Recebe um objeto ExtdistDFeInt e devolve a string no formato XML + /// + /// Objeto do Tipo distDFeInt + /// string com XML no do objeto distDFeInt + public static string ObterXmlString(this distDFeInt pedDistDFeInt) + { + return FuncoesXml.ClasseParaXmlString(pedDistDFeInt); + } + + public static void ValidaSchema(this distDFeInt pedDistDFeInt, ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var xmlValidacao = pedDistDFeInt.ObterXmlString(); + + if (pedDistDFeInt.versao.Equals("1.00")) + { + Validador.Valida(xmlValidacao, "distDFeInt_v1.00.xsd", configServico); + } + else if (pedDistDFeInt.versao.Equals("1.10")) + { + Validador.Valida(xmlValidacao, "distDFeInt_v1.10.xsd", configServico); + } + else + { + throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + + "a versão está inválida, somente é permitido " + + "versão 1.00 é 1.10"); + } + } + + + public static void SalvarXmlEmDisco(this distDFeInt pedDistDFeInt, string arquivoSalvar, ConfiguracaoServico configuracaoServico = null) + { + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + if (instanciaServico.NaoSalvarXml()) return; + + var arquivoXml = instanciaServico.DiretorioSalvarXml + arquivoSalvar; + + FuncoesXml.ClasseParaArquivoXml(pedDistDFeInt, arquivoXml); + } + + } +} diff --git a/CTe.Utils/DistribuicaoDFe/ExtretDistDFeInt.cs b/CTe.Utils/DistribuicaoDFe/ExtretDistDFeInt.cs new file mode 100644 index 000000000..63229f0c3 --- /dev/null +++ b/CTe.Utils/DistribuicaoDFe/ExtretDistDFeInt.cs @@ -0,0 +1,62 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using DFe.Utils; +using CTe.Classes.Servicos.DistribuicaoDFe; + +namespace CTe.Utils.DistribuicaoDFe +{ + public static class ExtretDistDFeInt + { + /// + /// Carrega um objeto do tipo retDistDFeInt a partir de uma string no formato XML + /// + /// Objeto do tipo retDistDFeInt + /// String com uma estrutura XML + /// Retorna um objeto retDistDFeInt com as informações da string XML + public static retDistDFeInt CarregarDeXmlString(this retDistDFeInt retDistDFeInt, string xmlString) + { + return FuncoesXml.XmlStringParaClasse(xmlString); + } + + /// + /// Converte um objeto do tipo retDistDFeInt para uma string no formato XML com os dados do objeto + /// + /// Objeto do tipo retDistDFeInt + /// Retorna uma string no formato XML com os dados do objeto retDistDFeInt + public static string ObterXmlString(this retDistDFeInt retDistDFeInt) + { + return FuncoesXml.ClasseParaXmlString(retDistDFeInt); + } + } +} diff --git a/CTe.Utils/Evento/Extevento.cs b/CTe.Utils/Evento/Extevento.cs index c09a46319..9f866503b 100644 --- a/CTe.Utils/Evento/Extevento.cs +++ b/CTe.Utils/Evento/Extevento.cs @@ -32,11 +32,12 @@ /********************************************************************************/ using System; +using System.IO; using System.Xml; using CTe.Classes; using CTe.Classes.Servicos.Evento; using CTe.Classes.Servicos.Tipos; -using CTe.Utils.Extencoes; +using CTe.Utils.Extensoes; using CTe.Utils.Validacao; using DFe.Utils; using DFe.Utils.Assinatura; @@ -59,57 +60,69 @@ public static string ObterXmlString(this eventoCTe pedEventoCTe) /// Assina um objeto evento /// /// + /// /// Retorna um objeto do tipo evento assinado - public static void Assina(this eventoCTe eventoCTe) + public static void Assina(this eventoCTe eventoCTe, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; if (eventoCTe.infEvento.Id == null) throw new Exception("Não é possível assinar um objeto evento sem sua respectiva Id!"); eventoCTe.Signature = AssinaturaDigital.Assina(eventoCTe, eventoCTe.infEvento.Id, - ConfiguracaoServico.Instancia.X509Certificate2); + configServico.X509Certificate2); } - public static void ValidarSchema(this eventoCTe eventoCTe) + public static void ValidarSchema(this eventoCTe eventoCTe, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + var xmlEvento = eventoCTe.ObterXmlString(); switch (eventoCTe.versao) { case versao.ve200: - Validador.Valida(xmlEvento, "eventoCTe_v2.00.xsd"); + Validador.Valida(xmlEvento, "eventoCTe_v2.00.xsd", configServico); break; case versao.ve300: - Validador.Valida(xmlEvento, "eventoCTe_v3.00.xsd"); + Validador.Valida(xmlEvento, "eventoCTe_v3.00.xsd", configServico); + break; + case versao.ve400: + Validador.Valida(xmlEvento, "eventoCTe_v4.00.xsd", configServico); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + "a versão está inválida, somente é permitido " + - "versão 2.00 é 3.00"); + "versão 2.00, 3.00, 4.00"); } - ValidarSchemaEventoContainer(eventoCTe.infEvento.detEvento.EventoContainer, eventoCTe.versao); + ValidarSchemaEventoContainer(eventoCTe.infEvento.detEvento.EventoContainer, eventoCTe.versao, configuracaoServico); } - private static void ValidarSchemaEventoContainer(EventoContainer container, versao versao) + private static void ValidarSchemaEventoContainer(EventoContainer container, versao versao, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + if (container.GetType() == typeof(evCancCTe)) { - var evCancCTe = (evCancCTe) container; + var evCancCTe = (evCancCTe)container; var xmlEventoCancelamento = evCancCTe.ObterXmlString(); switch (versao) { case versao.ve200: - Validador.Valida(xmlEventoCancelamento, "evCancCTe_v2.00.xsd"); + Validador.Valida(xmlEventoCancelamento, "evCancCTe_v2.00.xsd", configServico); break; case versao.ve300: - Validador.Valida(xmlEventoCancelamento, "evCancCTe_v3.00.xsd"); + Validador.Valida(xmlEventoCancelamento, "evCancCTe_v3.00.xsd", configServico); + break; + case versao.ve400: + Validador.Valida(xmlEventoCancelamento, "evCancCTe_v4.00.xsd", configServico); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + "a versão está inválida, somente é permitido " + - "versão 2.00 é 3.00"); + "versão 2.00, 3.00, 4.00"); } @@ -124,28 +137,55 @@ private static void ValidarSchemaEventoContainer(EventoContainer container, vers switch (versao) { case versao.ve200: - Validador.Valida(xmlEventoCCe, "evCCeCTe_v2.00.xsd"); + Validador.Valida(xmlEventoCCe, "evCCeCTe_v2.00.xsd", configServico); break; case versao.ve300: - Validador.Valida(xmlEventoCCe, "evCCeCTe_v3.00.xsd"); + Validador.Valida(xmlEventoCCe, "evCCeCTe_v3.00.xsd", configServico); + break; + case versao.ve400: + Validador.Valida(xmlEventoCCe, "evCCeCTe_v4.00.xsd", configServico); + break; + default: + throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + + "a versão está inválida, somente é permitido " + + "versão 2.00, 3.00, 4.00"); + } + } + + if (container.GetType() == typeof(evPrestDesacordo)) + { + var evPrestDesacordo = (evPrestDesacordo)container; + + var xmlEventoCCe = evPrestDesacordo.ObterXmlString(); + + switch (versao) + { + case versao.ve200: + Validador.Valida(xmlEventoCCe, "evPrestDesacordo_v2.00.xsd", configServico); + break; + case versao.ve300: + Validador.Valida(xmlEventoCCe, "evPrestDesacordo_v3.00.xsd", configServico); + break; + case versao.ve400: + Validador.Valida(xmlEventoCCe, "evPrestDesacordo_v4.00.xsd", configServico); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + "a versão está inválida, somente é permitido " + - "versão 2.00 é 3.00"); + "versão 2.00, 3.00, 4.00"); } } } - public static void SalvarXmlEmDisco(this eventoCTe eventoCTe) + public static void SalvarXmlEmDisco(this eventoCTe eventoCTe, ConfiguracaoServico configuracaoServico = null) { - var instanciaServico = ConfiguracaoServico.Instancia; + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; if (instanciaServico.NaoSalvarXml()) return; var caminhoXml = instanciaServico.DiretorioSalvarXml; - var arquivoSalvar = caminhoXml + @"\" + eventoCTe.infEvento.chCTe + "-ped-eve.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, eventoCTe.infEvento.chCTe + "-ped-eve.xml"); FuncoesXml.ClasseParaArquivoXml(eventoCTe, arquivoSalvar); } diff --git a/CTe.Utils/Evento/ExtretEnvEvento.cs b/CTe.Utils/Evento/ExtretEnvEvento.cs index 3f6978888..16b2177a1 100644 --- a/CTe.Utils/Evento/ExtretEnvEvento.cs +++ b/CTe.Utils/Evento/ExtretEnvEvento.cs @@ -31,6 +31,7 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.IO; using CTe.Classes; using CTe.Classes.Servicos.Evento; using DFe.Utils; @@ -60,15 +61,15 @@ public static string ObterXmlString(this retEnvEvento retEnvEvento) return FuncoesXml.ClasseParaXmlString(retEnvEvento); } - public static void SalvarXmlEmDisco(this retEventoCTe retEnviCte) + public static void SalvarXmlEmDisco(this retEventoCTe retEnviCte, ConfiguracaoServico configuracaoServico = null) { - var instanciaServico = ConfiguracaoServico.Instancia; + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; if (instanciaServico.NaoSalvarXml()) return; var caminhoXml = instanciaServico.DiretorioSalvarXml; - var arquivoSalvar = caminhoXml + @"\" + retEnviCte.infEvento.chCTe + "-eve.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, retEnviCte.infEvento.chCTe + "-eve.xml"); FuncoesXml.ClasseParaArquivoXml(retEnviCte, arquivoSalvar); } diff --git a/CTe.Utils/Extencoes/ExtconsStatServCte.cs b/CTe.Utils/Extencoes/ExtconsStatServCte.cs deleted file mode 100644 index 62564e973..000000000 --- a/CTe.Utils/Extencoes/ExtconsStatServCte.cs +++ /dev/null @@ -1,95 +0,0 @@ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ -/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Você pode obter a última versão desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ -/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ -/* qualquer versão posterior. */ -/* */ -/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ -/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ -/* */ -/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ -/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ -/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Você também pode obter uma copia da licença em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ -using System; -using System.Xml; -using CTe.Classes; -using CTe.Classes.Servicos.Status; -using CTe.Classes.Servicos.Tipos; -using CTe.Utils.Validacao; -using DFe.Utils; - -namespace CTe.Utils.Extencoes -{ - public static class ExtconsStatServCte - { - public static void ValidarSchema(this consStatServCte consStatServCte) - { - var xmlValidacao = consStatServCte.ObterXmlString(); - - switch (consStatServCte.versao) - { - case versao.ve200: - Validador.Valida(xmlValidacao, "consStatServCTe_v2.00.xsd"); - break; - case versao.ve300: - Validador.Valida(xmlValidacao, "consStatServCTe_v3.00.xsd"); - break; - default: - throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + - "a versão está inválida, somente é permitido " + - "versão 2.00 é 3.00"); - } - } - - /// - /// Recebe um objeto consStatServ e devolve a string no formato XML - /// - /// Objeto do tipo consStatServ - /// string com XML no do objeto consStatServ - public static string ObterXmlString(this consStatServCte pedStatus) - { - return FuncoesXml.ClasseParaXmlString(pedStatus); - } - - public static void SalvarXmlEmDisco(this consStatServCte statuServCte) - { - var instanciaServico = ConfiguracaoServico.Instancia; - - if (instanciaServico.NaoSalvarXml()) return; - - var caminhoXml = instanciaServico.DiretorioSalvarXml; - - var arquivoSalvar = caminhoXml + @"\" + DateTime.Now.ParaDataHoraString() + "-ped-sta.xml"; - - FuncoesXml.ClasseParaArquivoXml(statuServCte, arquivoSalvar); - } - - public static XmlDocument CriaRequestWs(this consStatServCte consStatServMdFe) - { - var request = new XmlDocument(); - request.LoadXml(consStatServMdFe.ObterXmlString()); - - return request; - } - } -} \ No newline at end of file diff --git a/CTe.Utils/Extencoes/ExtConsReciCTe.cs b/CTe.Utils/Extensoes/ExtConsReciCTe.cs similarity index 87% rename from CTe.Utils/Extencoes/ExtConsReciCTe.cs rename to CTe.Utils/Extensoes/ExtConsReciCTe.cs index 7acf4a68f..8b8a55b1b 100644 --- a/CTe.Utils/Extencoes/ExtConsReciCTe.cs +++ b/CTe.Utils/Extensoes/ExtConsReciCTe.cs @@ -31,6 +31,7 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System; +using System.IO; using System.Xml; using CTe.Classes; using CTe.Classes.Servicos.Recepcao.Retorno; @@ -38,21 +39,22 @@ using CTe.Utils.Validacao; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtConsReciCTe { - public static void ValidarSchema(this consReciCTe consReciCTe) + public static void ValidarSchema(this consReciCTe consReciCTe, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; var xmlValidacao = consReciCTe.ObterXmlString(); switch (consReciCTe.versao) { case versao.ve200: - Validador.Valida(xmlValidacao, "consReciCTe_v2.00.xsd"); + Validador.Valida(xmlValidacao, "consReciCTe_v2.00.xsd", configServico); break; case versao.ve300: - Validador.Valida(xmlValidacao, "consReciCTe_v3.00.xsd"); + Validador.Valida(xmlValidacao, "consReciCTe_v3.00.xsd", configServico); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + @@ -71,15 +73,15 @@ public static string ObterXmlString(this consReciCTe consReciCTe) return FuncoesXml.ClasseParaXmlString(consReciCTe); } - public static void SalvarXmlEmDisco(this consReciCTe consReciCTe) + public static void SalvarXmlEmDisco(this consReciCTe consReciCTe, ConfiguracaoServico configuracaoServico = null) { - var instanciaServico = ConfiguracaoServico.Instancia; + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; if (instanciaServico.NaoSalvarXml()) return; var caminhoXml = instanciaServico.DiretorioSalvarXml; - var arquivoSalvar = caminhoXml + @"\"+ consReciCTe.nRec + @"-ped-rec.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, consReciCTe.nRec + "-ped-rec.xml"); FuncoesXml.ClasseParaArquivoXml(consReciCTe, arquivoSalvar); } @@ -94,15 +96,15 @@ public static XmlDocument CriaRequestWs(this consReciCTe consReciCTe) // Salvar Retorno de Envio de Recibo - public static void SalvarXmlEmDisco(this retConsReciCTe retConsReciCTe) + public static void SalvarXmlEmDisco(this retConsReciCTe retConsReciCTe, ConfiguracaoServico configuracaoServico = null) { - var instanciaServico = ConfiguracaoServico.Instancia; + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; if (instanciaServico.NaoSalvarXml()) return; var caminhoXml = instanciaServico.DiretorioSalvarXml; - var arquivoSalvar = caminhoXml + @"\" + retConsReciCTe.nRec + @"-rec.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, retConsReciCTe.nRec + "-rec.xml"); FuncoesXml.ClasseParaArquivoXml(retConsReciCTe, arquivoSalvar); } diff --git a/CTe.Utils/Extencoes/ExtconsSitCTe.cs b/CTe.Utils/Extensoes/ExtconsSitCTe.cs similarity index 85% rename from CTe.Utils/Extencoes/ExtconsSitCTe.cs rename to CTe.Utils/Extensoes/ExtconsSitCTe.cs index 8019a4136..8b39caf4f 100644 --- a/CTe.Utils/Extencoes/ExtconsSitCTe.cs +++ b/CTe.Utils/Extensoes/ExtconsSitCTe.cs @@ -31,6 +31,7 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System; +using System.IO; using System.Xml; using CTe.Classes; using CTe.Classes.Servicos.Consulta; @@ -38,24 +39,30 @@ using CTe.Utils.Validacao; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtconsSitCTe { - public static void ValidarSchema(this consSitCTe consSitCTe) + public static void ValidarSchema(this consSitCTe consSitCTe, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + var xmlValidacao = consSitCTe.ObterXmlString(); switch (consSitCTe.versao) { case versao.ve200: - Validador.Valida(xmlValidacao, "consSitCTe_v2.00.xsd"); + Validador.Valida(xmlValidacao, "consSitCTe_v2.00.xsd", configServico); break; case versao.ve300: - Validador.Valida(xmlValidacao, "consSitCTe_v3.00.xsd"); + Validador.Valida(xmlValidacao, "consSitCTe_v3.00.xsd", configServico); + break; + case versao.ve400: + Validador.Valida(xmlValidacao, "consSitCTe_v4.00.xsd", configServico); break; - default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + + default: + throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + "a versão está inválida, somente é permitido " + "versão 2.00 é 3.00"); } @@ -71,15 +78,15 @@ public static string ObterXmlString(this consSitCTe pedConsulta) return FuncoesXml.ClasseParaXmlString(pedConsulta); } - public static void SalvarXmlEmDisco(this consSitCTe statuServCte) + public static void SalvarXmlEmDisco(this consSitCTe statuServCte, ConfiguracaoServico configuracaoServico = null) { - var instanciaServico = ConfiguracaoServico.Instancia; + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; if (instanciaServico.NaoSalvarXml()) return; var caminhoXml = instanciaServico.DiretorioSalvarXml; - var arquivoSalvar = caminhoXml + @"\-ped-sit.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, "-ped-sit.xml"); FuncoesXml.ClasseParaArquivoXml(statuServCte, arquivoSalvar); } diff --git a/CTe.Utils/Extensoes/ExtconsStatServCte.cs b/CTe.Utils/Extensoes/ExtconsStatServCte.cs new file mode 100644 index 000000000..049a1fbff --- /dev/null +++ b/CTe.Utils/Extensoes/ExtconsStatServCte.cs @@ -0,0 +1,159 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ +using System; +using System.IO; +using System.Xml; +using CTe.Classes; +using CTe.Classes.Servicos.Status; +using CTe.Classes.Servicos.Tipos; +using CTe.Utils.Validacao; +using DFe.Utils; + +namespace CTe.Utils.Extensoes +{ + public static class ExtconsStatServCte + { + public static void ValidarSchema(this consStatServCte consStatServCte, ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var xmlValidacao = consStatServCte.ObterXmlString(); + + switch (consStatServCte.versao) + { + case versao.ve200: + Validador.Valida(xmlValidacao, "consStatServCTe_v2.00.xsd", configServico); + break; + case versao.ve300: + Validador.Valida(xmlValidacao, "consStatServCTe_v3.00.xsd", configServico); + break; + case versao.ve400: + Validador.Valida(xmlValidacao, "consStatServCTe_v4.00.xsd", configServico); + break; + default: + throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + + "a versão está inválida, somente é permitido " + + "versão 2.00 é 3.00"); + } + } + + /// + /// Recebe um objeto consStatServ e devolve a string no formato XML + /// + /// Objeto do tipo consStatServ + /// string com XML no do objeto consStatServ + public static string ObterXmlString(this consStatServCte pedStatus) + { + return FuncoesXml.ClasseParaXmlString(pedStatus); + } + + public static void SalvarXmlEmDisco(this consStatServCte statuServCte, ConfiguracaoServico configuracaoServico = null) + { + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + if (instanciaServico.NaoSalvarXml()) return; + + var caminhoXml = instanciaServico.DiretorioSalvarXml; + + var arquivoSalvar = Path.Combine(caminhoXml, DateTime.Now.ParaDataHoraString() + "-ped-sta.xml"); + + FuncoesXml.ClasseParaArquivoXml(statuServCte, arquivoSalvar); + } + + public static XmlDocument CriaRequestWs(this consStatServCte consStatServMdFe) + { + var request = new XmlDocument(); + request.LoadXml(consStatServMdFe.ObterXmlString()); + + return request; + } + } + + public static class ExtconsStatServCTe + { + public static void ValidarSchema(this consStatServCTe consStatServCte, ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var xmlValidacao = consStatServCte.ObterXmlString(); + + switch (consStatServCte.versao) + { + case versao.ve200: + Validador.Valida(xmlValidacao, "consStatServCTe_v2.00.xsd", configServico); + break; + case versao.ve300: + Validador.Valida(xmlValidacao, "consStatServCTe_v3.00.xsd", configServico); + break; + case versao.ve400: + Validador.Valida(xmlValidacao, "consStatServCTe_v4.00.xsd", configServico); + break; + default: + throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + + "a versão está inválida, somente é permitido " + + "versão 2.00 é 3.00"); + } + } + + /// + /// Recebe um objeto consStatServ e devolve a string no formato XML + /// + /// Objeto do tipo consStatServ + /// string com XML no do objeto consStatServ + public static string ObterXmlString(this consStatServCTe pedStatus) + { + return FuncoesXml.ClasseParaXmlString(pedStatus); + } + + public static void SalvarXmlEmDisco(this consStatServCTe statuServCte, ConfiguracaoServico configuracaoServico = null) + { + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + if (instanciaServico.NaoSalvarXml()) return; + + var caminhoXml = instanciaServico.DiretorioSalvarXml; + + var arquivoSalvar = Path.Combine(caminhoXml, DateTime.Now.ParaDataHoraString() + "-ped-sta.xml"); + + FuncoesXml.ClasseParaArquivoXml(statuServCte, arquivoSalvar); + } + + public static XmlDocument CriaRequestWs(this consStatServCTe consStatServMdFe) + { + var request = new XmlDocument(); + request.LoadXml(consStatServMdFe.ObterXmlString()); + + return request; + } + } +} \ No newline at end of file diff --git a/CTe.Utils/Extencoes/ExtevCCeCTe.cs b/CTe.Utils/Extensoes/ExtevCCeCTe.cs similarity index 99% rename from CTe.Utils/Extencoes/ExtevCCeCTe.cs rename to CTe.Utils/Extensoes/ExtevCCeCTe.cs index 7e0a7b1c0..853839bd3 100644 --- a/CTe.Utils/Extencoes/ExtevCCeCTe.cs +++ b/CTe.Utils/Extensoes/ExtevCCeCTe.cs @@ -34,7 +34,7 @@ using CTe.Classes.Servicos.Evento; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtevCCeCTe { diff --git a/CTe.Utils/Extencoes/ExtevCancCTe.cs b/CTe.Utils/Extensoes/ExtevCancCTe.cs similarity index 99% rename from CTe.Utils/Extencoes/ExtevCancCTe.cs rename to CTe.Utils/Extensoes/ExtevCancCTe.cs index 4fc6a867c..0bddbdf82 100644 --- a/CTe.Utils/Extencoes/ExtevCancCTe.cs +++ b/CTe.Utils/Extensoes/ExtevCancCTe.cs @@ -34,7 +34,7 @@ using CTe.Classes.Servicos.Evento; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtevCancCTe { diff --git a/CTe.Utils/Extensoes/ExtevPrestDesacordo.cs b/CTe.Utils/Extensoes/ExtevPrestDesacordo.cs new file mode 100644 index 000000000..8eb2bea4e --- /dev/null +++ b/CTe.Utils/Extensoes/ExtevPrestDesacordo.cs @@ -0,0 +1,51 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using CTe.Classes.Servicos.Evento; +using DFe.Utils; + +namespace CTe.Utils.Extensoes +{ + public static class ExtevPrestDesacordo + { + /// + /// Converte o objeto evento para uma string no formato XML + /// + /// + /// Retorna uma string no formato XML com os dados do objeto evento + public static string ObterXmlString(this evPrestDesacordo evPrestDesacordo) + { + return FuncoesXml.ClasseParaXmlString(evPrestDesacordo); + } + } +} \ No newline at end of file diff --git a/CTe.Utils/Extencoes/ExtinutCTe.cs b/CTe.Utils/Extensoes/ExtinutCTe.cs similarity index 85% rename from CTe.Utils/Extencoes/ExtinutCTe.cs rename to CTe.Utils/Extensoes/ExtinutCTe.cs index cdd4aa0b6..66e9d691b 100644 --- a/CTe.Utils/Extencoes/ExtinutCTe.cs +++ b/CTe.Utils/Extensoes/ExtinutCTe.cs @@ -31,6 +31,7 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System; +using System.IO; using System.Xml; using CTe.Classes; using CTe.Classes.Servicos.Inutilizacao; @@ -39,16 +40,16 @@ using DFe.Utils; using DFe.Utils.Assinatura; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtinutCTe { - public static void Assinar(this inutCTe inutCTe) + public static void Assinar(this inutCTe inutCTe, ConfiguracaoServico configuracaoServico = null) { - var configuracaoServico = ConfiguracaoServico.Instancia; + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; inutCTe.Signature = AssinaturaDigital.Assina(inutCTe, inutCTe.infInut.Id, - configuracaoServico.X509Certificate2); + configServico.X509Certificate2); } @@ -62,18 +63,19 @@ public static string ObterXmlString(this inutCTe pedInutilizacao) return FuncoesXml.ClasseParaXmlString(pedInutilizacao); } - public static void ValidarShcema(this inutCTe inutCTe) + public static void ValidarSchema(this inutCTe inutCTe, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; var xmlValidacao = inutCTe.ObterXmlString(); switch (inutCTe.versao) { case versao.ve200: - Validador.Valida(xmlValidacao, "inutCTe_v2.00.xsd"); + Validador.Valida(xmlValidacao, "inutCTe_v2.00.xsd", configServico); break; case versao.ve300: - Validador.Valida(xmlValidacao, "inutCTe_v3.00.xsd"); + Validador.Valida(xmlValidacao, "inutCTe_v3.00.xsd", configServico); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + @@ -82,15 +84,15 @@ public static void ValidarShcema(this inutCTe inutCTe) } } - public static void SalvarXmlEmDisco(this inutCTe inutCTe) + public static void SalvarXmlEmDisco(this inutCTe inutCTe, ConfiguracaoServico configuracaoServico = null) { - var instanciaServico = ConfiguracaoServico.Instancia; + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; if (instanciaServico.NaoSalvarXml()) return; var caminhoXml = instanciaServico.DiretorioSalvarXml; - var arquivoSalvar = caminhoXml + @"\"+inutCTe.infInut.Id+ "-ped-inu.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, inutCTe.infInut.Id + "-ped-inu.xml"); FuncoesXml.ClasseParaArquivoXml(inutCTe, arquivoSalvar); } diff --git a/CTe.Utils/Extencoes/ExtretConsSitCTe.cs b/CTe.Utils/Extensoes/ExtretConsSitCTe.cs similarity index 90% rename from CTe.Utils/Extencoes/ExtretConsSitCTe.cs rename to CTe.Utils/Extensoes/ExtretConsSitCTe.cs index 55847bcd9..8fc8bee84 100644 --- a/CTe.Utils/Extencoes/ExtretConsSitCTe.cs +++ b/CTe.Utils/Extensoes/ExtretConsSitCTe.cs @@ -31,11 +31,12 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.IO; using CTe.Classes; using CTe.Classes.Servicos.Consulta; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtretConsSitCTe { @@ -60,15 +61,15 @@ public static string ObterXmlString(this retConsSitCTe retConsSitCTe) return FuncoesXml.ClasseParaXmlString(retConsSitCTe); } - public static void SalvarXmlEmDisco(this retConsSitCTe retConsSitCTe, string chave) + public static void SalvarXmlEmDisco(this retConsSitCTe retConsSitCTe, string chave, ConfiguracaoServico configuracaoServico = null) { - var configuracaoServico = ConfiguracaoServico.Instancia; + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; - if (configuracaoServico.NaoSalvarXml()) return; + if (configServico.NaoSalvarXml()) return; - var caminhoXml = configuracaoServico.DiretorioSalvarXml; + var caminhoXml = configServico.DiretorioSalvarXml; - var arquivoSalvar = caminhoXml + @"\" + chave + "-sit.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, chave + "-sit.xml"); FuncoesXml.ClasseParaArquivoXml(retConsSitCTe, arquivoSalvar); } diff --git a/CTe.Utils/Extencoes/ExtretConsStatServ.cs b/CTe.Utils/Extensoes/ExtretConsStatServ.cs similarity index 99% rename from CTe.Utils/Extencoes/ExtretConsStatServ.cs rename to CTe.Utils/Extensoes/ExtretConsStatServ.cs index 4972be434..1d1409554 100644 --- a/CTe.Utils/Extencoes/ExtretConsStatServ.cs +++ b/CTe.Utils/Extensoes/ExtretConsStatServ.cs @@ -34,7 +34,7 @@ using CTe.Classes.Servicos.Status; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtretConsStatServ { diff --git a/CTe.Utils/Extencoes/ExtretConsStatServCte.cs b/CTe.Utils/Extensoes/ExtretConsStatServCte.cs similarity index 77% rename from CTe.Utils/Extencoes/ExtretConsStatServCte.cs rename to CTe.Utils/Extensoes/ExtretConsStatServCte.cs index ed77a9670..73826d436 100644 --- a/CTe.Utils/Extencoes/ExtretConsStatServCte.cs +++ b/CTe.Utils/Extensoes/ExtretConsStatServCte.cs @@ -31,23 +31,40 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System; +using System.IO; using CTe.Classes; using CTe.Classes.Servicos.Status; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtretConsStatServCte { - public static void SalvarXmlEmDisco(this retConsStatServCte retConsStatServCte) + public static void SalvarXmlEmDisco(this retConsStatServCte retConsStatServCte, ConfiguracaoServico configuracaoServico = null) { - var instanciaServico = ConfiguracaoServico.Instancia; + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; if (instanciaServico.NaoSalvarXml()) return; var caminhoXml = instanciaServico.DiretorioSalvarXml; - var arquivoSalvar = caminhoXml + @"\" + DateTime.Now.ParaDataHoraString() + "-sta.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, DateTime.Now.ParaDataHoraString() + "-sta.xml"); + + FuncoesXml.ClasseParaArquivoXml(retConsStatServCte, arquivoSalvar); + } + } + + public static class ExtretConsStatServCTe + { + public static void SalvarXmlEmDisco(this retConsStatServCTe retConsStatServCte, ConfiguracaoServico configuracaoServico = null) + { + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + if (instanciaServico.NaoSalvarXml()) return; + + var caminhoXml = instanciaServico.DiretorioSalvarXml; + + var arquivoSalvar = Path.Combine(caminhoXml, DateTime.Now.ParaDataHoraString() + "-sta.xml"); FuncoesXml.ClasseParaArquivoXml(retConsStatServCte, arquivoSalvar); } diff --git a/CTe.Utils/Inutilizacao/ExtretInutCTe.cs b/CTe.Utils/Inutilizacao/ExtretInutCTe.cs index 19482045b..6e378da2c 100644 --- a/CTe.Utils/Inutilizacao/ExtretInutCTe.cs +++ b/CTe.Utils/Inutilizacao/ExtretInutCTe.cs @@ -31,6 +31,7 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.IO; using CTe.Classes; using CTe.Classes.Servicos.Inutilizacao; using DFe.Utils; @@ -59,20 +60,17 @@ public static string ObterXmlString(this retInutCTe retInutCTe) { return FuncoesXml.ClasseParaXmlString(retInutCTe); } - - - public static void SalvarXmlEmDisco(this retInutCTe retInutCTe, string chaveNome) + public static void SalvarXmlEmDisco(this retInutCTe retInutCTe, string chaveNome, ConfiguracaoServico configuracaoServico = null) { - var instanciaServico = ConfiguracaoServico.Instancia; + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; if (instanciaServico.NaoSalvarXml()) return; var caminhoXml = instanciaServico.DiretorioSalvarXml; - var arquivoSalvar = caminhoXml + @"\" + chaveNome + "-inu.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, chaveNome + "-inu.xml"); FuncoesXml.ClasseParaArquivoXml(retInutCTe, arquivoSalvar); } - } } \ No newline at end of file diff --git a/CTe.Utils/Properties/AssemblyInfo.cs b/CTe.Utils/Properties/AssemblyInfo.cs deleted file mode 100644 index 2307fb0f3..000000000 --- a/CTe.Utils/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("CTe.Utils")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("CTe.Utils")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("21a894ec-b79e-4936-bff3-abead2e5c44f")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CTe.Utils/Recepcao/ExtretEnviCTe.cs b/CTe.Utils/Recepcao/ExtretEnviCTe.cs index 9389f5355..c0b16a187 100644 --- a/CTe.Utils/Recepcao/ExtretEnviCTe.cs +++ b/CTe.Utils/Recepcao/ExtretEnviCTe.cs @@ -31,6 +31,7 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.IO; using CTe.Classes; using CTe.Classes.Servicos.Recepcao; using DFe.Utils; @@ -60,15 +61,15 @@ public static string ObterXmlString(this retEnviCte retEnviCte) return FuncoesXml.ClasseParaXmlString(retEnviCte); } - public static void SalvarXmlEmDisco(this retEnviCte retEnviCte) + public static void SalvarXmlEmDisco(this retEnviCte retEnviCte, ConfiguracaoServico configuracaoServico = null) { - var instanciaServico = ConfiguracaoServico.Instancia; + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; if (instanciaServico.NaoSalvarXml()) return; var caminhoXml = instanciaServico.DiretorioSalvarXml; - var arquivoSalvar = caminhoXml + @"\" + retEnviCte.infRec.nRec + "-rec.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, retEnviCte.infRec.nRec + "-rec.xml"); FuncoesXml.ClasseParaArquivoXml(retEnviCte, arquivoSalvar); } diff --git a/CTe.Utils/Validacao/Validador.cs b/CTe.Utils/Validacao/Validador.cs index 14d0f554b..1d4773996 100644 --- a/CTe.Utils/Validacao/Validador.cs +++ b/CTe.Utils/Validacao/Validador.cs @@ -41,24 +41,26 @@ namespace CTe.Utils.Validacao { public static class Validador { - public static void Valida(string xml, string schema) + public static void Valida(string xml, string schema, ConfiguracaoServico configuracaoServico = null) { - var servicoInstancia = ConfiguracaoServico.Instancia; + var servicoInstancia = configuracaoServico ?? ConfiguracaoServico.Instancia; var pathSchema = servicoInstancia.DiretorioSchemas; if (!Directory.Exists(pathSchema)) throw new Exception("Diretório de Schemas não encontrado: \n" + pathSchema); - var arquivoSchema = pathSchema + @"\" + schema; + var arquivoSchema = Path.Combine(pathSchema, schema); // Define o tipo de validação var cfg = new XmlReaderSettings { ValidationType = ValidationType.Schema }; // Carrega o arquivo de esquema var schemas = new XmlSchemaSet(); + schemas.XmlResolver = new XmlUrlResolver(); + cfg.Schemas = schemas; - // Quando carregar o eschema, especificar o namespace que ele valida + // Quando carregar o schema, especificar o namespace que ele valida // e a localização do arquivo schemas.Add(null, arquivoSchema); // Especifica o tratamento de evento para os erros de validacao diff --git a/CTe.Wsdl/CTe.Wsdl.csproj b/CTe.Wsdl/CTe.Wsdl.csproj index 31fe302d5..29133ee8c 100644 --- a/CTe.Wsdl/CTe.Wsdl.csproj +++ b/CTe.Wsdl/CTe.Wsdl.csproj @@ -1,70 +1,16 @@ - - - + + - Debug - AnyCPU - {9CC914F9-4C3E-43BB-A34B-A12AE4923548} - Library - Properties - CTe.Wsdl - CTe.Wsdl - v4.5 - 512 - + net462;netstandard2.0;net6.0 + - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - - - - - - - - + - - - - - - - - + + - - {9984EC15-18E1-4A87-B4DB-18AC913DC4E8} - DFe.Classes - + - - - - \ No newline at end of file + + diff --git a/CTe.Wsdl/CTe.Wsdl.csproj.DotSettings b/CTe.Wsdl/CTe.Wsdl.csproj.DotSettings deleted file mode 100644 index 662f95686..000000000 --- a/CTe.Wsdl/CTe.Wsdl.csproj.DotSettings +++ /dev/null @@ -1,2 +0,0 @@ - - CSharp50 \ No newline at end of file diff --git a/CTe.Wsdl/Configuracao/WsdlConfiguracao.cs b/CTe.Wsdl/Configuracao/WsdlConfiguracao.cs deleted file mode 100644 index 60478c2ec..000000000 --- a/CTe.Wsdl/Configuracao/WsdlConfiguracao.cs +++ /dev/null @@ -1,46 +0,0 @@ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ -/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Você pode obter a última versão desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ -/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ -/* qualquer versão posterior. */ -/* */ -/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ -/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ -/* */ -/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ -/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ -/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Você também pode obter uma copia da licença em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ - -using System.Security.Cryptography.X509Certificates; - -namespace CTe.Wsdl.Configuracao -{ - public class WsdlConfiguracao - { - public string Url { get; set; } - public string CodigoIbgeEstado { get; set; } - public string Versao { get; set; } - public X509Certificate2 CertificadoDigital { get; set; } - public int TimeOut { get; set; } - } -} \ No newline at end of file diff --git a/CTe.Wsdl/ConsultaProtocolo/CteConsulta.cs b/CTe.Wsdl/ConsultaProtocolo/CteConsulta.cs index a8812a5ce..0b24f7c4b 100644 --- a/CTe.Wsdl/ConsultaProtocolo/CteConsulta.cs +++ b/CTe.Wsdl/ConsultaProtocolo/CteConsulta.cs @@ -1,238 +1,95 @@ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ -/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Você pode obter a última versão desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ -/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ -/* qualquer versão posterior. */ -/* */ -/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ -/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ -/* */ -/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ -/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ -/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Você também pode obter uma copia da licença em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - - -// -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - -using CTe.Wsdl.Configuracao; +using System; +using System.Net; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; namespace CTe.Wsdl.ConsultaProtocolo { - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name = "CteConsultaSoap12", - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteConsulta")] - public partial class CteConsulta : System.Web.Services.Protocols.SoapHttpClientProtocol + public class CteConsulta { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; - private cteCabecMsg cteCabecMsgValueField; + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao configuracao; - private System.Threading.SendOrPostCallback cteConsultaCTOperationCompleted; - - /// + /// + /// Cria o cabeçalho do envelope a ser enviado e atribui as configurações do WSDL. + /// + /// public CteConsulta(WsdlConfiguracao configuracao) { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = configuracao.Url; - this.cteCabecMsgValue = new cteCabecMsg - { - cUF = configuracao.CodigoIbgeEstado, - versaoDados = configuracao.Versao - }; - this.ClientCertificates.Add(configuracao.CertificadoDigital); - this.Timeout = configuracao.TimeOut; - } - - public cteCabecMsg cteCabecMsgValue - { - get { return this.cteCabecMsgValueField; } - set { this.cteCabecMsgValueField = value; } - } + if (configuracao == null) throw new ArgumentNullException(); - /// - public event cteConsultaCTCompletedEventHandler cteConsultaCTCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("cteCabecMsgValue", - Direction = System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute( - "http://www.portalfiscal.inf.br/cte/wsdl/CteConsulta/cteConsultaCT", - Use = System.Web.Services.Description.SoapBindingUse.Literal, - ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: - System.Xml.Serialization.XmlElementAttribute( - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteConsulta")] - public System.Xml.XmlNode cteConsultaCT( - [System.Xml.Serialization.XmlElementAttribute( - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteConsulta")] System.Xml.XmlNode cteDadosMsg) - { - object[] results = this.Invoke("cteConsultaCT", new object[] + this.configuracao = configuracao; + soapEnvelope = new SoapEnvelope { - cteDadosMsg - }); - return ((System.Xml.XmlNode) (results[0])); - } - - /// - public System.IAsyncResult BegincteConsultaCT(System.Xml.XmlNode cteDadosMsg, System.AsyncCallback callback, - object asyncState) - { - return this.BeginInvoke("cteConsultaCT", new object[] - { - cteDadosMsg - }, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndcteConsultaCT(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode) (results[0])); - } - - /// - public void cteConsultaCTAsync(System.Xml.XmlNode cteDadosMsg) - { - this.cteConsultaCTAsync(cteDadosMsg, null); + head = new ResponseHead + { + cteCabecMsg = new cteCabecMsg + { + versaoDados = configuracao.Versao, + cUF = configuracao.CodigoIbgeEstado + } + } + }; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; } - /// - public void cteConsultaCTAsync(System.Xml.XmlNode cteDadosMsg, object userState) + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public XmlNode cteConsultaCT(XmlNode cteDadosMsg) { - if ((this.cteConsultaCTOperationCompleted == null)) + soapEnvelope.body = new ResponseBody { - this.cteConsultaCTOperationCompleted = - new System.Threading.SendOrPostCallback(this.OncteConsultaCTOperationCompleted); - } - this.InvokeAsync("cteConsultaCT", new object[] - { - cteDadosMsg - }, this.cteConsultaCTOperationCompleted, userState); + cteDadosMsg = cteDadosMsg + }; + return RequestBuilderAndSender.Execute(soapEnvelope, configuracao, TipoEvento.CTeConsulta, "retConsSitCTe"); } - private void OncteConsultaCTOperationCompleted(object arg) + public async Task cteConsultaCTAsync(XmlNode cteDadosMsg) { - if ((this.cteConsultaCTCompleted != null)) + soapEnvelope.body = new ResponseBody { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = - ((System.Web.Services.Protocols.InvokeCompletedEventArgs) (arg)); - this.cteConsultaCTCompleted(this, - new cteConsultaCTCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, - invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) - { - base.CancelAsync(userState); + cteDadosMsg = cteDadosMsg + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, configuracao, TipoEvento.CTeConsulta, "retConsSitCTe"); } } - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteConsulta")] - [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteConsulta", - IsNullable = false)] - public partial class cteCabecMsg : System.Web.Services.Protocols.SoapHeader + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope { + [XmlElement(ElementName = "Header", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseHead head { get; set; } - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF - { - get { return this.cUFField; } - set { this.cUFField = value; } - } - - /// - public string versaoDados - { - get { return this.versaoDadosField; } - set { this.versaoDadosField = value; } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr - { - get { return this.anyAttrField; } - set { this.anyAttrField = value; } - } + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } } - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - public delegate void cteConsultaCTCompletedEventHandler(object sender, cteConsultaCTCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class cteConsultaCTCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs + /// + /// Classe para o cabeçalho do Envelope SOAP + /// + public class ResponseHead : CommonResponseHead { - - private object[] results; - - internal cteConsultaCTCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, - object userState) : - base(exception, cancelled, userState) - { - this.results = results; - } - - /// - public System.Xml.XmlNode Result - { - get - { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode) (this.results[0])); - } - } + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteConsulta")] + public T cteCabecMsg { get; set; } } - -} + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteConsulta")] + public T cteDadosMsg { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Wsdl/ConsultaProtocolo/V4/CteConsulta.cs b/CTe.Wsdl/ConsultaProtocolo/V4/CteConsulta.cs new file mode 100644 index 000000000..7ee884352 --- /dev/null +++ b/CTe.Wsdl/ConsultaProtocolo/V4/CteConsulta.cs @@ -0,0 +1,74 @@ +using System; +using System.Net; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; + +namespace CTe.Wsdl.ConsultaProtocolo.V4 +{ + public class CteConsultaV4 + { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; + + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao configuracao; + + /// + /// Cria o cabeçalho do envelope a ser enviado e atribui as configurações do WSDL. + /// + /// + public CteConsultaV4(WsdlConfiguracao configuracao) + { + if (configuracao == null) throw new ArgumentNullException(); + + this.configuracao = configuracao; + this.soapEnvelope = new SoapEnvelope(); + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; + } + + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public XmlNode cteConsultaCT(XmlNode cteDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + cteDadosMsg = cteDadosMsg + }; + return RequestBuilderAndSender.Execute(soapEnvelope, configuracao, TipoEvento.CTeConsultaV4, "retConsSitCTe"); + } + + public async Task cteConsultaCTAsync(XmlNode cteDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + cteDadosMsg = cteDadosMsg + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, configuracao, TipoEvento.CTeConsultaV4, "retConsSitCTe"); + } + } + + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope + { + + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } + } + + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CTeConsultaV4")] + public T cteDadosMsg { get; set; } + } +} \ No newline at end of file diff --git a/CTe.Wsdl/DistribuicaoDFe/CTeDistDFeInteresse.cs b/CTe.Wsdl/DistribuicaoDFe/CTeDistDFeInteresse.cs new file mode 100644 index 000000000..54da55c46 --- /dev/null +++ b/CTe.Wsdl/DistribuicaoDFe/CTeDistDFeInteresse.cs @@ -0,0 +1,96 @@ +using System; +using System.Net; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; + +namespace CTe.Wsdl.DistribuicaoDFe +{ + public class CTeDistDFeInteresse + { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; + + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao configuracao; + + /// + /// Cria o cabeçalho do envelope a ser enviado e atribui as configurações do WSDL. + /// + /// + public CTeDistDFeInteresse(WsdlConfiguracao configuracao) + { + if (configuracao == null) + throw new ArgumentNullException(); + + this.configuracao = configuracao; + soapEnvelope = new SoapEnvelope(); + } + + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public XmlNode Execute(XmlNode cteDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + cteDistDFeInteresse = new cteDistDFeInteresse + { + cteDadosMsg = cteDadosMsg + } + }; + return RequestBuilderAndSender.Execute(soapEnvelope, configuracao, TipoEvento.CTeDistribuicaoDFe, "retDistDFeInt"); + } + + public async Task ExecuteAsync(XmlNode cteDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + cteDistDFeInteresse = new cteDistDFeInteresse + { + cteDadosMsg = cteDadosMsg + } + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, configuracao, TipoEvento.CTeDistribuicaoDFe, "retDistDFeInt"); + } + } + + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope + { + [XmlElement(ElementName = "Header", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseHead head { get; set; } + + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } + } + + /// + /// Classe para o cabeçalho do Envelope SOAP + /// + public class ResponseHead : CommonResponseHead + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CTeDistribuicaoDFe")] + public T cteCabecMsg { get; set; } + } + + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CTeDistribuicaoDFe")] + public cteDistDFeInteresse cteDistDFeInteresse { get; set; } + } + + public class cteDistDFeInteresse + { + public XmlNode cteDadosMsg { get; set; } + } +} diff --git a/CTe.Wsdl/Evento/CteRecepcaoEvento.cs b/CTe.Wsdl/Evento/CteRecepcaoEvento.cs index 35259c598..3c33ca110 100644 --- a/CTe.Wsdl/Evento/CteRecepcaoEvento.cs +++ b/CTe.Wsdl/Evento/CteRecepcaoEvento.cs @@ -1,236 +1,96 @@ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ -/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Você pode obter a última versão desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ -/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ -/* qualquer versão posterior. */ -/* */ -/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ -/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ -/* */ -/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ -/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ -/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Você também pode obter uma copia da licença em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - - -// -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - -using CTe.Wsdl.Configuracao; +using System; +using System.Net; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; namespace CTe.Wsdl.Evento { - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name = "CteRecepcaoEventoSoap12", - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcaoEvento")] - public partial class CteRecepcaoEvento : System.Web.Services.Protocols.SoapHttpClientProtocol + public class CteRecepcaoEvento { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; - private cteCabecMsg cteCabecMsgValueField; - - private System.Threading.SendOrPostCallback cteRecepcaoEventoOperationCompleted; + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao configuracao; - /// + /// + /// Cria o cabeçalho do envelope a ser enviado e atribui as configurações do WSDL. + /// + /// public CteRecepcaoEvento(WsdlConfiguracao configuracao) { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = configuracao.Url; - this.cteCabecMsgValue = new cteCabecMsg - { - cUF = configuracao.CodigoIbgeEstado, - versaoDados = configuracao.Versao - }; - this.ClientCertificates.Add(configuracao.CertificadoDigital); - this.Timeout = configuracao.TimeOut; - } - - public cteCabecMsg cteCabecMsgValue - { - get { return this.cteCabecMsgValueField; } - set { this.cteCabecMsgValueField = value; } - } - - /// - public event cteRecepcaoEventoCompletedEventHandler cteRecepcaoEventoCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("cteCabecMsgValue", - Direction = System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute( - "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcaoEvento/cteRecepcaoEvento", - Use = System.Web.Services.Description.SoapBindingUse.Literal, - ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: - System.Xml.Serialization.XmlElementAttribute( - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcaoEvento")] - public System.Xml.XmlNode cteRecepcaoEvento( - [System.Xml.Serialization.XmlElementAttribute( - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcaoEvento")] System.Xml.XmlNode cteDadosMsg) - { - object[] results = this.Invoke("cteRecepcaoEvento", new object[] - { - cteDadosMsg - }); - return ((System.Xml.XmlNode) (results[0])); - } + if (configuracao == null) + throw new ArgumentNullException(); - /// - public System.IAsyncResult BegincteRecepcaoEvento(System.Xml.XmlNode cteDadosMsg, System.AsyncCallback callback, - object asyncState) - { - return this.BeginInvoke("cteRecepcaoEvento", new object[] + this.configuracao = configuracao; + soapEnvelope = new SoapEnvelope { - cteDadosMsg - }, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndcteRecepcaoEvento(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode) (results[0])); - } - - /// - public void cteRecepcaoEventoAsync(System.Xml.XmlNode cteDadosMsg) - { - this.cteRecepcaoEventoAsync(cteDadosMsg, null); + head = new ResponseHead + { + cteCabecMsg = new cteCabecMsg + { + versaoDados = configuracao.Versao, + cUF = configuracao.CodigoIbgeEstado + } + } + }; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; } - /// - public void cteRecepcaoEventoAsync(System.Xml.XmlNode cteDadosMsg, object userState) + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public XmlNode cteRecepcaoEvento(XmlNode cteDadosMsg) { - if ((this.cteRecepcaoEventoOperationCompleted == null)) + soapEnvelope.body = new ResponseBody { - this.cteRecepcaoEventoOperationCompleted = - new System.Threading.SendOrPostCallback(this.OncteRecepcaoEventoOperationCompleted); - } - this.InvokeAsync("cteRecepcaoEvento", new object[] - { - cteDadosMsg - }, this.cteRecepcaoEventoOperationCompleted, userState); + cteDadosMsg = cteDadosMsg + }; + return RequestBuilderAndSender.Execute(soapEnvelope, configuracao, TipoEvento.CTeDistribuicaoDFe, "retEventoCTe"); } - private void OncteRecepcaoEventoOperationCompleted(object arg) + public async Task cteRecepcaoEventoAsync(XmlNode cteDadosMsg) { - if ((this.cteRecepcaoEventoCompleted != null)) + soapEnvelope.body = new ResponseBody { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = - ((System.Web.Services.Protocols.InvokeCompletedEventArgs) (arg)); - this.cteRecepcaoEventoCompleted(this, - new cteRecepcaoEventoCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, - invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) - { - base.CancelAsync(userState); + cteDadosMsg = cteDadosMsg + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, configuracao, TipoEvento.CTeDistribuicaoDFe, "retEventoCTe"); } } - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcaoEvento")] - [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcaoEvento", - IsNullable = false)] - public partial class cteCabecMsg : System.Web.Services.Protocols.SoapHeader + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope { + [XmlElement(ElementName = "Header", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseHead head { get; set; } - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF - { - get { return this.cUFField; } - set { this.cUFField = value; } - } - - /// - public string versaoDados - { - get { return this.versaoDadosField; } - set { this.versaoDadosField = value; } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr - { - get { return this.anyAttrField; } - set { this.anyAttrField = value; } - } + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } } - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - public delegate void cteRecepcaoEventoCompletedEventHandler(object sender, cteRecepcaoEventoCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class cteRecepcaoEventoCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs + /// + /// Classe para o cabeçalho do Envelope SOAP + /// + public class ResponseHead : CommonResponseHead { - - private object[] results; - - internal cteRecepcaoEventoCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, - object userState) : - base(exception, cancelled, userState) - { - this.results = results; - } - - /// - public System.Xml.XmlNode Result - { - get - { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode) (this.results[0])); - } - } + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcaoEvento")] + public T cteCabecMsg { get; set; } } -} \ No newline at end of file + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcaoEvento")] + public T cteDadosMsg { get; set; } + } +} diff --git a/CTe.Wsdl/Evento/V4/CteRecepcaoEventoV4.cs b/CTe.Wsdl/Evento/V4/CteRecepcaoEventoV4.cs new file mode 100644 index 000000000..c6ef47932 --- /dev/null +++ b/CTe.Wsdl/Evento/V4/CteRecepcaoEventoV4.cs @@ -0,0 +1,86 @@ +using System.Net; +using System.Threading.Tasks; +using System.Xml; +using System; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; + +namespace CTe.Wsdl.Evento.V4 +{ + public class CteRecepcaoEventoV4 + { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; + + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao configuracao; + + /// + /// Cria o cabeçalho do envelope a ser enviado e atribui as configurações do WSDL. + /// + /// + public CteRecepcaoEventoV4(WsdlConfiguracao configuracao) + { + if (configuracao == null) + throw new ArgumentNullException(); + + this.configuracao = configuracao; + soapEnvelope = new SoapEnvelope(); + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; + } + + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public XmlNode cteRecepcaoEvento(XmlNode cteDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + cteDadosMsg = cteDadosMsg + }; + return RequestBuilderAndSender.Execute(soapEnvelope, configuracao, TipoEvento.CTeRecepcaoEventoV4, "retEventoCTe"); + } + + public async Task cteRecepcaoEventoAsync(XmlNode cteDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + cteDadosMsg = cteDadosMsg + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, configuracao, TipoEvento.CTeRecepcaoEventoV4, "retEventoCTe"); + } + } + + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope + { + [XmlElement(ElementName = "Header", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseHead head { get; set; } + + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } + } + + /// + /// Classe para o cabeçalho do Envelope SOAP + /// + public class ResponseHead : CommonResponseHead + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoEventoV4")] + public T cteCabecMsg { get; set; } + } + + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoEventoV4")] + public T cteDadosMsg { get; set; } + } +} diff --git a/CTe.Wsdl/Inutilizacao/CteInutilizacao.cs b/CTe.Wsdl/Inutilizacao/CteInutilizacao.cs index 4282d64be..199fbba4e 100644 --- a/CTe.Wsdl/Inutilizacao/CteInutilizacao.cs +++ b/CTe.Wsdl/Inutilizacao/CteInutilizacao.cs @@ -1,237 +1,96 @@ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ -/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Você pode obter a última versão desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ -/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ -/* qualquer versão posterior. */ -/* */ -/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ -/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ -/* */ -/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ -/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ -/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Você também pode obter uma copia da licença em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - - -// -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - -using CTe.Wsdl.Configuracao; +using System; +using System.Net; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; namespace CTe.Wsdl.Inutilizacao { - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name = "CteInutilizacaoSoap12", - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteInutilizacao")] - public partial class CteInutilizacao : System.Web.Services.Protocols.SoapHttpClientProtocol + public class CteInutilizacao { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; - private cteCabecMsg cteCabecMsgValueField; + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao configuracao; - private System.Threading.SendOrPostCallback cteInutilizacaoCTOperationCompleted; - - /// + /// + /// Cria o cabeçalho do envelope a ser enviado e atribui as configurações do WSDL. + /// + /// public CteInutilizacao(WsdlConfiguracao configuracao) { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = configuracao.Url; - this.cteCabecMsgValue = new cteCabecMsg - { - cUF = configuracao.CodigoIbgeEstado, - versaoDados = configuracao.Versao - }; - this.ClientCertificates.Add(configuracao.CertificadoDigital); - this.Timeout = configuracao.TimeOut; - } - - public cteCabecMsg cteCabecMsgValue - { - get { return this.cteCabecMsgValueField; } - set { this.cteCabecMsgValueField = value; } - } - - /// - public event cteInutilizacaoCTCompletedEventHandler cteInutilizacaoCTCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("cteCabecMsgValue", - Direction = System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute( - "http://www.portalfiscal.inf.br/cte/wsdl/CteInutilizacao/cteInutilizacaoCT", - Use = System.Web.Services.Description.SoapBindingUse.Literal, - ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: - System.Xml.Serialization.XmlElementAttribute( - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteInutilizacao")] - public System.Xml.XmlNode cteInutilizacaoCT( - [System.Xml.Serialization.XmlElementAttribute( - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteInutilizacao")] System.Xml.XmlNode cteDadosMsg) - { - object[] results = this.Invoke("cteInutilizacaoCT", new object[] - { - cteDadosMsg - }); - return ((System.Xml.XmlNode) (results[0])); - } + if (configuracao == null) + throw new ArgumentNullException(); - /// - public System.IAsyncResult BegincteInutilizacaoCT(System.Xml.XmlNode cteDadosMsg, System.AsyncCallback callback, - object asyncState) - { - return this.BeginInvoke("cteInutilizacaoCT", new object[] + this.configuracao = configuracao; + soapEnvelope = new SoapEnvelope { - cteDadosMsg - }, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndcteInutilizacaoCT(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode) (results[0])); - } - - /// - public void cteInutilizacaoCTAsync(System.Xml.XmlNode cteDadosMsg) - { - this.cteInutilizacaoCTAsync(cteDadosMsg, null); + head = new ResponseHead + { + cteCabecMsg = new cteCabecMsg + { + versaoDados = configuracao.Versao, + cUF = configuracao.CodigoIbgeEstado + } + } + }; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; } - /// - public void cteInutilizacaoCTAsync(System.Xml.XmlNode cteDadosMsg, object userState) + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public XmlNode cteInutilizacaoCT(XmlNode cteDadosMsg) { - if ((this.cteInutilizacaoCTOperationCompleted == null)) - { - this.cteInutilizacaoCTOperationCompleted = - new System.Threading.SendOrPostCallback(this.OncteInutilizacaoCTOperationCompleted); - } - this.InvokeAsync("cteInutilizacaoCT", new object[] + soapEnvelope.body = new ResponseBody { - cteDadosMsg - }, this.cteInutilizacaoCTOperationCompleted, userState); + cteDadosMsg = cteDadosMsg + }; + return RequestBuilderAndSender.Execute(soapEnvelope, configuracao, TipoEvento.CTeInutilizacao, "retInutCTe"); } - private void OncteInutilizacaoCTOperationCompleted(object arg) + public async Task cteInutilizacaoCTAsync(XmlNode cteDadosMsg) { - if ((this.cteInutilizacaoCTCompleted != null)) + soapEnvelope.body = new ResponseBody { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = - ((System.Web.Services.Protocols.InvokeCompletedEventArgs) (arg)); - this.cteInutilizacaoCTCompleted(this, - new cteInutilizacaoCTCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, - invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) - { - base.CancelAsync(userState); + cteDadosMsg = cteDadosMsg + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, configuracao, TipoEvento.CTeInutilizacao, "retInutCTe"); } } - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteInutilizacao")] - [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteInutilizacao", - IsNullable = false)] - public partial class cteCabecMsg : System.Web.Services.Protocols.SoapHeader + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope { + [XmlElement(ElementName = "Header", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseHead head { get; set; } - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF - { - get { return this.cUFField; } - set { this.cUFField = value; } - } - - /// - public string versaoDados - { - get { return this.versaoDadosField; } - set { this.versaoDadosField = value; } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr - { - get { return this.anyAttrField; } - set { this.anyAttrField = value; } - } + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } } - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - public delegate void cteInutilizacaoCTCompletedEventHandler(object sender, cteInutilizacaoCTCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class cteInutilizacaoCTCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs + /// + /// Classe para o cabeçalho do Envelope SOAP + /// + public class ResponseHead : CommonResponseHead { - - private object[] results; - - internal cteInutilizacaoCTCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, - object userState) : - base(exception, cancelled, userState) - { - this.results = results; - } - - /// - public System.Xml.XmlNode Result - { - get - { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode) (this.results[0])); - } - } + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteInutilizacao")] + public T cteCabecMsg { get; set; } } + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteInutilizacao")] + public T cteDadosMsg { get; set; } + } } diff --git a/CTe.Wsdl/Properties/AssemblyInfo.cs b/CTe.Wsdl/Properties/AssemblyInfo.cs deleted file mode 100644 index fc2dddc6b..000000000 --- a/CTe.Wsdl/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("CTe.Wsdl")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("CTe.Wsdl")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("9cc914f9-4c3e-43bb-a34b-a12ae4923548")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CTe.Wsdl/Recepcao/CteRecepcao.cs b/CTe.Wsdl/Recepcao/CteRecepcao.cs index 4ed1b4fc5..c43eaf8b1 100644 --- a/CTe.Wsdl/Recepcao/CteRecepcao.cs +++ b/CTe.Wsdl/Recepcao/CteRecepcao.cs @@ -1,237 +1,96 @@ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ -/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Você pode obter a última versão desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ -/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ -/* qualquer versão posterior. */ -/* */ -/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ -/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ -/* */ -/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ -/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ -/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Você também pode obter uma copia da licença em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - - -// -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - -using CTe.Wsdl.Configuracao; +using System; +using System.Net; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; namespace CTe.Wsdl.Recepcao { - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name = "CteRecepcaoSoap12", - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao")] - public partial class CteRecepcao : System.Web.Services.Protocols.SoapHttpClientProtocol + public class CteRecepcao { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; - private cteCabecMsg cteCabecMsgValueField; + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao configuracao; - private System.Threading.SendOrPostCallback cteRecepcaoLoteOperationCompleted; - - /// + /// + /// Cria o cabeçalho do envelope a ser enviado e atribui as configurações do WSDL. + /// + /// public CteRecepcao(WsdlConfiguracao configuracao) { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = configuracao.Url; - this.cteCabecMsgValue = new cteCabecMsg - { - cUF = configuracao.CodigoIbgeEstado, - versaoDados = configuracao.Versao - }; - this.ClientCertificates.Add(configuracao.CertificadoDigital); - this.Timeout = configuracao.TimeOut; - } - - public cteCabecMsg cteCabecMsgValue - { - get { return this.cteCabecMsgValueField; } - set { this.cteCabecMsgValueField = value; } - } - - /// - public event cteRecepcaoLoteCompletedEventHandler cteRecepcaoLoteCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("cteCabecMsgValue", - Direction = System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute( - "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao/cteRecepcaoLote", - Use = System.Web.Services.Description.SoapBindingUse.Literal, - ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: - System.Xml.Serialization.XmlElementAttribute( - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao")] - public System.Xml.XmlNode cteRecepcaoLote( - [System.Xml.Serialization.XmlElementAttribute( - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao")] System.Xml.XmlNode cteDadosMsg) - { - object[] results = this.Invoke("cteRecepcaoLote", new object[] - { - cteDadosMsg - }); - return ((System.Xml.XmlNode) (results[0])); - } + if (configuracao == null) + throw new ArgumentNullException(); - /// - public System.IAsyncResult BegincteRecepcaoLote(System.Xml.XmlNode cteDadosMsg, System.AsyncCallback callback, - object asyncState) - { - return this.BeginInvoke("cteRecepcaoLote", new object[] + this.configuracao = configuracao; + soapEnvelope = new SoapEnvelope { - cteDadosMsg - }, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndcteRecepcaoLote(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode) (results[0])); - } - - /// - public void cteRecepcaoLoteAsync(System.Xml.XmlNode cteDadosMsg) - { - this.cteRecepcaoLoteAsync(cteDadosMsg, null); + head = new ResponseHead + { + cteCabecMsg = new cteCabecMsg + { + versaoDados = configuracao.Versao, + cUF = configuracao.CodigoIbgeEstado + } + } + }; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; } - /// - public void cteRecepcaoLoteAsync(System.Xml.XmlNode cteDadosMsg, object userState) + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public XmlNode cteRecepcaoLote(XmlNode cteDadosMsg) { - if ((this.cteRecepcaoLoteOperationCompleted == null)) - { - this.cteRecepcaoLoteOperationCompleted = - new System.Threading.SendOrPostCallback(this.OncteRecepcaoLoteOperationCompleted); - } - this.InvokeAsync("cteRecepcaoLote", new object[] + soapEnvelope.body = new ResponseBody { - cteDadosMsg - }, this.cteRecepcaoLoteOperationCompleted, userState); + cteDadosMsg = cteDadosMsg + }; + return RequestBuilderAndSender.Execute(soapEnvelope, configuracao, TipoEvento.CTeRecepcao, "retEnviCte"); } - private void OncteRecepcaoLoteOperationCompleted(object arg) + public async Task cteRecepcaoLoteAsync(XmlNode cteDadosMsg) { - if ((this.cteRecepcaoLoteCompleted != null)) + soapEnvelope.body = new ResponseBody { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = - ((System.Web.Services.Protocols.InvokeCompletedEventArgs) (arg)); - this.cteRecepcaoLoteCompleted(this, - new cteRecepcaoLoteCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, - invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) - { - base.CancelAsync(userState); + cteDadosMsg = cteDadosMsg + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, configuracao, TipoEvento.CTeRecepcao, "retEnviCte"); } } - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao")] - [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao", - IsNullable = false)] - public partial class cteCabecMsg : System.Web.Services.Protocols.SoapHeader + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope { + [XmlElement(ElementName = "Header", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseHead head { get; set; } - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF - { - get { return this.cUFField; } - set { this.cUFField = value; } - } - - /// - public string versaoDados - { - get { return this.versaoDadosField; } - set { this.versaoDadosField = value; } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr - { - get { return this.anyAttrField; } - set { this.anyAttrField = value; } - } + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } } - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - public delegate void cteRecepcaoLoteCompletedEventHandler(object sender, cteRecepcaoLoteCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class cteRecepcaoLoteCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs + /// + /// Classe para o cabeçalho do Envelope SOAP + /// + public class ResponseHead : CommonResponseHead { - - private object[] results; - - internal cteRecepcaoLoteCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, - object userState) : - base(exception, cancelled, userState) - { - this.results = results; - } - - /// - public System.Xml.XmlNode Result - { - get - { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode) (this.results[0])); - } - } + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao")] + public T cteCabecMsg { get; set; } } + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao")] + public T cteDadosMsg { get; set; } + } } diff --git a/CTe.Wsdl/Recepcao/Sincrono/CteRecepcaoSincronoOSV4.cs b/CTe.Wsdl/Recepcao/Sincrono/CteRecepcaoSincronoOSV4.cs new file mode 100644 index 000000000..4f0cf48ce --- /dev/null +++ b/CTe.Wsdl/Recepcao/Sincrono/CteRecepcaoSincronoOSV4.cs @@ -0,0 +1,68 @@ +using CTe.CTeOSDocumento.Common; +using DFe.Utils; +using System; +using System.Net; +using System.Xml; +using System.Xml.Serialization; + +namespace CTe.Wsdl.Recepcao.Sincrono +{ + public class CteRecepcaoSincronoOSV4 + { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; + + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao configuracao; + + /// + /// Cria o cabeçalho do envelope a ser enviado e atribui as configurações do WSDL. + /// + /// + public CteRecepcaoSincronoOSV4(WsdlConfiguracao configuracao) + { + if (configuracao == null) + throw new ArgumentNullException(); + + this.configuracao = configuracao; + soapEnvelope = new SoapEnvelope(); + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; + } + + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public XmlNode CTeRecepcaoSincV4(XmlNode cteDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + cteDadosMsg = Convert.ToBase64String(Compressao.Zip(cteDadosMsg.OuterXml)) + }; + return RequestBuilderAndSender.Execute(soapEnvelope, configuracao, TipoEvento.CTeRecepcaoOSV4, "retCTeOS"); + } + + + + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope + { + + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } + } + + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoOSV4")] + public T cteDadosMsg { get; set; } + } + } +} diff --git a/CTe.Wsdl/Recepcao/Sincrono/CteRecepcaoSincronoV4.cs b/CTe.Wsdl/Recepcao/Sincrono/CteRecepcaoSincronoV4.cs new file mode 100644 index 000000000..d13a598e5 --- /dev/null +++ b/CTe.Wsdl/Recepcao/Sincrono/CteRecepcaoSincronoV4.cs @@ -0,0 +1,76 @@ +using CTe.CTeOSDocumento.Common; +using DFe.Utils; +using System; +using System.Net; +using System.Xml; +using System.Xml.Serialization; + +namespace CTe.Wsdl.Recepcao.Sincrono +{ + public class CteRecepcaoSincronoV4 + { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; + + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao configuracao; + + /// + /// Cria o cabeçalho do envelope a ser enviado e atribui as configurações do WSDL. + /// + /// + public CteRecepcaoSincronoV4(WsdlConfiguracao configuracao) + { + if (configuracao == null) + throw new ArgumentNullException(); + + this.configuracao = configuracao; + soapEnvelope = new SoapEnvelope(); + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; + } + + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public XmlNode CTeRecepcaoSincV4(XmlNode cteDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + cteDadosMsg = Convert.ToBase64String(Compressao.Zip(cteDadosMsg.OuterXml)) + }; + return RequestBuilderAndSender.Execute(soapEnvelope, configuracao, TipoEvento.CTeRecepcaoV4, "retCTe"); + } + + /*public async Task cteRecepcaoLoteAsync(XmlNode cteDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + cteDadosMsg = cteDadosMsg + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, configuracao, TipoEvento.CTeRecepcao, "retEnviCte"); + }*/ + + + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope + { + + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } + } + + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoSincV4")] + public T cteDadosMsg { get; set; } + } + } +} \ No newline at end of file diff --git a/CTe.Wsdl/RetRecepcao/CteRetRecepcao.cs b/CTe.Wsdl/RetRecepcao/CteRetRecepcao.cs index 0a00802e4..5a453f7ed 100644 --- a/CTe.Wsdl/RetRecepcao/CteRetRecepcao.cs +++ b/CTe.Wsdl/RetRecepcao/CteRetRecepcao.cs @@ -1,237 +1,96 @@ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ -/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Você pode obter a última versão desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ -/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ -/* qualquer versão posterior. */ -/* */ -/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ -/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ -/* */ -/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ -/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ -/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Você também pode obter uma copia da licença em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - - -// -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - -using CTe.Wsdl.Configuracao; +using System; +using System.Net; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; namespace CTe.Wsdl.RetRecepcao { - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name = "CteRetRecepcaoSoap12", - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao")] - public partial class CteRetRecepcao : System.Web.Services.Protocols.SoapHttpClientProtocol + public class CteRetRecepcao { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; - private cteCabecMsg cteCabecMsgValueField; + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao configuracao; - private System.Threading.SendOrPostCallback cteRetRecepcaoOperationCompleted; - - /// + /// + /// Cria o cabeçalho do envelope a ser enviado e atribui as configurações do WSDL. + /// + /// public CteRetRecepcao(WsdlConfiguracao configuracao) { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = configuracao.Url; - this.cteCabecMsgValue = new cteCabecMsg - { - cUF = configuracao.CodigoIbgeEstado, - versaoDados = configuracao.Versao - }; - this.ClientCertificates.Add(configuracao.CertificadoDigital); - this.Timeout = configuracao.TimeOut; - } - - public cteCabecMsg cteCabecMsgValue - { - get { return this.cteCabecMsgValueField; } - set { this.cteCabecMsgValueField = value; } - } - - /// - public event cteRetRecepcaoCompletedEventHandler cteRetRecepcaoCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("cteCabecMsgValue", - Direction = System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute( - "http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao/cteRetRecepcao", - Use = System.Web.Services.Description.SoapBindingUse.Literal, - ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: - System.Xml.Serialization.XmlElementAttribute( - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao")] - public System.Xml.XmlNode cteRetRecepcao( - [System.Xml.Serialization.XmlElementAttribute( - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao")] System.Xml.XmlNode cteDadosMsg) - { - object[] results = this.Invoke("cteRetRecepcao", new object[] - { - cteDadosMsg - }); - return ((System.Xml.XmlNode) (results[0])); - } + if (configuracao == null) + throw new ArgumentNullException(); - /// - public System.IAsyncResult BegincteRetRecepcao(System.Xml.XmlNode cteDadosMsg, System.AsyncCallback callback, - object asyncState) - { - return this.BeginInvoke("cteRetRecepcao", new object[] + this.configuracao = configuracao; + soapEnvelope = new SoapEnvelope { - cteDadosMsg - }, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndcteRetRecepcao(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode) (results[0])); - } - - /// - public void cteRetRecepcaoAsync(System.Xml.XmlNode cteDadosMsg) - { - this.cteRetRecepcaoAsync(cteDadosMsg, null); + head = new ResponseHead + { + cteCabecMsg = new cteCabecMsg + { + versaoDados = configuracao.Versao, + cUF = configuracao.CodigoIbgeEstado + } + } + }; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; } - /// - public void cteRetRecepcaoAsync(System.Xml.XmlNode cteDadosMsg, object userState) + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public XmlNode cteRetRecepcao(XmlNode cteDadosMsg) { - if ((this.cteRetRecepcaoOperationCompleted == null)) - { - this.cteRetRecepcaoOperationCompleted = - new System.Threading.SendOrPostCallback(this.OncteRetRecepcaoOperationCompleted); - } - this.InvokeAsync("cteRetRecepcao", new object[] + soapEnvelope.body = new ResponseBody { - cteDadosMsg - }, this.cteRetRecepcaoOperationCompleted, userState); + cteDadosMsg = cteDadosMsg + }; + return RequestBuilderAndSender.Execute(soapEnvelope, configuracao, TipoEvento.CTeRetRecepcao, "retConsReciCTe"); } - private void OncteRetRecepcaoOperationCompleted(object arg) + public async Task cteRetRecepcaoAsync(XmlNode cteDadosMsg) { - if ((this.cteRetRecepcaoCompleted != null)) + soapEnvelope.body = new ResponseBody { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = - ((System.Web.Services.Protocols.InvokeCompletedEventArgs) (arg)); - this.cteRetRecepcaoCompleted(this, - new cteRetRecepcaoCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, - invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) - { - base.CancelAsync(userState); + cteDadosMsg = cteDadosMsg + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, configuracao, TipoEvento.CTeRetRecepcao, "retConsReciCTe"); } } - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao")] - [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao", - IsNullable = false)] - public partial class cteCabecMsg : System.Web.Services.Protocols.SoapHeader + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope { + [XmlElement(ElementName = "Header", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseHead head { get; set; } - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF - { - get { return this.cUFField; } - set { this.cUFField = value; } - } - - /// - public string versaoDados - { - get { return this.versaoDadosField; } - set { this.versaoDadosField = value; } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr - { - get { return this.anyAttrField; } - set { this.anyAttrField = value; } - } + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } } - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - public delegate void cteRetRecepcaoCompletedEventHandler(object sender, cteRetRecepcaoCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class cteRetRecepcaoCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs + /// + /// Classe para o cabeçalho do Envelope SOAP + /// + public class ResponseHead : CommonResponseHead { - - private object[] results; - - internal cteRetRecepcaoCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, - object userState) : - base(exception, cancelled, userState) - { - this.results = results; - } - - /// - public System.Xml.XmlNode Result - { - get - { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode) (this.results[0])); - } - } + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao")] + public T cteCabecMsg { get; set; } } + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao")] + public T cteDadosMsg { get; set; } + } } diff --git a/CTe.Wsdl/Status/CTeStatusServico.cs b/CTe.Wsdl/Status/CTeStatusServico.cs new file mode 100644 index 000000000..b5f3e3e34 --- /dev/null +++ b/CTe.Wsdl/Status/CTeStatusServico.cs @@ -0,0 +1,138 @@ +using System; +using System.Net; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; + +namespace CTe.Wsdl.Status +{ + public class CteStatusServico + { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; + private SoapEnvelopeV4 soapEnvelopeV4; + + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao configuracao; + + /// + /// Cria o cabeçalho do envelope a ser enviado e atribui as configurações do WSDL. + /// + /// + public CteStatusServico(WsdlConfiguracao configuracao) + { + if (configuracao == null) + throw new ArgumentNullException(); + + this.configuracao = configuracao; + + soapEnvelope = new SoapEnvelope(); + soapEnvelopeV4 = new SoapEnvelopeV4(); + + if (configuracao.Versao != "4.00") + { + soapEnvelope.head = new ResponseHead + { + cteCabecMsg = new cteCabecMsg + { + versaoDados = configuracao.Versao, + cUF = configuracao.CodigoIbgeEstado + } + }; + } + + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; + } + + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public async Task cteStatusServicoCTAsync(XmlNode cteDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + cteDadosMsg = cteDadosMsg + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, configuracao, configuracao.Versao == "4.00" ? TipoEvento.CTeStatusServicoV4 : TipoEvento.CTeStatusServico, "retConsStatServCte"); + } + + public XmlNode cteStatusServicoCT(XmlNode cteDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + cteDadosMsg = cteDadosMsg + }; + + if (configuracao.Versao == "4.00") + { + soapEnvelopeV4.body = new ResponseBodyV4 + { + cteDadosMsg = cteDadosMsg + }; + } + + if (configuracao.Versao == "4.00") + { + return RequestBuilderAndSender.Execute(soapEnvelopeV4, configuracao, TipoEvento.CTeStatusServicoV4, + "retConsStatServCTe"); + } + + return RequestBuilderAndSender.Execute(soapEnvelope, configuracao, + TipoEvento.CTeStatusServico, + "retConsStatServCte"); + } + } + + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope + { + [XmlElement(ElementName = "Header", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseHead head { get; set; } + + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } + } + + /// + /// Classe para o cabeçalho do Envelope SOAP + /// + public class ResponseHead : CommonResponseHead + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteStatusServico")] + public T cteCabecMsg { get; set; } + } + + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteStatusServico")] + public T cteDadosMsg { get; set; } + } + + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelopeV4 : CommonSoapEnvelope + { + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBodyV4 body { get; set; } + } + + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBodyV4 : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CTeStatusServicoV4")] + public T cteDadosMsg { get; set; } + } +} diff --git a/CTe.Wsdl/Status/CteStatusServico.cs b/CTe.Wsdl/Status/CteStatusServico.cs deleted file mode 100644 index a0bcf5d96..000000000 --- a/CTe.Wsdl/Status/CteStatusServico.cs +++ /dev/null @@ -1,236 +0,0 @@ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ -/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Você pode obter a última versão desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ -/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ -/* qualquer versão posterior. */ -/* */ -/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ -/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ -/* */ -/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ -/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ -/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Você também pode obter uma copia da licença em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - - -// -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - -using CTe.Wsdl.Configuracao; - -namespace CTe.Wsdl.Status -{ - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name = "CteStatusServicoSoap12", - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteStatusServico")] - public partial class CteStatusServico : System.Web.Services.Protocols.SoapHttpClientProtocol - { - - private cteCabecMsg cteCabecMsgValueField; - - private System.Threading.SendOrPostCallback cteStatusServicoCTOperationCompleted; - - /// - public CteStatusServico(WsdlConfiguracao configuracao) - { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = configuracao.Url; - this.cteCabecMsgValue = new cteCabecMsg - { - cUF = configuracao.CodigoIbgeEstado, - versaoDados = configuracao.Versao - }; - this.ClientCertificates.Add(configuracao.CertificadoDigital); - this.Timeout = configuracao.TimeOut; - } - - public cteCabecMsg cteCabecMsgValue - { - get { return this.cteCabecMsgValueField; } - set { this.cteCabecMsgValueField = value; } - } - - /// - public event cteStatusServicoCTCompletedEventHandler cteStatusServicoCTCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("cteCabecMsgValue", - Direction = System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute( - "http://www.portalfiscal.inf.br/cte/wsdl/CteStatusServico/cteStatusServicoCT", - Use = System.Web.Services.Description.SoapBindingUse.Literal, - ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: - System.Xml.Serialization.XmlElementAttribute( - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteStatusServico")] - public System.Xml.XmlNode cteStatusServicoCT( - [System.Xml.Serialization.XmlElementAttribute( - Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteStatusServico")] System.Xml.XmlNode cteDadosMsg) - { - object[] results = this.Invoke("cteStatusServicoCT", new object[] - { - cteDadosMsg - }); - return ((System.Xml.XmlNode) (results[0])); - } - - /// - public System.IAsyncResult BegincteStatusServicoCT(System.Xml.XmlNode cteDadosMsg, System.AsyncCallback callback, - object asyncState) - { - return this.BeginInvoke("cteStatusServicoCT", new object[] - { - cteDadosMsg - }, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndcteStatusServicoCT(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode) (results[0])); - } - - /// - public void cteStatusServicoCTAsync(System.Xml.XmlNode cteDadosMsg) - { - this.cteStatusServicoCTAsync(cteDadosMsg, null); - } - - /// - public void cteStatusServicoCTAsync(System.Xml.XmlNode cteDadosMsg, object userState) - { - if ((this.cteStatusServicoCTOperationCompleted == null)) - { - this.cteStatusServicoCTOperationCompleted = - new System.Threading.SendOrPostCallback(this.OncteStatusServicoCTOperationCompleted); - } - this.InvokeAsync("cteStatusServicoCT", new object[] - { - cteDadosMsg - }, this.cteStatusServicoCTOperationCompleted, userState); - } - - private void OncteStatusServicoCTOperationCompleted(object arg) - { - if ((this.cteStatusServicoCTCompleted != null)) - { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = - ((System.Web.Services.Protocols.InvokeCompletedEventArgs) (arg)); - this.cteStatusServicoCTCompleted(this, - new cteStatusServicoCTCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, - invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) - { - base.CancelAsync(userState); - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteStatusServico")] - [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.portalfiscal.inf.br/cte/wsdl/CteStatusServico", - IsNullable = false)] - public partial class cteCabecMsg : System.Web.Services.Protocols.SoapHeader - { - - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF - { - get { return this.cUFField; } - set { this.cUFField = value; } - } - - /// - public string versaoDados - { - get { return this.versaoDadosField; } - set { this.versaoDadosField = value; } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr - { - get { return this.anyAttrField; } - set { this.anyAttrField = value; } - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - public delegate void cteStatusServicoCTCompletedEventHandler(object sender, cteStatusServicoCTCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class cteStatusServicoCTCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - - private object[] results; - - internal cteStatusServicoCTCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, - object userState) : - base(exception, cancelled, userState) - { - this.results = results; - } - - /// - public System.Xml.XmlNode Result - { - get - { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode) (this.results[0])); - } - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/Assets/Schemas.Cte/consSitCTeTiposBasico_v3.00.xsd b/CTeRefatorar/Assets/Schemas.Cte/consSitCTeTiposBasico_v3.00.xsd deleted file mode 100755 index bd38cbb1d..000000000 --- a/CTeRefatorar/Assets/Schemas.Cte/consSitCTeTiposBasico_v3.00.xsd +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - Tipo Pedido de Consulta da Situação Atual do Conhecimento de Transporte eletrônico - - - - - Identificação do Ambiente: -1 - Produção -2 - Homologação - - - - - Serviço Solicitado - - - - - Chaves de acesso da CT-e, compostas por: UF do emitente, AAMM da emissão da CT-e, CNPJ do emitente, modelo, série e número da CT-e e código numérico + DV. - - - - - - - - - - - - Tipo Retorno de Pedido de Consulta da Situação Atual do Conhecimento de Transporte eletrônico - - - - - Identificação do Ambiente: -1 - Produção -2 - Homologação - - - - - Versão do Aplicativo que processou o CT-e - - - - - Código do status da mensagem enviada. - - - - - Descrição literal do status do serviço solicitado. - - - - - código da UF de atendimento - - - - - - - - - - - - - Tipo Versão do Consulta situação de CT-e - 2.00 - - - - - - diff --git a/CTeRefatorar/CTeRefatorar.csproj b/CTeRefatorar/CTeRefatorar.csproj deleted file mode 100755 index 71ca57c28..000000000 --- a/CTeRefatorar/CTeRefatorar.csproj +++ /dev/null @@ -1,370 +0,0 @@ - - - - - Debug - AnyCPU - {C1939C50-FA18-4B90-83E6-8E7721A3AC6F} - Library - Properties - CTeRefatorar - CTeRefatorar - v4.0 - 512 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - Designer - - - - - - - - \ No newline at end of file diff --git a/CTeRefatorar/Properties/AssemblyInfo.cs b/CTeRefatorar/Properties/AssemblyInfo.cs deleted file mode 100755 index 7dd8b1455..000000000 --- a/CTeRefatorar/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("CTeRefatorar")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("CTeRefatorar")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("c1939c50-fa18-4b90-83e6-8e7721a3ac6f")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CTeRefatorar/RegrasNegocios/AutorizacaoCte.cs b/CTeRefatorar/RegrasNegocios/AutorizacaoCte.cs deleted file mode 100755 index 87e440860..000000000 --- a/CTeRefatorar/RegrasNegocios/AutorizacaoCte.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Security.Cryptography.X509Certificates; -using System.Xml; -using FusionCore.DFe.RegrasNegocios.contratos; -using FusionCore.DFe.WsdlCte.Homologacao.Helper; -using FusionCore.DFe.WsdlCte.Homologacao.Recepcao; -using FusionCore.DFe.XmlCte; - -namespace FusionCore.DFe.RegrasNegocios -{ - public class AutorizacaoCte : EnviaSefaz - { - public XmlNode Executa(XmlNode xmlEnvio, - FusionEstadoUFCTe estado, - X509Certificate2 certificado, - FusionTipoAmbienteCTe ambiente) - { - var url = UrlHelper.ObterUrl(estado, ambiente); - - var cteRecepcao = new CteRecepcao(url.CteRecepcao) - { - cteCabecMsgValue = new cteCabecMsg - { - versaoDados = "2.00", - cUF = estado.GetCodigoUF() - } - }; - - cteRecepcao.ClientCertificates.Add(certificado); - - var xml = cteRecepcao.cteRecepcaoLote(xmlEnvio); - - return xml; - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/RegrasNegocios/Chave/GerarChaveFiscal.cs b/CTeRefatorar/RegrasNegocios/Chave/GerarChaveFiscal.cs deleted file mode 100755 index 3e761c92e..000000000 --- a/CTeRefatorar/RegrasNegocios/Chave/GerarChaveFiscal.cs +++ /dev/null @@ -1,133 +0,0 @@ -using System; -using System.Text; - -namespace FusionCore.DFe.RegrasNegocios.Chave -{ - public class GerarChaveFiscal - { - private readonly int _modeloDocumentoFiscal; - private readonly int _tipoEmissao; - private readonly long _codigoNumerico; - private readonly int _codigoIbgeUf; - private readonly long _documentoUnico; - private readonly long _numeroDocumento; - private readonly int _serie; - private readonly DateTime _dataEHoraEmissao; - public string Chave { get; private set; } - public byte DigitoVerificador { get; private set; } - - public GerarChaveFiscal(int modeloDocumentoFiscal, - int tipoEmissao, - long codigoNumerico, - int codigoIbgeUf, - DateTime dataEHoraEmissao, - long documentoUnico, - long numeroDocumento, - int serie) - { - _modeloDocumentoFiscal = modeloDocumentoFiscal; - _tipoEmissao = tipoEmissao; - _codigoNumerico = codigoNumerico; - _codigoIbgeUf = codigoIbgeUf; - _documentoUnico = documentoUnico; - _numeroDocumento = numeroDocumento; - _serie = serie; - _dataEHoraEmissao = dataEHoraEmissao; - - - GeraChave(); - } - - private void GeraChave() - { - var codigoUf = _codigoIbgeUf.ToString("D2"); - var anoMes = _dataEHoraEmissao.ToString("yyMM"); - var documentoUnico = _documentoUnico.ToString("D14"); - var modeloDocumentoFiscal = _modeloDocumentoFiscal.ToString("D2"); - var serie = _serie.ToString("D3"); - var numeroDocumento = _numeroDocumento.ToString("D9"); - var tipoEmissao = _tipoEmissao.ToString(); - var codigoNumerico = _codigoNumerico.ToString("D8"); - - var chave = new StringBuilder(); - - chave.Append(codigoUf) - .Append(anoMes) - .Append(documentoUnico) - .Append(modeloDocumentoFiscal) - .Append(serie) - .Append(numeroDocumento) - .Append(tipoEmissao) - .Append(codigoNumerico); - - var digitoVerificador = CalculaDigitoVerificador(chave.ToString()); - - chave.Append(digitoVerificador); - - Chave = chave.ToString(); - DigitoVerificador = byte.Parse(digitoVerificador); - } - - private string CalculaDigitoVerificador(string chave) - { - var soma = 0; // Vai guardar a Soma - var mod = -1; // Vai guardar o Resto da divisão - var dv = -1; // Vai guardar o DigitoVerificador - var pesso = 2; // vai guardar o pesso de multiplicacao - - //percorrendo cada caracter da chave da direita para esquerda para fazer os calculos com o pesso - for (var i = chave.Length - 1; i != -1; i--) - { - var ch = Convert.ToInt32(chave[i].ToString()); - soma += ch*pesso; - //sempre que for 9 voltamos o pesso a 2 - if (pesso < 9) - pesso += 1; - else - pesso = 2; - } - - //Agora que tenho a soma vamos pegar o resto da divisão por 11 - mod = soma%11; - //Aqui temos uma regrinha, se o resto da divisão for 0 ou 1 então o dv vai ser 0 - if (mod == 0 || mod == 1) - dv = 0; - else - dv = 11 - mod; - - return dv.ToString(); - } - - public static void ValidarChave(string chaveNfe) - { - var codifoUF = int.Parse(chaveNfe.Substring(0, 2)); - - var anoMes = chaveNfe.Substring(2, 4); - var ano = int.Parse(anoMes.Substring(0, 2)); - var mes = int.Parse(anoMes.Substring(2, 2)); - - var anoEMesData = new DateTime(ano, mes, 1); - - var cnpj = long.Parse(chaveNfe.Substring(6, 14)); - var modelo = int.Parse(chaveNfe.Substring(20, 2)); - var serie = int.Parse(chaveNfe.Substring(22, 3)); - var numeroNfe = long.Parse(chaveNfe.Substring(25, 9)); - var formaEmissao = int.Parse(chaveNfe.Substring(34, 1)); - var codigoNumerico = long.Parse(chaveNfe.Substring(35, 8)); - var digitoVerificador = chaveNfe.Substring(43, 1); - - var gerarChave = new GerarChaveFiscal(modelo, - formaEmissao, - codigoNumerico, - codifoUF, - anoEMesData, - cnpj, - numeroNfe, - serie); - - if (digitoVerificador.Equals(gerarChave.DigitoVerificador.ToString())) return; - - throw new InvalidOperationException("Chave da NF-e não é válida"); - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/RegrasNegocios/Contratos/EnviaSefaz.cs b/CTeRefatorar/RegrasNegocios/Contratos/EnviaSefaz.cs deleted file mode 100755 index be5af3431..000000000 --- a/CTeRefatorar/RegrasNegocios/Contratos/EnviaSefaz.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Security.Cryptography.X509Certificates; -using System.Xml; -using FusionCore.DFe.XmlCte; - -namespace FusionCore.DFe.RegrasNegocios.contratos -{ - public interface EnviaSefaz - { - XmlNode Executa(XmlNode xmlEnvio, - FusionEstadoUFCTe estado, - X509Certificate2 certificado, - FusionTipoAmbienteCTe ambiente); - } -} \ No newline at end of file diff --git a/CTeRefatorar/RegrasNegocios/InutilizacaoCte.cs b/CTeRefatorar/RegrasNegocios/InutilizacaoCte.cs deleted file mode 100755 index 51f8f70d8..000000000 --- a/CTeRefatorar/RegrasNegocios/InutilizacaoCte.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Security.Cryptography.X509Certificates; -using System.Xml; -using FusionCore.DFe.RegrasNegocios.contratos; -using FusionCore.DFe.WsdlCte.Homologacao.Helper; -using FusionCore.DFe.WsdlCte.Homologacao.Inutilizacao; -using FusionCore.DFe.XmlCte; - -namespace FusionCore.DFe.RegrasNegocios -{ - public class InutilizacaoCte : EnviaSefaz - { - public XmlNode Executa(XmlNode xmlEnvio, - FusionEstadoUFCTe estado, - X509Certificate2 certificado, - FusionTipoAmbienteCTe ambiente) - { - var url = UrlHelper.ObterUrl(estado, ambiente); - - var wsdlInutilizacao = new CteInutilizacao(url.CteInutilizacao) - { - cteCabecMsgValue = new cteCabecMsg - { - versaoDados = "2.00", - cUF = estado.GetCodigoUF() - } - }; - - wsdlInutilizacao.ClientCertificates.Add(certificado); - - var xml = wsdlInutilizacao.cteInutilizacaoCT(xmlEnvio); - - return xml; - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/RegrasNegocios/RetornoRecepcaoCte.cs b/CTeRefatorar/RegrasNegocios/RetornoRecepcaoCte.cs deleted file mode 100755 index f7877df28..000000000 --- a/CTeRefatorar/RegrasNegocios/RetornoRecepcaoCte.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Security.Cryptography.X509Certificates; -using System.Xml; -using FusionCore.DFe.RegrasNegocios.contratos; -using FusionCore.DFe.WsdlCte.Homologacao.Helper; -using FusionCore.DFe.WsdlCte.Homologacao.RetornoRecepcao; -using FusionCore.DFe.XmlCte; - -namespace FusionCore.DFe.RegrasNegocios -{ - public class RetornoRecepcaoCte : EnviaSefaz - { - public XmlNode Executa(XmlNode xmlEnvio, - FusionEstadoUFCTe estado, - X509Certificate2 certificado, - FusionTipoAmbienteCTe ambiente) - { - var url = UrlHelper.ObterUrl(estado, ambiente); - - var cteRetRecepcao = new CteRetRecepcao(url.CteRetRecepcao) - { - cteCabecMsgValue = new cteCabecMsg - { - versaoDados = "2.00", - cUF = estado.GetCodigoUF() - } - }; - - cteRetRecepcao.ClientCertificates.Add(certificado); - - var xml = cteRetRecepcao.cteRetRecepcao(xmlEnvio); - - return xml; - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/WsdlCte/Homologacao/Evento/CteRecepcaoEvento.cs b/CTeRefatorar/WsdlCte/Homologacao/Evento/CteRecepcaoEvento.cs deleted file mode 100755 index 5c59470ce..000000000 --- a/CTeRefatorar/WsdlCte/Homologacao/Evento/CteRecepcaoEvento.cs +++ /dev/null @@ -1,167 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FusionCore.DFe.WsdlCte.Homologacao.Evento -{ // -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name="CteRecepcaoEventoSoap12", Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcaoEvento")] - public partial class CteRecepcaoEvento : System.Web.Services.Protocols.SoapHttpClientProtocol { - - private cteCabecMsg cteCabecMsgValueField; - - private System.Threading.SendOrPostCallback cteRecepcaoEventoOperationCompleted; - - /// - public CteRecepcaoEvento(string url) { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = url; - } - - public cteCabecMsg cteCabecMsgValue { - get { - return this.cteCabecMsgValueField; - } - set { - this.cteCabecMsgValueField = value; - } - } - - /// - public event cteRecepcaoEventoCompletedEventHandler cteRecepcaoEventoCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("cteCabecMsgValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcaoEvento/cteRecepcaoEvento", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcaoEvento")] - public System.Xml.XmlNode cteRecepcaoEvento([System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcaoEvento")] System.Xml.XmlNode cteDadosMsg) { - object[] results = this.Invoke("cteRecepcaoEvento", new object[] { - cteDadosMsg}); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public System.IAsyncResult BegincteRecepcaoEvento(System.Xml.XmlNode cteDadosMsg, System.AsyncCallback callback, object asyncState) { - return this.BeginInvoke("cteRecepcaoEvento", new object[] { - cteDadosMsg}, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndcteRecepcaoEvento(System.IAsyncResult asyncResult) { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public void cteRecepcaoEventoAsync(System.Xml.XmlNode cteDadosMsg) { - this.cteRecepcaoEventoAsync(cteDadosMsg, null); - } - - /// - public void cteRecepcaoEventoAsync(System.Xml.XmlNode cteDadosMsg, object userState) { - if ((this.cteRecepcaoEventoOperationCompleted == null)) { - this.cteRecepcaoEventoOperationCompleted = new System.Threading.SendOrPostCallback(this.OncteRecepcaoEventoOperationCompleted); - } - this.InvokeAsync("cteRecepcaoEvento", new object[] { - cteDadosMsg}, this.cteRecepcaoEventoOperationCompleted, userState); - } - - private void OncteRecepcaoEventoOperationCompleted(object arg) { - if ((this.cteRecepcaoEventoCompleted != null)) { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); - this.cteRecepcaoEventoCompleted(this, new cteRecepcaoEventoCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) { - base.CancelAsync(userState); - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcaoEvento")] - [System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcaoEvento", IsNullable=false)] - public partial class cteCabecMsg : System.Web.Services.Protocols.SoapHeader { - - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF { - get { - return this.cUFField; - } - set { - this.cUFField = value; - } - } - - /// - public string versaoDados { - get { - return this.versaoDadosField; - } - set { - this.versaoDadosField = value; - } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr { - get { - return this.anyAttrField; - } - set { - this.anyAttrField = value; - } - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - public delegate void cteRecepcaoEventoCompletedEventHandler(object sender, cteRecepcaoEventoCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class cteRecepcaoEventoCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { - - private object[] results; - - internal cteRecepcaoEventoCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) { - this.results = results; - } - - /// - public System.Xml.XmlNode Result { - get { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode)(this.results[0])); - } - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/WsdlCte/Homologacao/Helper/UrlHelper.cs b/CTeRefatorar/WsdlCte/Homologacao/Helper/UrlHelper.cs deleted file mode 100755 index 5f11fb597..000000000 --- a/CTeRefatorar/WsdlCte/Homologacao/Helper/UrlHelper.cs +++ /dev/null @@ -1,247 +0,0 @@ -using System; -using FusionCore.DFe.XmlCte; - -namespace FusionCore.DFe.WsdlCte.Homologacao.Helper -{ - public class UrlHelper - { - public static UrlServicoSefaz ObterUrl(FusionEstadoUFCTe estado, FusionTipoAmbienteCTe ambiente) - { - switch (ambiente) - { - case FusionTipoAmbienteCTe.Homologacao: - return UrlHomologacao(estado); - case FusionTipoAmbienteCTe.Producao: - return UrlProducao(estado); - } - - throw new InvalidOperationException("Tipo ambiente inválido"); - } - - private static UrlServicoSefaz UrlProducao(FusionEstadoUFCTe estado) - { - switch (estado) - { - case FusionEstadoUFCTe.MT: - return new UrlServicoSefaz - { - CteStatusServico = "https://cte.sefaz.mt.gov.br/ctews/services/CteStatusServico", - CteRecepcao = "https://cte.sefaz.mt.gov.br/ctews/services/CteRecepcao", - CteInutilizacao = "https://cte.sefaz.mt.gov.br/ctews/services/CteInutilizacao", - CteRetRecepcao = "https://cte.sefaz.mt.gov.br/ctews/services/CteRetRecepcao", - CteRecepcaoEvento = "https://cte.sefaz.mt.gov.br/ctews2/services/CteRecepcaoEvento?wsdl" - }; - - case FusionEstadoUFCTe.MS: - return new UrlServicoSefaz - { - CteStatusServico = "https://producao.cte.ms.gov.br/ws/CteStatusServico", - CteRecepcao = "https://producao.cte.ms.gov.br/ws/CteRecepcao", - CteInutilizacao = "https://producao.cte.ms.gov.br/ws/CteInutilizacao", - CteRetRecepcao = "https://producao.cte.ms.gov.br/ws/CteRetRecepcao", - CteRecepcaoEvento = "https://producao.cte.ms.gov.br/ws/CteRecepcaoEvento" - }; - - case FusionEstadoUFCTe.MG: - return new UrlServicoSefaz - { - CteStatusServico = "https://cte.fazenda.mg.gov.br/cte/services/CteStatusServico", - CteRecepcao = "https://cte.fazenda.mg.gov.br/cte/services/CteRecepcao", - CteInutilizacao = "https://cte.fazenda.mg.gov.br/cte/services/CteInutilizacao", - CteRetRecepcao = "https://cte.fazenda.mg.gov.br/cte/services/CteRetRecepcao", - CteRecepcaoEvento = "https://cte.fazenda.mg.gov.br/cte/services/RecepcaoEvento" - }; - - case FusionEstadoUFCTe.PR: - return new UrlServicoSefaz - { - CteStatusServico = "https://cte.fazenda.pr.gov.br/cte/CteStatusServico?wsdl", - CteRecepcao = "https://cte.fazenda.pr.gov.br/cte/CteRecepcao?wsdl", - CteInutilizacao = "https://cte.fazenda.pr.gov.br/cte/CteInutilizacao?wsdl", - CteRetRecepcao = "https://cte.fazenda.pr.gov.br/cte/CteRetRecepcao?wsdl", - CteRecepcaoEvento = "https://cte.fazenda.pr.gov.br/cte/CteRecepcaoEvento?wsdl" - }; - - case FusionEstadoUFCTe.RS: - return new UrlServicoSefaz - { - CteStatusServico = "https://cte.svrs.rs.gov.br/ws/ctestatusservico/CteStatusServico.asmx", - CteRecepcao = "https://cte.svrs.rs.gov.br/ws/cterecepcao/CteRecepcao.asmx", - CteInutilizacao = "https://cte.svrs.rs.gov.br/ws/cteinutilizacao/cteinutilizacao.asmx", - CteRetRecepcao = "https://cte.svrs.rs.gov.br/ws/cteretrecepcao/cteRetRecepcao.asmx", - CteRecepcaoEvento = "https://cte.svrs.rs.gov.br/ws/cterecepcaoevento/cterecepcaoevento.asmx" - }; - - case FusionEstadoUFCTe.SP: - return new UrlServicoSefaz - { - CteStatusServico = "https://nfe.fazenda.sp.gov.br/cteWEB/services/cteStatusServico.asmx", - CteRecepcao = "https://nfe.fazenda.sp.gov.br/cteWEB/services/cteRecepcao.asmx", - CteInutilizacao = "https://nfe.fazenda.sp.gov.br/cteWEB/services/cteInutilizacao.asmx", - CteRetRecepcao = "https://nfe.fazenda.sp.gov.br/cteWEB/services/cteRetRecepcao.asmx", - CteRecepcaoEvento = "https://nfe.fazenda.sp.gov.br/cteweb/services/cteRecepcaoEvento.asmx" - }; - - case FusionEstadoUFCTe.AC: - case FusionEstadoUFCTe.AL: - case FusionEstadoUFCTe.AM: - case FusionEstadoUFCTe.BA: - case FusionEstadoUFCTe.CE: - case FusionEstadoUFCTe.DF: - case FusionEstadoUFCTe.ES: - case FusionEstadoUFCTe.GO: - case FusionEstadoUFCTe.MA: - case FusionEstadoUFCTe.PA: - case FusionEstadoUFCTe.PB: - case FusionEstadoUFCTe.PI: - case FusionEstadoUFCTe.RJ: - case FusionEstadoUFCTe.RN: - case FusionEstadoUFCTe.RO: - case FusionEstadoUFCTe.SC: - case FusionEstadoUFCTe.SE: - case FusionEstadoUFCTe.TO: - return new UrlServicoSefaz - { - CteStatusServico = "https://cte.svrs.rs.gov.br/ws/ctestatusservico/CteStatusServico.asmx", - CteRecepcao = "https://cte.svrs.rs.gov.br/ws/cterecepcao/CteRecepcao.asmx", - CteInutilizacao = "https://cte.svrs.rs.gov.br/ws/cteinutilizacao/cteinutilizacao.asmx", - CteRetRecepcao = "https://cte.svrs.rs.gov.br/ws/cteretrecepcao/cteRetRecepcao.asmx", - CteRecepcaoEvento = "https://cte.svrs.rs.gov.br/ws/cterecepcaoevento/cterecepcaoevento.asmx" - }; - - case FusionEstadoUFCTe.AP: - case FusionEstadoUFCTe.PE: - case FusionEstadoUFCTe.RR: - return new UrlServicoSefaz - { - CteStatusServico = "https://nfe.fazenda.sp.gov.br/cteWEB/services/CteStatusServico.asmx", - CteRecepcao = "https://nfe.fazenda.sp.gov.br/cteWEB/services/cteRecepcao.asmx", - CteInutilizacao = "https://nfe.fazenda.sp.gov.br/cteWEB/services/cteInutilizacao.asmx", - CteRetRecepcao = "https://nfe.fazenda.sp.gov.br/cteWEB/services/CteRetRecepcao.asmx", - CteRecepcaoEvento = "https://nfe.fazenda.sp.gov.br/cteWEB/services/CteRecepcaoEvento.asmx" - }; - } - - throw new InvalidOperationException("Sigla estádo uf " + estado + " está inválido"); - } - - private static UrlServicoSefaz UrlHomologacao(FusionEstadoUFCTe estado) - { - switch (estado) - { - case FusionEstadoUFCTe.MT: - return new UrlServicoSefaz - { - CteStatusServico = "https://homologacao.sefaz.mt.gov.br/ctews/services/CteStatusServico", - CteRecepcao = "https://homologacao.sefaz.mt.gov.br/ctews/services/CteRecepcao", - CteInutilizacao = "https://homologacao.sefaz.mt.gov.br/ctews/services/CteInutilizacao", - CteRetRecepcao = "https://homologacao.sefaz.mt.gov.br/ctews/services/CteRetRecepcao", - CteRecepcaoEvento = "https://homologacao.sefaz.mt.gov.br/ctews2/services/CteRecepcaoEvento?wsdl" - }; - - case FusionEstadoUFCTe.MS: - return new UrlServicoSefaz - { - CteStatusServico = "https://homologacao.cte.ms.gov.br/ws/CteStatusServico", - CteRecepcao = "https://homologacao.cte.ms.gov.br/ws/CteRecepcao", - CteInutilizacao = "https://homologacao.cte.ms.gov.br/ws/CteInutilizacao", - CteRetRecepcao = "https://homologacao.cte.ms.gov.br/ws/CteRetRecepcao", - CteRecepcaoEvento = "https://homologacao.cte.ms.gov.br/ws/CteRecepcaoEvento" - }; - - case FusionEstadoUFCTe.MG: - return new UrlServicoSefaz - { - CteStatusServico = "https://hcte.fazenda.mg.gov.br/cte/services/CteStatusServico", - CteRecepcao = "https://hcte.fazenda.mg.gov.br/cte/services/CteRecepcao", - CteInutilizacao = "https://hcte.fazenda.mg.gov.br/cte/services/CteInutilizacao", - CteRetRecepcao = "https://hcte.fazenda.mg.gov.br/cte/services/CteRetRecepcao", - CteRecepcaoEvento = "https://hcte.fazenda.mg.gov.br/cte/services/RecepcaoEvento" - }; - - case FusionEstadoUFCTe.PR: - return new UrlServicoSefaz - { - CteStatusServico = "https://homologacao.cte.fazenda.pr.gov.br/cte/CteStatusServico?wsdl", - CteRecepcao = "https://homologacao.cte.fazenda.pr.gov.br/cte/CteRecepcao?wsdl", - CteInutilizacao = "https://homologacao.cte.fazenda.pr.gov.br/cte/CteInutilizacao?wsdl", - CteRetRecepcao = "https://homologacao.cte.fazenda.pr.gov.br/cte/CteRetRecepcao?wsdl", - CteRecepcaoEvento = "https://homologacao.cte.fazenda.pr.gov.br/cte/CteRecepcaoEvento?wsdl" - }; - - case FusionEstadoUFCTe.RS: - return new UrlServicoSefaz - { - CteStatusServico = - "https://cte-homologacao.svrs.rs.gov.br/ws/ctestatusservico/CteStatusServico.asmx", - CteRecepcao = "https://cte-homologacao.svrs.rs.gov.br/ws/cterecepcao/CteRecepcao.asmx", - CteInutilizacao = - "https://cte-homologacao.svrs.rs.gov.br/ws/cteinutilizacao/cteinutilizacao.asmx", - CteRetRecepcao = "https://cte-homologacao.svrs.rs.gov.br/ws/cteretrecepcao/cteRetRecepcao.asmx", - CteRecepcaoEvento = - "https://cte-homologacao.svrs.rs.gov.br/ws/cterecepcaoevento/cterecepcaoevento.asmx" - }; - - case FusionEstadoUFCTe.SP: - return new UrlServicoSefaz - { - CteStatusServico = - "https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteStatusServico.asmx", - CteRecepcao = "https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteRecepcao.asmx", - CteInutilizacao = - "https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteInutilizacao.asmx", - CteRetRecepcao = "https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteRetRecepcao.asmx", - CteRecepcaoEvento = - "https://homologacao.nfe.fazenda.sp.gov.br/cteweb/services/cteRecepcaoEvento.asmx" - }; - - case FusionEstadoUFCTe.AC: - case FusionEstadoUFCTe.AL: - case FusionEstadoUFCTe.AM: - case FusionEstadoUFCTe.BA: - case FusionEstadoUFCTe.CE: - case FusionEstadoUFCTe.DF: - case FusionEstadoUFCTe.ES: - case FusionEstadoUFCTe.GO: - case FusionEstadoUFCTe.MA: - case FusionEstadoUFCTe.PA: - case FusionEstadoUFCTe.PB: - case FusionEstadoUFCTe.PI: - case FusionEstadoUFCTe.RJ: - case FusionEstadoUFCTe.RN: - case FusionEstadoUFCTe.RO: - case FusionEstadoUFCTe.SC: - case FusionEstadoUFCTe.SE: - case FusionEstadoUFCTe.TO: - return new UrlServicoSefaz - { - CteStatusServico = - "https://cte-homologacao.svrs.rs.gov.br/ws/ctestatusservico/CteStatusServico.asmx", - CteRecepcao = "https://cte-homologacao.svrs.rs.gov.br/ws/cterecepcao/CteRecepcao.asmx", - CteInutilizacao = - "https://cte-homologacao.svrs.rs.gov.br/ws/cteinutilizacao/cteinutilizacao.asmx", - CteRetRecepcao = "https://cte-homologacao.svrs.rs.gov.br/ws/cteretrecepcao/cteRetRecepcao.asmx", - CteRecepcaoEvento = - "https://cte-homologacao.svrs.rs.gov.br/ws/cterecepcaoevento/cterecepcaoevento.asmx" - }; - - case FusionEstadoUFCTe.AP: - case FusionEstadoUFCTe.PE: - case FusionEstadoUFCTe.RR: - return new UrlServicoSefaz - { - CteStatusServico = - "https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/CteStatusServico.asmx", - CteRecepcao = "https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/CteRecepcao.asmx", - CteInutilizacao = - "https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteInutilizacao.asmx", - CteRetRecepcao = "https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/CteRetRecepcao.asmx", - CteRecepcaoEvento = - "https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/CteRecepcaoEvento.asmx" - }; - } - - throw new InvalidOperationException("Sigla estádo uf " + estado + " está inválido"); - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/WsdlCte/Homologacao/Inutilizacao/CteInutilizacao.cs b/CTeRefatorar/WsdlCte/Homologacao/Inutilizacao/CteInutilizacao.cs deleted file mode 100755 index 5086de9aa..000000000 --- a/CTeRefatorar/WsdlCte/Homologacao/Inutilizacao/CteInutilizacao.cs +++ /dev/null @@ -1,167 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FusionCore.DFe.WsdlCte.Homologacao.Inutilizacao -{ // -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name="CteInutilizacaoSoap12", Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteInutilizacao")] - public partial class CteInutilizacao : System.Web.Services.Protocols.SoapHttpClientProtocol { - - private cteCabecMsg cteCabecMsgValueField; - - private System.Threading.SendOrPostCallback cteInutilizacaoCTOperationCompleted; - - /// - public CteInutilizacao(string url) { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = url; - } - - public cteCabecMsg cteCabecMsgValue { - get { - return this.cteCabecMsgValueField; - } - set { - this.cteCabecMsgValueField = value; - } - } - - /// - public event cteInutilizacaoCTCompletedEventHandler cteInutilizacaoCTCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("cteCabecMsgValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.portalfiscal.inf.br/cte/wsdl/CteInutilizacao/cteInutilizacaoCT", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteInutilizacao")] - public System.Xml.XmlNode cteInutilizacaoCT([System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteInutilizacao")] System.Xml.XmlNode cteDadosMsg) { - object[] results = this.Invoke("cteInutilizacaoCT", new object[] { - cteDadosMsg}); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public System.IAsyncResult BegincteInutilizacaoCT(System.Xml.XmlNode cteDadosMsg, System.AsyncCallback callback, object asyncState) { - return this.BeginInvoke("cteInutilizacaoCT", new object[] { - cteDadosMsg}, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndcteInutilizacaoCT(System.IAsyncResult asyncResult) { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public void cteInutilizacaoCTAsync(System.Xml.XmlNode cteDadosMsg) { - this.cteInutilizacaoCTAsync(cteDadosMsg, null); - } - - /// - public void cteInutilizacaoCTAsync(System.Xml.XmlNode cteDadosMsg, object userState) { - if ((this.cteInutilizacaoCTOperationCompleted == null)) { - this.cteInutilizacaoCTOperationCompleted = new System.Threading.SendOrPostCallback(this.OncteInutilizacaoCTOperationCompleted); - } - this.InvokeAsync("cteInutilizacaoCT", new object[] { - cteDadosMsg}, this.cteInutilizacaoCTOperationCompleted, userState); - } - - private void OncteInutilizacaoCTOperationCompleted(object arg) { - if ((this.cteInutilizacaoCTCompleted != null)) { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); - this.cteInutilizacaoCTCompleted(this, new cteInutilizacaoCTCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) { - base.CancelAsync(userState); - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteInutilizacao")] - [System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteInutilizacao", IsNullable=false)] - public partial class cteCabecMsg : System.Web.Services.Protocols.SoapHeader { - - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF { - get { - return this.cUFField; - } - set { - this.cUFField = value; - } - } - - /// - public string versaoDados { - get { - return this.versaoDadosField; - } - set { - this.versaoDadosField = value; - } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr { - get { - return this.anyAttrField; - } - set { - this.anyAttrField = value; - } - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - public delegate void cteInutilizacaoCTCompletedEventHandler(object sender, cteInutilizacaoCTCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class cteInutilizacaoCTCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { - - private object[] results; - - internal cteInutilizacaoCTCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) { - this.results = results; - } - - /// - public System.Xml.XmlNode Result { - get { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode)(this.results[0])); - } - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/WsdlCte/Homologacao/Recepcao/CteRecepcao.cs b/CTeRefatorar/WsdlCte/Homologacao/Recepcao/CteRecepcao.cs deleted file mode 100755 index 1a0210633..000000000 --- a/CTeRefatorar/WsdlCte/Homologacao/Recepcao/CteRecepcao.cs +++ /dev/null @@ -1,167 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FusionCore.DFe.WsdlCte.Homologacao.Recepcao -{ // -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name="CteRecepcaoSoap12", Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao")] - public partial class CteRecepcao : System.Web.Services.Protocols.SoapHttpClientProtocol { - - private cteCabecMsg cteCabecMsgValueField; - - private System.Threading.SendOrPostCallback cteRecepcaoLoteOperationCompleted; - - /// - public CteRecepcao(string url) { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = url; - } - - public cteCabecMsg cteCabecMsgValue { - get { - return this.cteCabecMsgValueField; - } - set { - this.cteCabecMsgValueField = value; - } - } - - /// - public event cteRecepcaoLoteCompletedEventHandler cteRecepcaoLoteCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("cteCabecMsgValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao/cteRecepcaoLote", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao")] - public System.Xml.XmlNode cteRecepcaoLote([System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao")] System.Xml.XmlNode cteDadosMsg) { - object[] results = this.Invoke("cteRecepcaoLote", new object[] { - cteDadosMsg}); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public System.IAsyncResult BegincteRecepcaoLote(System.Xml.XmlNode cteDadosMsg, System.AsyncCallback callback, object asyncState) { - return this.BeginInvoke("cteRecepcaoLote", new object[] { - cteDadosMsg}, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndcteRecepcaoLote(System.IAsyncResult asyncResult) { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public void cteRecepcaoLoteAsync(System.Xml.XmlNode cteDadosMsg) { - this.cteRecepcaoLoteAsync(cteDadosMsg, null); - } - - /// - public void cteRecepcaoLoteAsync(System.Xml.XmlNode cteDadosMsg, object userState) { - if ((this.cteRecepcaoLoteOperationCompleted == null)) { - this.cteRecepcaoLoteOperationCompleted = new System.Threading.SendOrPostCallback(this.OncteRecepcaoLoteOperationCompleted); - } - this.InvokeAsync("cteRecepcaoLote", new object[] { - cteDadosMsg}, this.cteRecepcaoLoteOperationCompleted, userState); - } - - private void OncteRecepcaoLoteOperationCompleted(object arg) { - if ((this.cteRecepcaoLoteCompleted != null)) { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); - this.cteRecepcaoLoteCompleted(this, new cteRecepcaoLoteCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) { - base.CancelAsync(userState); - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao")] - [System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao", IsNullable=false)] - public partial class cteCabecMsg : System.Web.Services.Protocols.SoapHeader { - - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF { - get { - return this.cUFField; - } - set { - this.cUFField = value; - } - } - - /// - public string versaoDados { - get { - return this.versaoDadosField; - } - set { - this.versaoDadosField = value; - } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr { - get { - return this.anyAttrField; - } - set { - this.anyAttrField = value; - } - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - public delegate void cteRecepcaoLoteCompletedEventHandler(object sender, cteRecepcaoLoteCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class cteRecepcaoLoteCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { - - private object[] results; - - internal cteRecepcaoLoteCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) { - this.results = results; - } - - /// - public System.Xml.XmlNode Result { - get { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode)(this.results[0])); - } - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/WsdlCte/Homologacao/RetornoRecepcao/CteRetRecepcao.cs b/CTeRefatorar/WsdlCte/Homologacao/RetornoRecepcao/CteRetRecepcao.cs deleted file mode 100755 index f22595062..000000000 --- a/CTeRefatorar/WsdlCte/Homologacao/RetornoRecepcao/CteRetRecepcao.cs +++ /dev/null @@ -1,167 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace FusionCore.DFe.WsdlCte.Homologacao.RetornoRecepcao -{ // -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name="CteRetRecepcaoSoap12", Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao")] - public partial class CteRetRecepcao : System.Web.Services.Protocols.SoapHttpClientProtocol { - - private cteCabecMsg cteCabecMsgValueField; - - private System.Threading.SendOrPostCallback cteRetRecepcaoOperationCompleted; - - /// - public CteRetRecepcao(string url) { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = url; - } - - public cteCabecMsg cteCabecMsgValue { - get { - return this.cteCabecMsgValueField; - } - set { - this.cteCabecMsgValueField = value; - } - } - - /// - public event cteRetRecepcaoCompletedEventHandler cteRetRecepcaoCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("cteCabecMsgValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao/cteRetRecepcao", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao")] - public System.Xml.XmlNode cteRetRecepcao([System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao")] System.Xml.XmlNode cteDadosMsg) { - object[] results = this.Invoke("cteRetRecepcao", new object[] { - cteDadosMsg}); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public System.IAsyncResult BegincteRetRecepcao(System.Xml.XmlNode cteDadosMsg, System.AsyncCallback callback, object asyncState) { - return this.BeginInvoke("cteRetRecepcao", new object[] { - cteDadosMsg}, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndcteRetRecepcao(System.IAsyncResult asyncResult) { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public void cteRetRecepcaoAsync(System.Xml.XmlNode cteDadosMsg) { - this.cteRetRecepcaoAsync(cteDadosMsg, null); - } - - /// - public void cteRetRecepcaoAsync(System.Xml.XmlNode cteDadosMsg, object userState) { - if ((this.cteRetRecepcaoOperationCompleted == null)) { - this.cteRetRecepcaoOperationCompleted = new System.Threading.SendOrPostCallback(this.OncteRetRecepcaoOperationCompleted); - } - this.InvokeAsync("cteRetRecepcao", new object[] { - cteDadosMsg}, this.cteRetRecepcaoOperationCompleted, userState); - } - - private void OncteRetRecepcaoOperationCompleted(object arg) { - if ((this.cteRetRecepcaoCompleted != null)) { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); - this.cteRetRecepcaoCompleted(this, new cteRetRecepcaoCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) { - base.CancelAsync(userState); - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao")] - [System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao", IsNullable=false)] - public partial class cteCabecMsg : System.Web.Services.Protocols.SoapHeader { - - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF { - get { - return this.cUFField; - } - set { - this.cUFField = value; - } - } - - /// - public string versaoDados { - get { - return this.versaoDadosField; - } - set { - this.versaoDadosField = value; - } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr { - get { - return this.anyAttrField; - } - set { - this.anyAttrField = value; - } - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - public delegate void cteRetRecepcaoCompletedEventHandler(object sender, cteRetRecepcaoCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class cteRetRecepcaoCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { - - private object[] results; - - internal cteRetRecepcaoCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) { - this.results = results; - } - - /// - public System.Xml.XmlNode Result { - get { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode)(this.results[0])); - } - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/WsdlCte/UrlServicoSefaz.cs b/CTeRefatorar/WsdlCte/UrlServicoSefaz.cs deleted file mode 100755 index 2c643de25..000000000 --- a/CTeRefatorar/WsdlCte/UrlServicoSefaz.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace FusionCore.DFe.WsdlCte -{ - public class UrlServicoSefaz - { - public string CteRecepcao { get; set; } - public string CteRetRecepcao { get; set; } - public string CteInutilizacao { get; set; } - public string CteStatusServico { get; set; } - public string CteRecepcaoEvento { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionAssinaturaDigital.cs b/CTeRefatorar/XmlCte/FusionAssinaturaDigital.cs deleted file mode 100755 index ebd496adc..000000000 --- a/CTeRefatorar/XmlCte/FusionAssinaturaDigital.cs +++ /dev/null @@ -1,102 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - [XmlRoot(Namespace = "http://www.w3.org/2000/09/xmldsig#", ElementName = "Signature")] - public class FusionAssinaturaDigital - { - [XmlElement(ElementName = "SignedInfo")] - public FusionInformacoesAssinatura InformacoesAssinatura { get; set; } - - [XmlElement(ElementName = "SignatureValue")] - public string SignatureValue { get; set; } - - [XmlElement(ElementName = "KeyInfo")] - public FusionKeyInfo KeyInfo { get; set; } - } - - [Serializable] - public class FusionKeyInfo - { - [XmlElement(ElementName = "X509Data")] - public FusionX509Data X509Data { get; set; } - - public FusionKeyInfo() - { - X509Data = new FusionX509Data(); - } - } - - [Serializable] - public class FusionX509Data - { - [XmlElement(ElementName = "X509Certificate")] - public string X509Certificate { get; set; } - } - - [Serializable] - public class FusionInformacoesAssinatura - { - [XmlElement(ElementName = "CanonicalizationMethod")] - public FusionCanonicalizationMethod CanonicalizationMethod { get; set; } - - [XmlElement(ElementName = "SignatureMethod")] - public FusionSignatureMethod SignatureMethod { get; set; } - - [XmlElement(ElementName = "Reference")] - public FusionReference Reference { get; set; } - } - - [Serializable] - public class FusionCanonicalizationMethod - { - [XmlAttribute] - public string Algorithm { get; set; } - } - - [Serializable] - public class FusionSignatureMethod - { - [XmlAttribute] - public string Algorithm { get; set; } - } - - [Serializable] - public class FusionReference - { - [XmlAttribute(AttributeName = "URI")] - public string Uri { get; set; } - - [XmlArray(ElementName = "Transforms"), XmlArrayItem(typeof (FusionTransform), ElementName = "Transform")] - public List Transforms { get; set; } - - [XmlElement(ElementName = "DigestMethod")] - public FusionDigestMethod DigestMethod { get; set; } - - [XmlElement(ElementName = "DigestValue")] - public string DigestValue { get; set; } - - public FusionReference() - { - Transforms = new List(); - } - } - - [Serializable] - [XmlRoot(ElementName = "Transform")] - public class FusionTransform - { - [XmlAttribute] - public string Algorithm { get; set; } - } - - [Serializable] - public class FusionDigestMethod - { - [XmlAttribute] - public string Algorithm { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionCte.cs b/CTeRefatorar/XmlCte/FusionCte.cs deleted file mode 100755 index 7e7489a01..000000000 --- a/CTeRefatorar/XmlCte/FusionCte.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", - ElementName = "CTe")] - public class FusionCTe - { - [XmlElement(ElementName = "infCte")] - public FusionInformacoesCTe InformacoesCTe { get; set; } - - [XmlElement(ElementName = "Signature", Namespace = "http://www.w3.org/2000/09/xmldsig#")] - public FusionAssinaturaDigital AssinaturaDigital { get; set; } - - public FusionCTe() - { - InformacoesCTe = new FusionInformacoesCTe(); - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionDacteCTe.cs b/CTeRefatorar/XmlCte/FusionDacteCTe.cs deleted file mode 100755 index 435df26bc..000000000 --- a/CTeRefatorar/XmlCte/FusionDacteCTe.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionDacteCTe - { - [XmlEnum("1")] - Retrato = 1, - - [XmlEnum("2")] - Paisagem = 2 - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionDadosComplementaresCTe.cs b/CTeRefatorar/XmlCte/FusionDadosComplementaresCTe.cs deleted file mode 100755 index 6734ef465..000000000 --- a/CTeRefatorar/XmlCte/FusionDadosComplementaresCTe.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionDadosComplementaresCTe - { - [XmlElement(ElementName = "Entrega")] - public FusionEntregaCTe Entrega { get; set; } - - [XmlElement(ElementName = "xObs")] - public string ObservacoesGerais { get; set; } - - public FusionDadosComplementaresCTe() - { - Entrega = new FusionEntregaCTe(); - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionDestinatarioCTe.cs b/CTeRefatorar/XmlCte/FusionDestinatarioCTe.cs deleted file mode 100755 index b6c572b39..000000000 --- a/CTeRefatorar/XmlCte/FusionDestinatarioCTe.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionDestinatarioCTe - { - [XmlElement(ElementName = "CNPJ")] - public string Cnpj { get; set; } - - [XmlElement(ElementName = "CPF")] - public string Cpf { get; set; } - - [XmlElement(ElementName = "IE")] - public string Ie { get; set; } - - [XmlElement(ElementName = "xNome")] - public string Nome { get; set; } - - [XmlElement(ElementName = "fone")] - public string Telefone { get; set; } - - [XmlElement(ElementName = "ISUF")] - public string InscricaoSuframa { get; set; } - - [XmlElement(ElementName = "enderDest")] - public FusionEnderecoTomadorCTe Endereco { get; set; } - - public FusionDestinatarioCTe() - { - Endereco = new FusionEnderecoTomadorCTe(); - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionEmitenteCTe.cs b/CTeRefatorar/XmlCte/FusionEmitenteCTe.cs deleted file mode 100755 index 72bd9d46b..000000000 --- a/CTeRefatorar/XmlCte/FusionEmitenteCTe.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionEmitenteCTe - { - [XmlElement(ElementName = "CNPJ")] - public string Cnpj { get; set; } - - [XmlElement(ElementName = "IE")] - public string Ie { get; set; } - - [XmlElement(ElementName = "xNome")] - public string RazaoSocialOuNome { get; set; } - - [XmlElement(ElementName = "xFant")] - public string NomeFantasia { get; set; } - - [XmlElement(ElementName = "enderEmit")] - public FusionEnderecoCTe Endereco { get; set; } - - public FusionEmitenteCTe() - { - Endereco = new FusionEnderecoCTe(); - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionEnderecoCTe.cs b/CTeRefatorar/XmlCte/FusionEnderecoCTe.cs deleted file mode 100755 index c30269bc2..000000000 --- a/CTeRefatorar/XmlCte/FusionEnderecoCTe.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionEnderecoCTe - { - [XmlElement(ElementName = "xLgr")] - public string Logradouro { get; set; } - - [XmlElement(ElementName = "nro")] - public string Numero { get; set; } - - [XmlElement(ElementName = "xCpl")] - public string Complemento { get; set; } - - [XmlElement(ElementName = "xBairro")] - public string Bairro { get; set; } - - [XmlElement(ElementName = "cMun")] - public long CodigoIbgeMunicipio { get; set; } - - [XmlElement(ElementName = "xMun")] - public string NomeMunicipio { get; set; } - - [XmlElement(ElementName = "CEP")] - public string Cep { get; set; } - - [XmlElement(ElementName = "UF")] - public string SiglaUf { get; set; } - - [XmlElement(ElementName = "fone")] - public string Telefone { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionEnderecoTomadorCTe.cs b/CTeRefatorar/XmlCte/FusionEnderecoTomadorCTe.cs deleted file mode 100755 index da8716bc5..000000000 --- a/CTeRefatorar/XmlCte/FusionEnderecoTomadorCTe.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionEnderecoTomadorCTe - { - [XmlElement(ElementName = "xLgr")] - public string Logradouro { get; set; } - - [XmlElement(ElementName = "nro")] - public string Numero { get; set; } - - [XmlElement(ElementName = "xCpl")] - public string Complemento { get; set; } - - [XmlElement(ElementName = "xBairro")] - public string Bairro { get; set; } - - [XmlElement(ElementName = "cMun")] - public long CodigoIbgeMunicipio { get; set; } - - [XmlElement(ElementName = "xMun")] - public string NomeMunicipio { get; set; } - - [XmlElement(ElementName = "CEP")] - public string Cep { get; set; } - - [XmlElement(ElementName = "UF")] - public string SiglaUf { get; set; } - - [XmlElement(ElementName = "cPais")] - public string CodigoPais { get; set; } - - [XmlElement(ElementName = "xPais")] - public string NomePais { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionEntregaCTe.cs b/CTeRefatorar/XmlCte/FusionEntregaCTe.cs deleted file mode 100755 index 944f63c1e..000000000 --- a/CTeRefatorar/XmlCte/FusionEntregaCTe.cs +++ /dev/null @@ -1,108 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionEntregaCTe - { - [XmlElement(ElementName = "semData")] - public FusionSemDataCTe SemData { get; set; } - - [XmlElement(ElementName = "comData")] - public FusionComDataCTe ComData { get; set; } - - [XmlElement(ElementName = "noPeriodo")] - public FusionNoPeriodoCTe NoPeriodo { get; set; } - - [XmlElement(ElementName = "semHora")] - public FusionSemHoraCTe SemHora { get; set; } - - [XmlElement(ElementName = "comHora")] - public FusionComHoraCTe ComHora { get; set; } - - [XmlElement(ElementName = "noInter")] - public FusionIntervaloHora IntervaloHora { get; set; } - } - - [Serializable] - public class FusionSemDataCTe - { - [XmlElement(ElementName = "tpPer")] - public FusionTipoPeriodoDataCTe TipoPeriodoData { get; set; } - - public FusionSemDataCTe() - { - TipoPeriodoData = FusionTipoPeriodoDataCTe.SemDataDefinida; - } - } - - [Serializable] - public class FusionComDataCTe - { - [XmlElement(ElementName = "tpPer")] - public FusionTipoPeriodoDataCTe TipoPeriodoData { get; set; } - - [XmlElement(ElementName = "dProg")] - public string DataProgramada { get; set; } - } - - [Serializable] - public class FusionNoPeriodoCTe - { - [XmlElement(ElementName = "tpPer")] - public FusionTipoPeriodoDataCTe TipoPeriodoData { get; set; } - - [XmlElement(ElementName = "dIni")] - public string DataInicial { get; set; } - - [XmlElement(ElementName = "dFim")] - public string DataFinal { get; set; } - - public FusionNoPeriodoCTe() - { - TipoPeriodoData = FusionTipoPeriodoDataCTe.NoPeriodo; - } - } - - - [Serializable] - public class FusionSemHoraCTe - { - [XmlElement(ElementName = "tpHor")] - public FusionTipoPeriodoHoraCTe TipoPeriodoHora { get; set; } - - public FusionSemHoraCTe() - { - TipoPeriodoHora = FusionTipoPeriodoHoraCTe.SemHoraDefinida; - } - } - - [Serializable] - public class FusionComHoraCTe - { - [XmlElement(ElementName = "tpHor")] - public FusionTipoPeriodoHoraCTe TipoPeriodoHora { get; set; } - - [XmlElement(ElementName = "hProg")] - public string HoraProgramada { get; set; } - } - - [Serializable] - public class FusionIntervaloHora - { - [XmlElement(ElementName = "tpHor")] - public FusionTipoPeriodoHoraCTe TipoPeriodoHora { get; set; } - - [XmlElement(ElementName = "hIni")] - public string HoraInicial { get; set; } - - [XmlElement(ElementName = "hFim")] - public string HoraFinal { get; set; } - - public FusionIntervaloHora() - { - TipoPeriodoHora = FusionTipoPeriodoHoraCTe.NoIntervaloDeTempo; - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionEstadoUFCTe.cs b/CTeRefatorar/XmlCte/FusionEstadoUFCTe.cs deleted file mode 100755 index 961f1bc8c..000000000 --- a/CTeRefatorar/XmlCte/FusionEstadoUFCTe.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionEstadoUFCTe - { - [XmlEnum("12")] - AC = 12, - - [XmlEnum("27")] - AL = 27, - - [XmlEnum("16")] - AP = 16, - - [XmlEnum("13")] - AM = 13, - - [XmlEnum("29")] - BA = 29, - - [XmlEnum("23")] - CE = 23, - - [XmlEnum("53")] - DF = 53, - - [XmlEnum("32")] - ES = 32, - - [XmlEnum("52")] - GO = 52, - - [XmlEnum("21")] - MA = 21, - - [XmlEnum("51")] - MT = 51, - - [XmlEnum("50")] - MS = 50, - - [XmlEnum("31")] - MG = 31, - - [XmlEnum("15")] - PA = 15, - - [XmlEnum("25")] - PB = 25, - - [XmlEnum("41")] - PR = 41, - - [XmlEnum("26")] - PE = 26, - - [XmlEnum("22")] - PI = 22, - - [XmlEnum("33")] - RJ = 33, - - [XmlEnum("24")] - RN = 24, - - [XmlEnum("43")] - RS = 43, - - [XmlEnum("11")] - RO = 11, - - [XmlEnum("14")] - RR = 14, - - [XmlEnum("42")] - SC = 42, - - [XmlEnum("35")] - SP = 35, - - [XmlEnum("28")] - SE = 28, - - [XmlEnum("17")] - TO = 17 - } - - public static class ExtEstadoUFCTe - { - public static string GetCodigoUF(this FusionEstadoUFCTe estado) - { - var codigo = ((byte) estado).ToString(); - - return codigo; - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionExpedidorCTe.cs b/CTeRefatorar/XmlCte/FusionExpedidorCTe.cs deleted file mode 100755 index ae10c2ebe..000000000 --- a/CTeRefatorar/XmlCte/FusionExpedidorCTe.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionExpedidorCTe - { - [XmlElement(ElementName = "CNPJ")] - public string Cnpj { get; set; } - - [XmlElement(ElementName = "CPF")] - public string Cpf { get; set; } - - [XmlElement(ElementName = "IE")] - public string Ie { get; set; } - - [XmlElement(ElementName = "xNome")] - public string Nome { get; set; } - - [XmlElement(ElementName = "fone")] - public string Telefone { get; set; } - - [XmlElement(ElementName = "enderExped")] - public FusionEnderecoTomadorCTe Endereco { get; set; } - - [XmlElement(ElementName = "email")] - public string Email { get; set; } - - public FusionExpedidorCTe() - { - Endereco = new FusionEnderecoTomadorCTe(); - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionFormaPagamentoCTe.cs b/CTeRefatorar/XmlCte/FusionFormaPagamentoCTe.cs deleted file mode 100755 index 7476ecf11..000000000 --- a/CTeRefatorar/XmlCte/FusionFormaPagamentoCTe.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionFormaPagamentoCTe - { - [XmlEnum("0")] - Pago = 0, - - [XmlEnum("1")] - Apagar = 1, - - [XmlEnum("2")] - Outros = 2 - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionIdentificacaoCTe.cs b/CTeRefatorar/XmlCte/FusionIdentificacaoCTe.cs deleted file mode 100755 index 4359c19c3..000000000 --- a/CTeRefatorar/XmlCte/FusionIdentificacaoCTe.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionIdentificacaoCTe - { - [XmlElement(ElementName = "cUF")] - public FusionEstadoUFCTe EstadoUF { get; set; } - - [XmlElement(ElementName = "cCT")] - public long CodigoNumerico { get; set; } - - [XmlElement(ElementName = "CFOP")] - public string Cfop { get; set; } - - [XmlElement(ElementName = "natOp")] - public string NaturezaOperacao { get; set; } - - [XmlElement(ElementName = "forPag")] - public FusionFormaPagamentoCTe FormaPagamento { get; set; } - - [XmlElement(ElementName = "mod")] - public FusionTipoDocumentoFiscalCTe TipoDocumentoFiscal { get; set; } - - [XmlElement(ElementName = "serie")] - public short Serie { get; set; } - - [XmlElement(ElementName = "nCT")] - public long NumeroDocumento { get; set; } - - [XmlElement(ElementName = "dhEmi")] - public string EmitidaEm { get; set; } - - [XmlElement(ElementName = "tpImp")] - public FusionDacteCTe FusionDacteCTe { get; set; } - - [XmlElement(ElementName = "tpEmis")] - public FusionTipoEmissaoCTe FusionTipoEmissaoCTe { get; set; } - - [XmlElement(ElementName = "cDV")] - public byte DigitoVerificador { get; set; } - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "tpCTe")] - public FusionTipoCTe TipoCTe { get; set; } - - [XmlElement(ElementName = "procEmi")] - public FusionTipoProcessoEmissaoCTe TipoProcessoEmissao { get; set; } - - [XmlElement(ElementName = "verProc")] - public string VersaoAplicativoEmissor { get; set; } - - [XmlElement(ElementName = "cMunEnv")] - public long CodigoIbgeMunicipioEnvio { get; set; } - - [XmlElement(ElementName = "xMunEnv")] - public string NomeMunicipioEnvio { get; set; } - - [XmlElement(ElementName = "UFEnv")] - public string SiglaDeEnvioUF { get; set; } - - [XmlElement(ElementName = "modal")] - public FusionModalCTe Modal { get; set; } - - [XmlElement(ElementName = "tpServ")] - public FusionTipoServicoCTe TipoServico { get; set; } - - [XmlElement(ElementName = "cMunIni")] - public long CodigoIbgeMunicipioInicioOperacao { get; set; } - - [XmlElement(ElementName = "xMunIni")] - public string NomeMunicipioInicioOperacao { get; set; } - - [XmlElement(ElementName = "UFIni")] - public string SiglaDeUfInicioOperacao { get; set; } - - [XmlElement(ElementName = "cMunFim")] - public long CodigoIbgeMunicipioFimOperacao { get; set; } - - [XmlElement(ElementName = "xMunFim")] - public string NomeMunicipioFimOperacao { get; set; } - - [XmlElement(ElementName = "UFFim")] - public string SiglaDeUfFimOperacao { get; set; } - - [XmlElement(ElementName = "retira")] - public FusionIndicadorRecebedorCTe IndicadorRecebedor { get; set; } - - [XmlElement(ElementName = "toma03")] - public FusionIndicadorPapelTomadorCTe IndicadorPapelTomador { get; set; } - - [XmlElement(ElementName = "toma4")] - public FusionTomadorOutrosCTe FusionTomadorOutrosCTe { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionImpostoCTe.cs b/CTeRefatorar/XmlCte/FusionImpostoCTe.cs deleted file mode 100755 index afad730f5..000000000 --- a/CTeRefatorar/XmlCte/FusionImpostoCTe.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionImpostoCTe - { - private decimal? _totalTributosFederais; - - [XmlElement(ElementName = "ICMS")] - public FusionIcmsCTe FusionIcmsCTe { get; set; } - - [XmlElement(ElementName = "vTotTrib")] - public decimal? TotalTributosFederais - { - get { return _totalTributosFederais; } - set { _totalTributosFederais = value; } - } - - public bool TotalTributosFederaisSpecified => _totalTributosFederais.HasValue; - - public FusionImpostoCTe() - { - FusionIcmsCTe = new FusionIcmsCTe(); - } - } - - [Serializable] - public class FusionIcmsCTe - { - [XmlElement(ElementName = "ICMSSN")] - public FusionIcmsSimplesNacionalCTe IcmsSimplesNacional { get; set; } - - public FusionIcmsCTe() - { - IcmsSimplesNacional = new FusionIcmsSimplesNacionalCTe(); - } - } - - [Serializable] - public class FusionIcmsSimplesNacionalCTe - { - [XmlElement(ElementName = "indSN")] - public int IndicadorSimplesNacional { get; set; } - - public FusionIcmsSimplesNacionalCTe() - { - IndicadorSimplesNacional = 1; - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionIndicadorPapelTomadorCTe.cs b/CTeRefatorar/XmlCte/FusionIndicadorPapelTomadorCTe.cs deleted file mode 100755 index 2a81d6911..000000000 --- a/CTeRefatorar/XmlCte/FusionIndicadorPapelTomadorCTe.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionIndicadorPapelTomadorCTe - { - [XmlElement(ElementName = "toma")] - public FusionTipoTomadorCTe TipoTomador { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionIndicadorRecebedorCTe.cs b/CTeRefatorar/XmlCte/FusionIndicadorRecebedorCTe.cs deleted file mode 100755 index a01c3d799..000000000 --- a/CTeRefatorar/XmlCte/FusionIndicadorRecebedorCTe.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionIndicadorRecebedorCTe - { - [XmlEnum("0")] - Sim, - - [XmlEnum("1")] - Nao - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionInformacaoCTeNormalCTe.cs b/CTeRefatorar/XmlCte/FusionInformacaoCTeNormalCTe.cs deleted file mode 100755 index 5fb4b2610..000000000 --- a/CTeRefatorar/XmlCte/FusionInformacaoCTeNormalCTe.cs +++ /dev/null @@ -1,90 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionInformacaoCTeNormalCTe - { - [XmlElement(ElementName = "infCarga")] - public FusionInformacaoCargaCTe InformacaoCarga { get; set; } - - [XmlElement(ElementName = "infDoc")] - public FusionInformacaoDocumentoCTe InformacaoDocumento { get; set; } - - [XmlElement(ElementName = "seg")] - public List InfoSeguroDaCarga { get; set; } - - [XmlElement(ElementName = "infModal")] - public FusionInformacaoModalCTe Modal { get; set; } - - [XmlElement(ElementName = "peri")] - public List ProdutosPerigosos { get; set; } - - [XmlElement(ElementName = "veicNovos")] - public List VeiculosTransportados { get; set; } - - public FusionInformacaoCTeNormalCTe() - { - InformacaoCarga = new FusionInformacaoCargaCTe(); - InformacaoDocumento = new FusionInformacaoDocumentoCTe(); - InfoSeguroDaCarga = new List(); - Modal = new FusionInformacaoModalCTe(); - ProdutosPerigosos = new List(); - VeiculosTransportados = new List(); - } - } - - [Serializable] - public class FusionInformacaoCargaCTe - { - private string _outrasCaracteristicas; - private decimal? _valorTotalCarga; - - [XmlElement(ElementName = "vCarga")] - public decimal? ValorTotalCarga - { - get { return _valorTotalCarga; } - set { _valorTotalCarga = value; } - } - - [XmlElement(ElementName = "proPred")] - public string NomeProdutoPredominante { get; set; } - - [XmlElement(ElementName = "xOutCat")] - public string OutrasCaracteristicas - { - get { return _outrasCaracteristicas; } - set { _outrasCaracteristicas = value; } - } - - [XmlElement(ElementName = "infQ")] - public List InformacoesQuantidadeDaCarga { get; set; } - - public bool OutrasCaracteristicasSpecified - { - get { return !string.IsNullOrEmpty(_outrasCaracteristicas); } - } - - public bool ValorTotalCargaSpecified => _valorTotalCarga.HasValue; - - public FusionInformacaoCargaCTe() - { - InformacoesQuantidadeDaCarga = new List(); - } - } - - [Serializable] - public class FusionInformacoesQuantidadeDaCargaCTe - { - [XmlElement(ElementName = "cUnid")] - public FusionUnidadeMedidaCTe UnidadeMedida { get; set; } - - [XmlElement(ElementName = "tpMed")] - public string DescricaoMedida { get; set; } - - [XmlElement(ElementName = "qCarga")] - public decimal Quantidade { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionInformacaoDocumentoCTe.cs b/CTeRefatorar/XmlCte/FusionInformacaoDocumentoCTe.cs deleted file mode 100755 index 882616c33..000000000 --- a/CTeRefatorar/XmlCte/FusionInformacaoDocumentoCTe.cs +++ /dev/null @@ -1,143 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionInformacaoDocumentoCTe - { - [XmlElement(ElementName = "infNFe")] - public List DocumentosNFe { get; set; } - - [XmlElement(ElementName = "infOutros")] - public List DocumentosOutros { get; set; } - - [XmlElement(ElementName = "infNF")] - public List DocumentosImpressos { get; set; } - - public FusionInformacaoDocumentoCTe() - { - DocumentosNFe = new List(); - DocumentosOutros = new List(); - DocumentosImpressos = new List(); - } - } - - [Serializable] - public class FusionDocumentoImpressoCTe - { - [XmlElement(ElementName = "nRoma")] - public string NumeroRomaneiro { get; set; } - - [XmlElement(ElementName = "nPed")] - public string NumeroPedido { get; set; } - - [XmlElement(ElementName = "mod")] - public FusionModeloNotaFiscalCTe ModeloNotaFiscal { get; set; } - - [XmlElement(ElementName = "serie")] - public short Serie { get; set; } - - [XmlElement(ElementName = "nDoc")] - public string Numero { get; set; } - - [XmlIgnore] - public DateTime DataEmissao { get; set; } - - [XmlElement(ElementName = "dEmi")] - public string ProxyDataEmissao - { - get { return DataEmissao.ToString("yyyy-MM-dd"); } - set { DataEmissao = DateTime.Parse(value); } - } - - [XmlElement(ElementName = "vBC")] - public decimal BaseCacluloIcms { get; set; } - - [XmlElement(ElementName = "vICMS")] - public decimal IcmsTotal { get; set; } - - [XmlElement(ElementName = "vBCST")] - public decimal BaseCalculoIcmsSt { get; set; } - - [XmlElement(ElementName = "vST")] - public decimal IcmsStTotal { get; set; } - - [XmlElement(ElementName = "vProd")] - public decimal ValorTotalProdutos { get; set; } - - [XmlElement(ElementName = "vNF")] - public decimal ValorTotalNF { get; set; } - - [XmlElement(ElementName = "nCFOP")] - public string CfopPredominante { get; set; } - - [XmlElement(ElementName = "nPeso")] - public decimal? PesoTotalEmKg { get; set; } - - [XmlElement(ElementName = "PIN")] - public string PinSuframa { get; set; } - - [XmlIgnore] - public DateTime? DataPrevista { get; set; } - - [XmlElement(ElementName = "dPrev")] - public string ProxyDataPrevista - { - get { return DataPrevista?.ToString("yyyy-MM-dd"); } - set { DataPrevista = DateTime.Parse(value); } - } - - public bool PesoTotalEmKgSpecified => PesoTotalEmKg.HasValue; - } - - [Serializable] - public class FusionDocuemntoOutroCTe - { - [XmlIgnore] - public DateTime? DataEmissao { get; set; } - - [XmlIgnore] - public DateTime? DataPrevisaoEntrega { get; set; } - - [XmlElement(ElementName = "tpDoc")] - public FusionTipoDocumentoOriginarioCTe TipoDocumentoOriginario { get; set; } - - [XmlElement(ElementName = "descOutros")] - public string DescricaoOutros { get; set; } - - [XmlElement(ElementName = "nDoc")] - public string Numero { get; set; } - - [XmlElement(ElementName = "dEmi")] - public string ProxyDataEmissao - { - get { return DataEmissao?.ToString("yyyy-MM-dd"); } - set { DataEmissao = DateTime.Parse(value); } - } - - [XmlElement(ElementName = "vDocFisc")] - public decimal Valor { get; set; } - - [XmlElement(ElementName = "dPrev")] - public string ProxyDataPrevisaoEntrega - { - get { return DataPrevisaoEntrega?.ToString("yyyy-MM-dd"); } - set { DataPrevisaoEntrega = DateTime.Parse(value); } - } - } - - [Serializable] - public class FusionDocumentosNFe - { - [XmlElement(ElementName = "chave")] - public string Chave { get; set; } - - [XmlElement(ElementName = "PIN")] - public string PinSuframa { get; set; } - - [XmlElement(ElementName = "dPrev")] - public string DataPrevistaEntrega { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionInformacaoModalCTe.cs b/CTeRefatorar/XmlCte/FusionInformacaoModalCTe.cs deleted file mode 100755 index f2fe8eccd..000000000 --- a/CTeRefatorar/XmlCte/FusionInformacaoModalCTe.cs +++ /dev/null @@ -1,209 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionInformacaoModalCTe - { - [XmlAttribute(AttributeName = "versaoModal")] - public string Versao { get; set; } = "2.00"; - - [XmlElement(ElementName = "rodo")] - public FusionRodoviarioCTe Rodoviario { get; set; } - - public FusionInformacaoModalCTe() - { - Rodoviario = new FusionRodoviarioCTe(); - } - } - - [Serializable] - public class FusionRodoviarioCTe - { - [XmlElement(ElementName = "RNTRC")] - public string Rntrc { get; set; } - - [XmlElement(ElementName = "dPrev")] - public string DataPrevisaoEntrega { get; set; } - - [XmlElement(ElementName = "lota")] - public FusionIndicadorLotacaoCTe IndicadorLotacao { get; set; } - - [XmlElement(ElementName = "CIOT")] - public string Ciot { get; set; } - - [XmlElement(ElementName = "veic")] - public List VeiculosRodoviarios { get; set; } - - [XmlElement(ElementName = "moto")] - public List Motoristas { get; set; } - - public FusionRodoviarioCTe() - { - VeiculosRodoviarios = new List(); - Motoristas = new List(); - } - } - - [Serializable] - public class FusionMotoristaRodoviarioCTe - { - [XmlElement(ElementName = "xNome")] - public string Nome { get; set; } - - [XmlElement(ElementName = "CPF")] - public string Cpf { get; set; } - } - - [Serializable] - public enum FusionIndicadorLotacaoCTe - { - [XmlEnum("0")] - Nao, - - [XmlEnum("1")] - Sim - } - - [Serializable] - public class FusionVeiculoRodoviarioCTe - { - [XmlElement(ElementName = "cInt")] - public string CodigoInterno { get; set; } - - [XmlElement(ElementName = "RENAVAM")] - public string Renavam { get; set; } - - [XmlElement(ElementName = "placa")] - public string Placa { get; set; } - - [XmlElement(ElementName = "tara")] - public int Tara { get; set; } - - [XmlElement(ElementName = "capKG")] - public int CapacidadeEmKg { get; set; } - - [XmlElement(ElementName = "capM3")] - public short CapacidadeEmM3 { get; set; } - - [XmlElement(ElementName = "tpProp")] - public FusionProprietarioVeiculoCTe Proprietario { get; set; } - - [XmlElement(ElementName = "tpVeic")] - public FusionTipoVeiculoCTe TipoVeiculo { get; set; } - - [XmlElement(ElementName = "tpRod")] - public FusionRodadoCTe TipoRodado { get; set; } - - [XmlElement(ElementName = "tpCar")] - public FusionTipoCarroceriaCTe TipoCarroceria { get; set; } - - [XmlElement(ElementName = "UF")] - public string SiglaUF { get; set; } - - [XmlElement(ElementName = "prop")] - public FusionProprietarioVeiculoRodoviarioCTe ProprietarioVeiculo { get; set; } - } - - [Serializable] - public class FusionProprietarioVeiculoRodoviarioCTe - { - [XmlElement(ElementName = "CPF")] - public string Cpf { get; set; } - - [XmlElement(ElementName = "CNPJ")] - public string Cnpj { get; set; } - - [XmlElement(ElementName = "RNTRC")] - public string Rntrc { get; set; } - - [XmlElement(ElementName = "xNome")] - public string Nome { get; set; } - - [XmlElement(ElementName = "IE")] - public string InscricaoEstadual { get; set; } - - [XmlElement(ElementName = "UF")] - public string SiglaUf { get; set; } - - [XmlElement(ElementName = "tpProp")] - public FusionTipoProprietarioCTe TipoProprietario { get; set; } - } - - public enum FusionProprietarioVeiculoCTe - { - [XmlEnum("P")] - Proprietario, - - [XmlEnum("T")] - Terceiro - } - - public enum FusionTipoVeiculoCTe - { - [XmlEnum("0")] - Tracao, - - [XmlEnum("1")] - Reboque - } - - public enum FusionRodadoCTe - { - [XmlEnum("00")] - NaoAplicavel, - - [XmlEnum("01")] - Truck, - - [XmlEnum("02")] - Toco, - - [XmlEnum("03")] - CavaloMecanico, - - [XmlEnum("04")] - Van, - - [XmlEnum("05")] - Utilitario, - - [XmlEnum("06")] - Outro - } - - public enum FusionTipoCarroceriaCTe - { - [XmlEnum("00")] - NaoAplicavel, - - [XmlEnum("01")] - Aberta, - - [XmlEnum("02")] - FechadaBau, - - [XmlEnum("03")] - Granelera, - - [XmlEnum("04")] - PortaContainer, - - [XmlEnum("05")] - Sider - } - - public enum FusionTipoProprietarioCTe - { - [XmlEnum("0")] - TacAgregado, - - [XmlEnum("1")] - TacIndependente, - - [XmlEnum("2")] - Outros - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionInformacoesCte.cs b/CTeRefatorar/XmlCte/FusionInformacoesCte.cs deleted file mode 100755 index 73b851a50..000000000 --- a/CTeRefatorar/XmlCte/FusionInformacoesCte.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionInformacoesCTe - { - private string _id; - private string _versao; - - [XmlAttribute("Id")] - public string Id - { - get { return _id; } - set { _id = value.Replace(" ", "").Trim(); } - } - - [XmlAttribute("versao")] - public string Versao - { - get { return _versao; } - set { _versao = value.Trim(); } - } - - [XmlElement(ElementName = "ide")] - public FusionIdentificacaoCTe Identificacao { get; set; } - - [XmlElement(ElementName = "compl")] - public FusionDadosComplementaresCTe DadosComplementares { get; set; } - - [XmlElement(ElementName = "emit")] - public FusionEmitenteCTe Emitente { get; set; } - - [XmlElement(ElementName = "rem")] - public FusionRemetenteCTe Remetente { get; set; } - - [XmlElement(ElementName = "exped")] - public FusionExpedidorCTe Expedidor { get; set; } - - [XmlElement(ElementName = "receb")] - public FusionRecebedorCTe Recebedor { get; set; } - - [XmlElement(ElementName = "dest")] - public FusionDestinatarioCTe Destinatario { get; set; } - - [XmlElement(ElementName = "vPrest")] - public FusionValoresPrestacaoServicoCTe ValoresPrestacaoServico { get; set; } - - [XmlElement(ElementName = "imp")] - public FusionImpostoCTe Imposto { get; set; } - - [XmlElement(ElementName = "infCTeNorm")] - public FusionInformacaoCTeNormalCTe InformacoesCTeNormal { get; set; } - - public FusionInformacoesCTe() - { - Identificacao = new FusionIdentificacaoCTe(); - DadosComplementares = new FusionDadosComplementaresCTe(); - Emitente = new FusionEmitenteCTe(); - Remetente = new FusionRemetenteCTe(); - Destinatario = new FusionDestinatarioCTe(); - ValoresPrestacaoServico = new FusionValoresPrestacaoServicoCTe(); - Imposto = new FusionImpostoCTe(); - InformacoesCTeNormal = new FusionInformacaoCTeNormalCTe(); - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionModalCTe.cs b/CTeRefatorar/XmlCte/FusionModalCTe.cs deleted file mode 100755 index b612b7ef6..000000000 --- a/CTeRefatorar/XmlCte/FusionModalCTe.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionModalCTe - { - [XmlEnum("01")] - Rodoviario = 01, - - [XmlEnum("02")] - Aereo = 02, - - [XmlEnum("03")] - Aquaviario = 03, - - [XmlEnum("04")] - Ferroviario = 04, - - [XmlEnum("05")] - Dutoviario = 05, - - [XmlEnum("06")] - Multimodal = 06 - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionModeloNotaFiscalCTe.cs b/CTeRefatorar/XmlCte/FusionModeloNotaFiscalCTe.cs deleted file mode 100755 index d727e9791..000000000 --- a/CTeRefatorar/XmlCte/FusionModeloNotaFiscalCTe.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionModeloNotaFiscalCTe - { - [XmlEnum("01")] - NFModelo011AeAvulsa = 01, - - [XmlEnum("04")] - NFdeProdutor = 04 - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionProdutoPerigosoCTe.cs b/CTeRefatorar/XmlCte/FusionProdutoPerigosoCTe.cs deleted file mode 100755 index a2f363ef4..000000000 --- a/CTeRefatorar/XmlCte/FusionProdutoPerigosoCTe.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionProdutoPerigosoCTe - { - [XmlElement(ElementName = "nONU")] - public string NumeroOnuUn { get; set; } - - [XmlElement(ElementName = "xNomeAE")] - public string NomeApropriado { get; set; } - - [XmlElement(ElementName = "xClaRisco")] - public string ClasseRisco { get; set; } - - [XmlElement(ElementName = "grEmb")] - public string GrupoEmbalagem { get; set; } - - [XmlElement(ElementName = "qTotProd")] - public string QuantidadeTotalPorProduto { get; set; } - - [XmlElement(ElementName = "qVolTipo")] - public string QuantidadeETiposVolume { get; set; } - - [XmlElement(ElementName = "pontoFulgor")] - public string PontoFulgor { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionRecebedorCTe.cs b/CTeRefatorar/XmlCte/FusionRecebedorCTe.cs deleted file mode 100755 index fe3da4a7d..000000000 --- a/CTeRefatorar/XmlCte/FusionRecebedorCTe.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionRecebedorCTe - { - [XmlElement(ElementName = "CNPJ")] - public string Cnpj { get; set; } - - [XmlElement(ElementName = "CPF")] - public string Cpf { get; set; } - - [XmlElement(ElementName = "IE")] - public string Ie { get; set; } - - [XmlElement(ElementName = "xNome")] - public string Nome { get; set; } - - [XmlElement(ElementName = "fone")] - public string Telefone { get; set; } - - [XmlElement(ElementName = "enderReceb")] - public FusionEnderecoTomadorCTe Endereco { get; set; } - - [XmlElement(ElementName = "email")] - public string Email { get; set; } - - public FusionRecebedorCTe() - { - Endereco = new FusionEnderecoTomadorCTe(); - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionRemetenteCTe.cs b/CTeRefatorar/XmlCte/FusionRemetenteCTe.cs deleted file mode 100755 index 4097cff54..000000000 --- a/CTeRefatorar/XmlCte/FusionRemetenteCTe.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionRemetenteCTe - { - [XmlElement(ElementName = "CNPJ")] - public string Cnpj { get; set; } - - [XmlElement(ElementName = "CPF")] - public string Cpf { get; set; } - - [XmlElement(ElementName = "IE")] - public string Ie { get; set; } - - [XmlElement(ElementName = "xNome")] - public string Nome { get; set; } - - [XmlElement(ElementName = "xFant")] - public string NomeFantasia { get; set; } - - [XmlElement(ElementName = "fone")] - public string Telefone { get; set; } - - [XmlElement(ElementName = "enderReme")] - public FusionEnderecoTomadorCTe Endereco { get; set; } - - public FusionRemetenteCTe() - { - Endereco = new FusionEnderecoTomadorCTe(); - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionResponsavelSeguroCTe.cs b/CTeRefatorar/XmlCte/FusionResponsavelSeguroCTe.cs deleted file mode 100755 index ee06591a5..000000000 --- a/CTeRefatorar/XmlCte/FusionResponsavelSeguroCTe.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionResponsavelSeguroCTe - { - [XmlEnum("0")] - Remetente, - - [XmlEnum("1")] - Expedidor, - - [XmlEnum("2")] - Recebedor, - - [XmlEnum("3")] - Destinatario, - - [XmlEnum("4")] - Emitente, - - [XmlEnum("5")] - Tomador - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionSeguroCTe.cs b/CTeRefatorar/XmlCte/FusionSeguroCTe.cs deleted file mode 100755 index 374ce701b..000000000 --- a/CTeRefatorar/XmlCte/FusionSeguroCTe.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionSeguroCTe - { - [XmlElement(ElementName = "respSeg")] - public FusionResponsavelSeguroCTe ResponsavelSeguro { get; set; } - - [XmlElement(ElementName = "xSeg")] - public string NomeSeguradora { get; set; } - - [XmlElement(ElementName = "nApol")] - public string NumeroApolice { get; set; } - - [XmlElement(ElementName = "nAver")] - public string NumeroAverbacao { get; set; } - - [XmlElement(ElementName = "vCarga")] - public decimal? ValorCarga { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionTipoAmbienteCTe.cs b/CTeRefatorar/XmlCte/FusionTipoAmbienteCTe.cs deleted file mode 100755 index 11d5c2ff3..000000000 --- a/CTeRefatorar/XmlCte/FusionTipoAmbienteCTe.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionTipoAmbienteCTe - { - [XmlEnum("1")] - Producao = 1, - - [XmlEnum("2")] - Homologacao = 2 - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionTipoCTe.cs b/CTeRefatorar/XmlCte/FusionTipoCTe.cs deleted file mode 100755 index 1f1548220..000000000 --- a/CTeRefatorar/XmlCte/FusionTipoCTe.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionTipoCTe - { - [XmlEnum("0")] - Normal = 0, - - [XmlEnum("1")] - ComplementoDeValores = 1, - - [XmlEnum("2")] - Anulacao = 2, - - [XmlEnum("3")] - Substituto = 3 - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionTipoDocumentoFiscalCTe.cs b/CTeRefatorar/XmlCte/FusionTipoDocumentoFiscalCTe.cs deleted file mode 100755 index 816594c42..000000000 --- a/CTeRefatorar/XmlCte/FusionTipoDocumentoFiscalCTe.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionTipoDocumentoFiscalCTe - { - [XmlEnum("57")] - CTe = 57 - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionTipoDocumentoOriginarioCTe.cs b/CTeRefatorar/XmlCte/FusionTipoDocumentoOriginarioCTe.cs deleted file mode 100755 index 9b24e27fb..000000000 --- a/CTeRefatorar/XmlCte/FusionTipoDocumentoOriginarioCTe.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionTipoDocumentoOriginarioCTe - { - [XmlEnum("00")] - Declaracao, - - [XmlEnum("10")] - Dutoviario, - - [XmlEnum("99")] - Outros - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionTipoEmissaoCTe.cs b/CTeRefatorar/XmlCte/FusionTipoEmissaoCTe.cs deleted file mode 100755 index 942cdef1c..000000000 --- a/CTeRefatorar/XmlCte/FusionTipoEmissaoCTe.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionTipoEmissaoCTe - { - [XmlEnum("1")] - Normal = 1, - - [XmlEnum("4")] - EpecPelaSvc = 4, - - [XmlEnum("5")] - ContingenciaFsda = 5, - - [XmlEnum("7")] - AutorizacaoSvcRs = 7, - - [XmlEnum("8")] - AutorizacaoSvcSp = 8 - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionTipoPeriodoDataCTe.cs b/CTeRefatorar/XmlCte/FusionTipoPeriodoDataCTe.cs deleted file mode 100755 index b1275b766..000000000 --- a/CTeRefatorar/XmlCte/FusionTipoPeriodoDataCTe.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionTipoPeriodoDataCTe - { - [XmlEnum("0")] - SemDataDefinida, - - [XmlEnum("1")] - NaData, - - [XmlEnum("2")] - AteAData, - - [XmlEnum("3")] - APartirDaData, - - [XmlEnum("4")] - NoPeriodo - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionTipoPeriodoHoraCTe.cs b/CTeRefatorar/XmlCte/FusionTipoPeriodoHoraCTe.cs deleted file mode 100755 index 4614c0da4..000000000 --- a/CTeRefatorar/XmlCte/FusionTipoPeriodoHoraCTe.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionTipoPeriodoHoraCTe - { - [XmlEnum("0")] - SemHoraDefinida, - - [XmlEnum("1")] - NoHorario, - - [XmlEnum("2")] - AteOHorario, - - [XmlEnum("3")] - APartirDoHorario, - - [XmlEnum("4")] - NoIntervaloDeTempo - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionTipoProcessoEmissaoCTe.cs b/CTeRefatorar/XmlCte/FusionTipoProcessoEmissaoCTe.cs deleted file mode 100755 index dac646743..000000000 --- a/CTeRefatorar/XmlCte/FusionTipoProcessoEmissaoCTe.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionTipoProcessoEmissaoCTe - { - [XmlEnum("0")] - EmissaoAplicativoContribuinte = 0, - - [XmlEnum("1")] - EmissaoAvulsaPeloFisco = 1, - - [XmlEnum("2")] - EmissaoAvulsaContribuinteCertificadoSite = 2, - - [XmlEnum("3")] - EmissaoPeloContribuinteAplicativoFornecidoFisco = 3 - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionTipoServicoCTe.cs b/CTeRefatorar/XmlCte/FusionTipoServicoCTe.cs deleted file mode 100755 index f213d692b..000000000 --- a/CTeRefatorar/XmlCte/FusionTipoServicoCTe.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionTipoServicoCTe - { - [XmlEnum("0")] - Normal = 0, - - [XmlEnum("1")] - Subcontratacao = 1, - - [XmlEnum("2")] - Redespacho = 2, - - [XmlEnum("3")] - RedespachoIntermediario = 3, - - [XmlEnum("4")] - ServicoVinculadoAMultimodal = 4 - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionTipoTomadorCTe.cs b/CTeRefatorar/XmlCte/FusionTipoTomadorCTe.cs deleted file mode 100755 index 907962f91..000000000 --- a/CTeRefatorar/XmlCte/FusionTipoTomadorCTe.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionTipoTomadorCTe - { - [XmlEnum("0")] - Remetente = 0, - - [XmlEnum("1")] - Expedidor = 1, - - [XmlEnum("2")] - Recebedor = 2, - - [XmlEnum("3")] - Destinatario = 3, - - [XmlEnum("4")] - Outro = 4 - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionTomadorOutrosCTe.cs b/CTeRefatorar/XmlCte/FusionTomadorOutrosCTe.cs deleted file mode 100755 index bf3a4df0b..000000000 --- a/CTeRefatorar/XmlCte/FusionTomadorOutrosCTe.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionTomadorOutrosCTe - { - [XmlElement(ElementName = "toma")] - public FusionTipoTomadorCTe TipoTomador { get; set; } - - [XmlElement(ElementName = "CNPJ")] - public string Cnpj { get; set; } - - [XmlElement(ElementName = "CPF")] - public string Cpf { get; set; } - - [XmlElement(ElementName = "IE")] - public string IE { get; set; } - - [XmlElement(ElementName = "xNome")] - public string Nome { get; set; } - - [XmlElement(ElementName = "xFant")] - public string Fantasia { get; set; } - - [XmlElement(ElementName = "fone")] - public string Telefone { get; set; } - - [XmlElement(ElementName = "email")] - public string Email { get; set; } - - [XmlElement(ElementName = "enderToma")] - public FusionEnderecoTomadorCTe EnderecoTomador { get; set; } - - public FusionTomadorOutrosCTe() - { - EnderecoTomador = new FusionEnderecoTomadorCTe(); - TipoTomador = FusionTipoTomadorCTe.Outro; - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionUnidadeMedidaCTe.cs b/CTeRefatorar/XmlCte/FusionUnidadeMedidaCTe.cs deleted file mode 100755 index 3a5374da3..000000000 --- a/CTeRefatorar/XmlCte/FusionUnidadeMedidaCTe.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - public enum FusionUnidadeMedidaCTe - { - [XmlEnum("00")] - M3, - - [XmlEnum("01")] - Kg, - - [XmlEnum("02")] - Ton, - - [XmlEnum("03")] - Unidade, - - [XmlEnum("04")] - Litros, - - [XmlEnum("05")] - Mmbtu - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionValoresPrestacaoServicoCTe.cs b/CTeRefatorar/XmlCte/FusionValoresPrestacaoServicoCTe.cs deleted file mode 100755 index b471308f3..000000000 --- a/CTeRefatorar/XmlCte/FusionValoresPrestacaoServicoCTe.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionValoresPrestacaoServicoCTe - { - [XmlElement(ElementName = "vTPrest")] - public decimal ValorTotal { get; set; } - - [XmlElement(ElementName = "vRec")] - public decimal ValorAReceber { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/FusionVeiculoTransportadoCTe.cs b/CTeRefatorar/XmlCte/FusionVeiculoTransportadoCTe.cs deleted file mode 100755 index ee90fd0b8..000000000 --- a/CTeRefatorar/XmlCte/FusionVeiculoTransportadoCTe.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte -{ - [Serializable] - public class FusionVeiculoTransportadoCTe - { - [XmlElement(ElementName = "chassi")] - public string Chassi { get; set; } - - [XmlElement(ElementName = "cCor")] - public string CodigoCor { get; set; } - - [XmlElement(ElementName = "xCor")] - public string DescricaoCor { get; set; } - - [XmlElement(ElementName = "cMod")] - public string CodigoMarcaModelo { get; set; } - - [XmlElement(ElementName = "vUnit")] - public decimal ValorUnitario { get; set; } - - [XmlElement(ElementName = "vFrete")] - public decimal FreteUnitario { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.ConsultaProtocolo/FusionConsultaProtocoloCTe.cs b/CTeRefatorar/XmlCte/XmlCte.ConsultaProtocolo/FusionConsultaProtocoloCTe.cs deleted file mode 100755 index 76d99eb9d..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.ConsultaProtocolo/FusionConsultaProtocoloCTe.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.ConsultaProtocolo -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", - ElementName = "consSitCTe")] - public class FusionConsultaProtocoloCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "xServ")] - public string ServicoSolicitado { get; set; } = "CONSULTAR"; - - [XmlElement(ElementName = "chCTe")] - public string Chave { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.ConsultaProtocolo/FusionRetornoConsultaProtocoloCTe.cs b/CTeRefatorar/XmlCte/XmlCte.ConsultaProtocolo/FusionRetornoConsultaProtocoloCTe.cs deleted file mode 100755 index 3e7868861..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.ConsultaProtocolo/FusionRetornoConsultaProtocoloCTe.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.ConsultaProtocolo -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", - ElementName = "retConsSitCTe")] - public class FusionRetornoConsultaProtocoloCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "verAplic")] - public string VersaoAplicacao { get; set; } - - [XmlElement(ElementName = "cStat")] - public short CodigoStatus { get; set; } - - [XmlElement(ElementName = "xMotivo")] - public string Motivo { get; set; } - - [XmlElement(ElementName = "cUF")] - public byte CodigoEstadoUf { get; set; } - - [XmlElement(ElementName = "protCTe")] - public FusionProtocoloAutorizacaoOuDenegacaoCTe ProtocoloAutorizacaoOuDenegacao { get; set; } - } - - [Serializable] - public class FusionProtocoloAutorizacaoOuDenegacaoCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } - - [XmlElement(ElementName = "CTe")] - public FusionCTe CTe { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.ConsultaStatus/FusionConsultaStatusCTe.cs b/CTeRefatorar/XmlCte/XmlCte.ConsultaStatus/FusionConsultaStatusCTe.cs deleted file mode 100755 index 06791a485..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.ConsultaStatus/FusionConsultaStatusCTe.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.ConsultaStatus -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", - ElementName = "consStatServCte")] - public class FusionConsultaStatusCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "xServ")] - public string ServicoSolicitado { get; set; } = "STATUS"; - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.ConsultaStatus/FusionRetornoConsultaStatusCTe.cs b/CTeRefatorar/XmlCte/XmlCte.ConsultaStatus/FusionRetornoConsultaStatusCTe.cs deleted file mode 100755 index 007846b79..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.ConsultaStatus/FusionRetornoConsultaStatusCTe.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.ConsultaStatus -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", - ElementName = "retConsStatServCte")] - public class FusionRetornoConsultaStatusCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "verAplic")] - public string VersaoAplicacao { get; set; } - - [XmlElement(ElementName = "cStat")] - public short CodigoStatus { get; set; } - - [XmlElement(ElementName = "xMotivo")] - public string Motivo { get; set; } - - [XmlElement(ElementName = "cUF")] - public byte CodigoEstadoUf { get; set; } - - [XmlElement(ElementName = "dhRecbto")] - public DateTime RecebeuEm { get; set; } - - [XmlElement(ElementName = "tMed")] - public int? TempoMedio { get; set; } - - [XmlElement(ElementName = "dhRetorno")] - public DateTime? PrevisaoRetornoEm { get; set; } - - [XmlElement(ElementName = "xObs")] - public string Observacao { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.ConsultaStatusServico/FusionConsultaStatusServicoCTe.cs b/CTeRefatorar/XmlCte/XmlCte.ConsultaStatusServico/FusionConsultaStatusServicoCTe.cs deleted file mode 100755 index b0ee1ea58..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.ConsultaStatusServico/FusionConsultaStatusServicoCTe.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.ConsultaStatusServico -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", - ElementName = "consStatServCte")] - public class FusionConsultaStatusServicoCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } = "2.00"; - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "xServ")] - public string ServicoSolicitado { get; set; } = "STATUS"; - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.ConsultaStatusServico/FusionRetornoConsultaStatusServicoCTe.cs b/CTeRefatorar/XmlCte/XmlCte.ConsultaStatusServico/FusionRetornoConsultaStatusServicoCTe.cs deleted file mode 100755 index ef8233515..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.ConsultaStatusServico/FusionRetornoConsultaStatusServicoCTe.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.ConsultaStatusServico -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", - ElementName = "retConsStatServCte")] - public class FusionRetornoConsultaStatusServicoCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } = "2.00"; - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "verAplic")] - public string VersaoAplicacao { get; set; } - - [XmlElement(ElementName = "cStat")] - public short CodigoStatus { get; set; } - - [XmlElement(ElementName = "xMotivo")] - public string Motivo { get; set; } - - [XmlElement(ElementName = "cUF")] - public byte CodigoEstadoUf { get; set; } - - [XmlElement(ElementName = "dhRecbto")] - public DateTime DataEHoraRecebimento { get; set; } - - [XmlElement(ElementName = "tMed")] - public int? TempoMedioResposta { get; set; } - - [XmlElement(ElementName = "dhRetorno")] - public DateTime? DataEHoraRetorno { get; set; } - - [XmlElement(ElementName = "xObs")] - public string InformacoesAdicionais { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.Inutilizacao/FusionInutilizacaoCTe.cs b/CTeRefatorar/XmlCte/XmlCte.Inutilizacao/FusionInutilizacaoCTe.cs deleted file mode 100755 index f996f682d..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.Inutilizacao/FusionInutilizacaoCTe.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.Inutilizacao -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", - ElementName = "inutCTe")] - public class FusionInutilizacaoCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } - - [XmlElement(ElementName = "infInut")] - public FusionDadosDoPedidoCTe DadosDoPedido { get; set; } - - [XmlElement(ElementName = "Signature", Namespace = "http://www.w3.org/2000/09/xmldsig#")] - public FusionAssinaturaDigital AssinaturaDigital { get; set; } - - public FusionInutilizacaoCTe() - { - DadosDoPedido = new FusionDadosDoPedidoCTe(); - } - } - - [Serializable] - public class FusionDadosDoPedidoCTe - { - [XmlAttribute(AttributeName = "Id")] - public string Id { get; set; } - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "xServ")] - public string Servico { get; set; } = "INUTILIZAR"; - - [XmlElement(ElementName = "cUF")] - public byte CodigoEstadoUf { get; set; } - - [XmlElement(ElementName = "ano")] - public byte Ano { get; set; } - - [XmlElement(ElementName = "CNPJ")] - public string Cnpj { get; set; } - - [XmlElement(ElementName = "mod")] - public FusionTipoDocumentoFiscalCTe TipoDocumentoFiscal { get; set; } - - [XmlElement(ElementName = "serie")] - public short Serie { get; set; } - - [XmlElement(ElementName = "nCTIni")] - public long NumeroInicial { get; set; } - - [XmlElement(ElementName = "nCTFin")] - public long NumeroFinal { get; set; } - - [XmlElement(ElementName = "xJust")] - public string Justificativa { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.Inutilizacao/FustionRetornoInutilizacaoCTe.cs b/CTeRefatorar/XmlCte/XmlCte.Inutilizacao/FustionRetornoInutilizacaoCTe.cs deleted file mode 100755 index 44a203cc0..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.Inutilizacao/FustionRetornoInutilizacaoCTe.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.Inutilizacao -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", - ElementName = "retInutCTe")] - public class FustionRetornoInutilizacaoCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } - - [XmlElement(ElementName = "infInut")] - public FusionDadosRetornoCTe DadosRetorno { get; set; } - - [XmlElement(ElementName = "Signature", Namespace = "http://www.w3.org/2000/09/xmldsig#")] - public FusionAssinaturaDigital AssinaturaDigital { get; set; } - } - - [Serializable] - public class FusionDadosRetornoCTe - { - [XmlAttribute(AttributeName = "Id")] - public string Id { get; set; } - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "verAplic")] - public string VersaoAplicativo { get; set; } - - [XmlElement(ElementName = "cStat")] - public short CodigoStatus { get; set; } - - [XmlElement(ElementName = "xMotivo")] - public string Motivo { get; set; } - - [XmlElement(ElementName = "cUF")] - public byte CodigoEstadoUf { get; set; } - - [XmlElement(ElementName = "ano")] - public byte Ano { get; set; } - - [XmlElement(ElementName = "CNPJ")] - public string Cnpj { get; set; } - - [XmlElement(ElementName = "mod")] - public FusionTipoDocumentoFiscalCTe DocumentoFiscal { get; set; } - - [XmlElement(ElementName = "serie")] - public short Serie { get; set; } - - [XmlElement(ElementName = "nCTIni")] - public long NumeroInicial { get; set; } - - [XmlElement(ElementName = "nCTFin")] - public long NumeroFinal { get; set; } - - [XmlElement(ElementName = "dhRecbto")] - public DateTime? ProcessadoEm { get; set; } - - [XmlElement(ElementName = "nPort")] - public string Protocolo { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.LoteEnvio/FusionEnvioCTe.cs b/CTeRefatorar/XmlCte/XmlCte.LoteEnvio/FusionEnvioCTe.cs deleted file mode 100755 index cb03b1d2b..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.LoteEnvio/FusionEnvioCTe.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.LoteEnvio -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", - ElementName = "enviCTe")] - public class FusionEnvioCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } = "2.00"; - - [XmlElement(ElementName = "idLote")] - public string IdLote { get; set; } - - [XmlElement(ElementName = "CTe")] - public List FusionCTes { get; set; } - - public FusionEnvioCTe() - { - FusionCTes = new List(); - } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.Processada/FusionCTeProcessadaCTe.cs b/CTeRefatorar/XmlCte/XmlCte.Processada/FusionCTeProcessadaCTe.cs deleted file mode 100755 index 8da379a6b..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.Processada/FusionCTeProcessadaCTe.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.Processada -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", - ElementName = "cteProc")] - public class FusionCTeProcessadaCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } = "2.00"; - - [XmlElement(ElementName = "CTe")] - public FusionCTe CTe { get; set; } - - [XmlElement(ElementName = "protCTe")] - public FusionCteProcessadoCTe ProcessadoCTe { get; set; } - - public FusionCTeProcessadaCTe() - { - ProcessadoCTe = new FusionCteProcessadoCTe(); - } - } - - [Serializable] - public class FusionCteProcessadoCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } = "2.00"; - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "verAplic")] - public string VersaoAplicativo { get; set; } - - [XmlElement(ElementName = "chCTe")] - public string Chave { get; set; } - - [XmlElement(ElementName = "dhRecbto")] - public string RecebidaEm { get; set; } - - [XmlElement(ElementName = "nProt")] - public string Protocolo { get; set; } - - [XmlElement(ElementName = "digVal")] - public string DigestValue { get; set; } - - [XmlElement(ElementName = "cStat")] - public short CodigoStatus { get; set; } - - [XmlElement(ElementName = "xMotivo")] - public string Motivo { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.RegistroEventos/FusionRegistroEventoCTe.cs b/CTeRefatorar/XmlCte/XmlCte.RegistroEventos/FusionRegistroEventoCTe.cs deleted file mode 100755 index ef4eca0c5..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.RegistroEventos/FusionRegistroEventoCTe.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.RegistroEventos -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", - ElementName = "eventoCTe")] - public class FusionRegistroEventoCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } - - [XmlElement(ElementName = "infEvento")] - public FusionInformacaoEventoCTe InformacaoEvento { get; set; } - - [XmlElement(ElementName = "Signature", Namespace = "http://www.w3.org/2000/09/xmldsig#")] - public FusionAssinaturaDigital AssinaturaDigital { get; set; } - - public FusionRegistroEventoCTe() - { - InformacaoEvento = new FusionInformacaoEventoCTe(); - } - } - - [Serializable] - public class FusionInformacaoEventoCTe - { - [XmlAttribute(AttributeName = "Id")] - public string Id { get; set; } - - [XmlElement(ElementName = "cOrgao")] - public byte CodigoOrgao { get; set; } - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "CNPJ")] - public string Cnpj { get; set; } - - [XmlElement(ElementName = "chCTe")] - public string Chave { get; set; } - - [XmlElement(ElementName = "dhEvento")] - public string HoraEvento { get; set; } - - [XmlElement(ElementName = "tpEvento")] - public int TipoEvento { get; set; } - - [XmlElement(ElementName = "nSeqEvento")] - public byte SequencialEvento { get; set; } - - [XmlElement(ElementName = "detEvento")] - public FusionDetalheEventoCTe DetalheEvento { get; set; } - - public FusionInformacaoEventoCTe() - { - DetalheEvento = new FusionDetalheEventoCTe(); - } - } - - [Serializable] - public class FusionDetalheEventoCTe - { - [XmlAttribute(AttributeName = "versaoEvento")] - public string VersaoEvento { get; set; } - - [XmlElement(ElementName = "evCancCTe")] - public FusionEventoCancelamentoCTe EventoCancelamento { get; set; } - - [XmlElement(ElementName = "evCCeCTe")] - public FusionEventoCartaCorrecaoCTe EventoCartaCorrecao { get; set; } - } - - [Serializable] - public class FusionEventoCancelamentoCTe - { - [XmlElement(ElementName = "descEvento")] - public string DescricaoEvento { get; set; } = "Cancelamento"; - - [XmlElement(ElementName = "nProt")] - public string NumeroProtocolo { get; set; } - - [XmlElement(ElementName = "xJust")] - public string Justificativa { get; set; } - } - - [Serializable] - public class FusionEventoCartaCorrecaoCTe - { - [XmlElement(ElementName = "descEvento")] - public string DescricaoEvento { get; set; } = "Carta de Correcao"; - - [XmlElement(ElementName = "infCorrecao")] - public List InfoCorrrecoes { get; set; } - - [XmlElement(ElementName = "xCondUso")] - public string CondicaoUso { get; set; } = - @"A Carta de Correcao e disciplinada pelo Art. 58-B do CONVENIO/SINIEF 06/89: Fica permitida a utilizacao de carta de correcao, para regularizacao de erro ocorrido na emissao de documentos fiscais relativos a prestacao de servico de transporte, desde que o erro nao esteja relacionado com: I - as variaveis que determinam o valor do imposto tais como: base de calculo, aliquota, diferenca de preco, quantidade, valor da prestacao;II - a correcao de dados cadastrais que implique mudanca do emitente, tomador, remetente ou do destinatario;III - a data de emissao ou de saida." - ; - - public FusionEventoCartaCorrecaoCTe() - { - InfoCorrrecoes = new List(); - } - } - - [Serializable] - public class FusionInfoCorrecaoCTe - { - [XmlElement(ElementName = "grupoAlterado")] - public string GrupoAlterado { get; set; } - - [XmlElement(ElementName = "campoAlterado")] - public string CampoAlterado { get; set; } - - [XmlElement(ElementName = "valorAlterado")] - public string ValorAlterado { get; set; } - - [XmlElement(ElementName = "nroItemAlterado")] - public string NumeroItem { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.RegistroEventos/FusionRetornoEventoCancelamentoCTe.cs b/CTeRefatorar/XmlCte/XmlCte.RegistroEventos/FusionRetornoEventoCancelamentoCTe.cs deleted file mode 100755 index 2435af794..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.RegistroEventos/FusionRetornoEventoCancelamentoCTe.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.RegistroEventos -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", - ElementName = "retEventoCTe")] - public class FusionRetornoEventoCancelamentoCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } - - [XmlElement(ElementName = "infEvento")] - public FusionInfoEventoCancelamentoCTe FusionInfoEventoCancelamentoCTe { get; set; } - } - - public class FusionInfoEventoCancelamentoCTe - { - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.RegistroEventos/FusionRetornoRegistroEventoCTe.cs b/CTeRefatorar/XmlCte/XmlCte.RegistroEventos/FusionRetornoRegistroEventoCTe.cs deleted file mode 100755 index 4cfa0cdb9..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.RegistroEventos/FusionRetornoRegistroEventoCTe.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.RegistroEventos -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", - ElementName = "retEventoCTe")] - public class FusionRetornoRegistroEventoCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } = "2.00"; - - [XmlElement(ElementName = "infEvento")] - public FusionRetornoInformacaoEventoCTe RetornoInformacaoEvento { get; set; } - - [XmlElement(ElementName = "Signature")] - public FusionAssinaturaDigital AssinaturaDigital { get; set; } - } - - [Serializable] - public class FusionRetornoInformacaoEventoCTe - { - [XmlAttribute(AttributeName = "Id")] - public string Id { get; set; } - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "verAplic")] - public string VersaoAplicacao { get; set; } - - [XmlElement(ElementName = "cOrgao")] - public byte OrgaoEmissor { get; set; } - - [XmlElement(ElementName = "cStat")] - public short CodigoStatus { get; set; } - - [XmlElement(ElementName = "xMotivo")] - public string Motivo { get; set; } - - [XmlElement(ElementName = "chCTe")] - public string Chave { get; set; } - - [XmlElement(ElementName = "tpEvento")] - public int TipoEvento { get; set; } - - [XmlElement(ElementName = "xEvento")] - public string DescricaoEvento { get; set; } - - [XmlElement(ElementName = "nSeqEvento")] - public byte SequencialEvento { get; set; } - - [XmlElement(ElementName = "dhRegEvento")] - public DateTime? DataEHoraRegistroEvento { get; set; } - - [XmlElement(ElementName = "nProt")] - public string NumeroProtocolo { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.Retorno/FusionRetornoEnvioCTe.cs b/CTeRefatorar/XmlCte/XmlCte.Retorno/FusionRetornoEnvioCTe.cs deleted file mode 100755 index 09196a1d8..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.Retorno/FusionRetornoEnvioCTe.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.Retorno -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", - ElementName = "retEnviCte")] - public class FusionRetornoEnvioCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "cUF")] - public byte CodigoEstadoUf { get; set; } - - [XmlElement(ElementName = "verAplic")] - public string VersaoAplicativo { get; set; } - - [XmlElement(ElementName = "cStat")] - public short StatusResposta { get; set; } - - [XmlElement(ElementName = "xMotivo")] - public string Motivo { get; set; } - - [XmlElement(ElementName = "infRec")] - public FusionDadosReciboCTe DadosRecibo { get; set; } - } - - [Serializable] - public class FusionDadosReciboCTe - { - [XmlElement(ElementName = "nRec")] - public string Numero { get; set; } - - [XmlElement(ElementName = "dhRecbto")] - public DateTime? RecebidoEm { get; set; } - - [XmlElement(ElementName = "tMed")] - public string TempoMedioResposta { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.RetornoRecepcao/FusionCteProcessadoCTe.cs b/CTeRefatorar/XmlCte/XmlCte.RetornoRecepcao/FusionCteProcessadoCTe.cs deleted file mode 100755 index a2c4afff8..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.RetornoRecepcao/FusionCteProcessadoCTe.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.RetornoRecepcao -{ - [Serializable] - public class FusionCteProcessadoCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } - - [XmlElement(ElementName = "infProt")] - public FusionInformacaoProcessadaCTe Informacoes { get; set; } - } - - [Serializable] - public class FusionInformacaoProcessadaCTe - { - [XmlAttribute(AttributeName = "Id")] - public string Id { get; set; } - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "verAplic")] - public string VersaoAplicativo { get; set; } - - [XmlElement(ElementName = "dhRecbto")] - public DateTime? ProcessadoEm { get; set; } - - [XmlElement(ElementName = "nProt")] - public string NumeroProtocolo { get; set; } - - [XmlElement(ElementName = "digVal")] - public string DigestVal { get; set; } - - [XmlElement(ElementName = "cStat")] - public short CodigoStatusResposta { get; set; } - - [XmlElement(ElementName = "xMotivo")] - public string Motivo { get; set; } - - [XmlElement(ElementName = "Signature")] - public FusionAssinaturaDigital AssinaturaDigital { get; set; } - - public bool Autorizado => CodigoStatusResposta == 100; - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.RetornoRecepcao/FusionResultadoEnvioLoteCTe.cs b/CTeRefatorar/XmlCte/XmlCte.RetornoRecepcao/FusionResultadoEnvioLoteCTe.cs deleted file mode 100755 index 21525daed..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.RetornoRecepcao/FusionResultadoEnvioLoteCTe.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.RetornoRecepcao -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", ElementName = "retConsReciCTe")] - public class FusionResultadoEnvioLoteCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "verAplic")] - public string VersaoAplicativo { get; set; } - - [XmlElement(ElementName = "nRec")] - public string NumeroRecibo { get; set; } - - [XmlElement(ElementName = "cStat")] - public short CodigoStatusResposta { get; set; } - - [XmlElement(ElementName = "xMotivo")] - public string Motivo { get; set; } - - [XmlElement(ElementName = "cUF")] - public byte CodigoUfAtendeuSolicitacao { get; set; } - - [XmlElement(ElementName = "protCTe")] - public List CteProcessado { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/XmlCte/XmlCte.RetornoRecepcao/FusionRetornoRecepcaoCTe.cs b/CTeRefatorar/XmlCte/XmlCte.RetornoRecepcao/FusionRetornoRecepcaoCTe.cs deleted file mode 100755 index 7bdd7b766..000000000 --- a/CTeRefatorar/XmlCte/XmlCte.RetornoRecepcao/FusionRetornoRecepcaoCTe.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace FusionCore.DFe.XmlCte.XmlCte.RetornoRecepcao -{ - [Serializable] - [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", ElementName = "consReciCTe")] - public class FusionRetornoRecepcaoCTe - { - [XmlAttribute(AttributeName = "versao")] - public string Versao { get; set; } = "2.00"; - - [XmlElement(ElementName = "tpAmb")] - public FusionTipoAmbienteCTe Ambiente { get; set; } - - [XmlElement(ElementName = "nRec")] - public string NumeroRecibo { get; set; } - } -} \ No newline at end of file diff --git a/CTeRefatorar/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/CTeRefatorar/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100755 index 2d1084087..000000000 Binary files a/CTeRefatorar/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ diff --git a/CTeRefatorar/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/CTeRefatorar/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs deleted file mode 100755 index e69de29bb..000000000 diff --git a/CTeRefatorar/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/CTeRefatorar/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs deleted file mode 100755 index e69de29bb..000000000 diff --git a/CTeRefatorar/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/CTeRefatorar/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs deleted file mode 100755 index e69de29bb..000000000 diff --git a/DFe.Classes/Assinatura/CanonicalizationMethod.cs b/DFe.Classes/Assinatura/CanonicalizationMethod.cs old mode 100755 new mode 100644 diff --git a/DFe.Classes/Assinatura/DigestMethod.cs b/DFe.Classes/Assinatura/DigestMethod.cs old mode 100755 new mode 100644 diff --git a/DFe.Classes/Assinatura/KeyInfo.cs b/DFe.Classes/Assinatura/KeyInfo.cs old mode 100755 new mode 100644 diff --git a/DFe.Classes/Assinatura/Reference.cs b/DFe.Classes/Assinatura/Reference.cs old mode 100755 new mode 100644 diff --git a/DFe.Classes/Assinatura/Signature.cs b/DFe.Classes/Assinatura/Signature.cs old mode 100755 new mode 100644 diff --git a/DFe.Classes/Assinatura/SignatureMethod.cs b/DFe.Classes/Assinatura/SignatureMethod.cs old mode 100755 new mode 100644 diff --git a/DFe.Classes/Assinatura/SignedInfo.cs b/DFe.Classes/Assinatura/SignedInfo.cs old mode 100755 new mode 100644 diff --git a/DFe.Classes/Assinatura/Transform.cs b/DFe.Classes/Assinatura/Transform.cs old mode 100755 new mode 100644 diff --git a/DFe.Classes/Assinatura/X509Data.cs b/DFe.Classes/Assinatura/X509Data.cs old mode 100755 new mode 100644 diff --git a/DFe.Classes/DFe.Classes.csproj b/DFe.Classes/DFe.Classes.csproj index 7913b60ad..1805692b9 100755 --- a/DFe.Classes/DFe.Classes.csproj +++ b/DFe.Classes/DFe.Classes.csproj @@ -1,66 +1,8 @@ - - - + + - Debug - AnyCPU - {9984EC15-18E1-4A87-B4DB-18AC913DC4E8} - Library - Properties - DFe.Classes - DFe.Classes - v4.5 - 512 - + net462;netstandard2.0;net6.0 + - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + diff --git a/DFe.Classes/DFe.Classes.csproj.DotSettings b/DFe.Classes/DFe.Classes.csproj.DotSettings deleted file mode 100644 index 662f95686..000000000 --- a/DFe.Classes/DFe.Classes.csproj.DotSettings +++ /dev/null @@ -1,2 +0,0 @@ - - CSharp50 \ No newline at end of file diff --git a/DFe.Classes/Entidades/Estado.cs b/DFe.Classes/Entidades/Estado.cs index 5e16ea5b5..27c38adb2 100644 --- a/DFe.Classes/Entidades/Estado.cs +++ b/DFe.Classes/Entidades/Estado.cs @@ -36,90 +36,183 @@ namespace DFe.Classes.Entidades { public enum Estado { + /// + /// Acre + /// [XmlEnum("12")] AC = 12, + /// + /// Alagoas + /// [XmlEnum("27")] AL = 27, + /// + /// Amapá + /// [XmlEnum("16")] AP = 16, + /// + /// Amazonas + /// [XmlEnum("13")] AM = 13, + /// + /// Bahia + /// [XmlEnum("29")] BA = 29, + /// + /// Ceará + /// [XmlEnum("23")] CE = 23, + /// + /// Distrito Federal + /// [XmlEnum("53")] DF = 53, + /// + /// Espírito Santo + /// [XmlEnum("32")] ES = 32, + /// + /// Goiás + /// [XmlEnum("52")] GO = 52, + /// + /// Maranhão + /// [XmlEnum("21")] MA = 21, + /// + /// Mato Grosso + /// [XmlEnum("51")] MT = 51, + /// + /// Mato Grosso do Sul + /// [XmlEnum("50")] MS = 50, + /// + /// Minas Gerais + /// [XmlEnum("31")] MG = 31, + /// + /// Pará + /// [XmlEnum("15")] PA = 15, + /// + /// Paraíba + /// [XmlEnum("25")] PB = 25, + /// + /// Paraná + /// [XmlEnum("41")] PR = 41, + /// + /// Pernambuco + /// [XmlEnum("26")] PE = 26, + /// + /// Piauí + /// [XmlEnum("22")] PI = 22, + /// + /// Rio de Janeiro + /// [XmlEnum("33")] RJ = 33, + /// + /// Rio Grande do Norte + /// [XmlEnum("24")] RN = 24, + /// + /// Rio Grande do Sul + /// [XmlEnum("43")] RS = 43, + /// + /// Rondônia + /// [XmlEnum("11")] RO = 11, + /// + /// Roraima + /// [XmlEnum("14")] RR = 14, + /// + /// Santa Catarina + /// [XmlEnum("42")] SC = 42, + /// + /// São Paulo + /// [XmlEnum("35")] SP = 35, + /// + /// Sergipe + /// [XmlEnum("28")] SE = 28, + /// + /// Tocantins + /// [XmlEnum("17")] TO = 17, + /// + /// Ambiente nacional + /// [XmlEnum("91")] AN = 91, + /// + /// SVRS + /// + [XmlEnum("92")] + SVRS = 92, + + /// + /// Exterior + /// [XmlEnum("99")] EX = 99 } diff --git a/DFe.Classes/Extensoes/ExtVersaoServico.cs b/DFe.Classes/Extensoes/ExtVersaoServico.cs new file mode 100644 index 000000000..2023400b6 --- /dev/null +++ b/DFe.Classes/Extensoes/ExtVersaoServico.cs @@ -0,0 +1,27 @@ +using System; +using DFe.Classes.Flags; + +namespace DFe.Classes.Extensoes +{ + public static class ExtVersaoServico + { + public static string GetVersaoString(this VersaoServico versaoServico) + { + switch (versaoServico) + { + case VersaoServico.Versao100: + return "1.00"; + case VersaoServico.Versao200: + return "2.00"; + case VersaoServico.Versao300: + return "3.00"; + case VersaoServico.Versao310: + return "3.10"; + case VersaoServico.Versao400: + return "4.00"; + default: + throw new ArgumentOutOfRangeException("versaoServico", versaoServico, null); + } + } + } +} \ No newline at end of file diff --git a/DFe.Classes/Extensoes/Valor.cs b/DFe.Classes/Extensoes/Valor.cs new file mode 100644 index 000000000..b28c23519 --- /dev/null +++ b/DFe.Classes/Extensoes/Valor.cs @@ -0,0 +1,21 @@ +using System; +using System.Globalization; + +namespace DFe.Classes +{ + public static class Valor + { + public static decimal Arredondar(this decimal valor, int casasDecimais) + { + var valorArredondado = decimal.Round(valor, casasDecimais, MidpointRounding.ToEven); + var valorArredondadoFormatado = valorArredondado.ToString("F" + casasDecimais, CultureInfo.CurrentCulture); + return decimal.Parse(valorArredondadoFormatado); + } + + public static decimal? Arredondar(this decimal? valor, int casasDecimais) + { + if (valor == null) return null; + return Arredondar(valor.Value, casasDecimais); + } + } +} diff --git a/DFe.Classes/Flags/TipoAmbiente.cs b/DFe.Classes/Flags/TipoAmbiente.cs old mode 100755 new mode 100644 index ddcb183a9..bc0bc900a --- a/DFe.Classes/Flags/TipoAmbiente.cs +++ b/DFe.Classes/Flags/TipoAmbiente.cs @@ -30,15 +30,25 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + +using System.ComponentModel; using System.Xml.Serialization; namespace DFe.Classes.Flags { + /// + /// Identificação do Ambiente + /// 1 - Produção + /// 2 - Homologação + /// public enum TipoAmbiente { [XmlEnum("1")] + [Description("Produção")] Producao = 1, + [XmlEnum("2")] + [Description("Homologação")] Homologacao = 2 } } \ No newline at end of file diff --git a/DFe.Classes/Flags/VersaoServico.cs b/DFe.Classes/Flags/VersaoServico.cs new file mode 100644 index 000000000..55024b6ec --- /dev/null +++ b/DFe.Classes/Flags/VersaoServico.cs @@ -0,0 +1,55 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.Xml.Serialization; + +namespace DFe.Classes.Flags +{ + public enum VersaoServico + { + [XmlEnum("1.00")] + Versao100 = 100, + + [XmlEnum("2.00")] + Versao200 = 200, + + [XmlEnum("3.00")] + Versao300 = 300, + + [XmlEnum("3.10")] + Versao310 = 310, + + [XmlEnum("4.00")] + Versao400 = 400 + } +} \ No newline at end of file diff --git a/DFe.Classes/Properties/AssemblyInfo.cs b/DFe.Classes/Properties/AssemblyInfo.cs deleted file mode 100755 index c34c671ba..000000000 --- a/DFe.Classes/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("DFe.Classes")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("DFe.Classes")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("9984ec15-18e1-4a87-b4db-18ac913dc4e8")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.0.0.7")] -[assembly: AssemblyFileVersion("0.0.0.7")] diff --git a/DFe.Classes/Valor.cs b/DFe.Classes/Valor.cs deleted file mode 100644 index df68d2e1c..000000000 --- a/DFe.Classes/Valor.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.Globalization; - -namespace DFe.Classes -{ - public static class Valor - { - public static decimal Arredondar(this decimal valor, int casasDecimais) - { - var valorNovo = decimal.Round(valor, casasDecimais); - var valorNovoStr = valorNovo.ToString("F" + casasDecimais, CultureInfo.CurrentCulture); - return decimal.Parse(valorNovoStr); - } - - public static decimal? Arredondar(this decimal? valor, int casasDecimais) - { - if (valor == null) return null; - return Arredondar(valor.Value, casasDecimais); - } - } -} diff --git a/DFe.Testes/DFe.Testes.csproj b/DFe.Testes/DFe.Testes.csproj new file mode 100644 index 000000000..cc90271e4 --- /dev/null +++ b/DFe.Testes/DFe.Testes.csproj @@ -0,0 +1,25 @@ + + + + net6.0 + false + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + diff --git a/NFe.Testes/NFeTestes.cs b/DFe.Testes/Gerais/NFeTestes.cs similarity index 99% rename from NFe.Testes/NFeTestes.cs rename to DFe.Testes/Gerais/NFeTestes.cs index 6b5c20d2b..1877fe483 100644 --- a/NFe.Testes/NFeTestes.cs +++ b/DFe.Testes/Gerais/NFeTestes.cs @@ -1,13 +1,13 @@ using System; -using Microsoft.VisualStudio.TestTools.UnitTesting; +using System.Collections.Generic; +using System.Linq; +using System.Threading; using System.Threading.Tasks; using DFe.Classes.Entidades; +using Microsoft.VisualStudio.TestTools.UnitTesting; using NFe.Utils; -using System.Threading; -using System.Collections.Generic; -using System.Linq; -namespace NFe.Testes +namespace DFe.Testes.Gerais { [TestClass] public class NFeTestes diff --git a/DFe.Testes/Impostos/COFINSGeral__Teste.cs b/DFe.Testes/Impostos/COFINSGeral__Teste.cs new file mode 100644 index 000000000..5012f3948 --- /dev/null +++ b/DFe.Testes/Impostos/COFINSGeral__Teste.cs @@ -0,0 +1,157 @@ +using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using NFe.Classes.Informacoes.Detalhe.Tributacao.Federal; +using NFe.Classes.Informacoes.Detalhe.Tributacao.Federal.Tipos; +using NFe.Utils.Tributacao.Federal; + +namespace DFe.Testes.Impostos +{ + [TestClass] + public class COFINSGeral_Teste + { + /// + /// Método auxiliar para preencher as propriedades do objeto a ser testado + /// + private void PreenchePropriedades( + COFINSGeral cofinsGeral, + CSTCOFINS cst, + object vBC = null, + object pCOFINS = null, + object vCOFINS = null, + object qBCProd = null, + object vAliqProd = null) + { + cofinsGeral.CST = cst; + if (vBC != null) cofinsGeral.vBC = Convert.ToDecimal(vBC); + if (pCOFINS != null) cofinsGeral.pCOFINS = Convert.ToDecimal(pCOFINS); + if (vCOFINS != null) cofinsGeral.vCOFINS = Convert.ToDecimal(vCOFINS); + if (qBCProd != null) cofinsGeral.qBCProd = Convert.ToDecimal(qBCProd); + if (vAliqProd != null) cofinsGeral.vAliqProd = Convert.ToDecimal(vAliqProd); + } + + [TestMethod] + [DataTestMethod] + [DataRow(CSTCOFINS.cofins01, 1000, 1, 10)] + [DataRow(CSTCOFINS.cofins02, 1000, 1, 10)] + public void ObterCOFINSBasico_COFINSAliq_Teste(CSTCOFINS cst, object vBC, object pCOFINS, object vCOFINS) + { + /** 1) Preparação **/ + var cofinsGeral = new COFINSGeral(); + PreenchePropriedades(cofinsGeral, cst, vBC, pCOFINS, vCOFINS); + + /** 2) Execução **/ + var tagGerada = cofinsGeral.ObterCOFINSBasico(); + + /** 2) Veerificação **/ + /** 2.1) Garante que o tipo da classe gerada foi correta**/ + Assert.IsInstanceOfType(tagGerada, typeof(COFINSAliq)); + + /** 2.2) Garante que o conteúdo repassado para as propriedades estejam corretos **/ + var tagCOFINSGerada = (tagGerada as COFINSAliq); + Assert.AreEqual(cst, tagCOFINSGerada.CST); + Assert.AreEqual(Convert.ToDecimal(vBC), tagCOFINSGerada.vBC); + Assert.AreEqual(Convert.ToDecimal(pCOFINS), tagCOFINSGerada.pCOFINS); + Assert.AreEqual(Convert.ToDecimal(vCOFINS), tagCOFINSGerada.vCOFINS); + } + + + [TestMethod] + [DataTestMethod] + [DataRow(CSTCOFINS.cofins03, 1000, 1, 10)] + public void ObterCOFINSBasico_COFINSQtde_Teste(CSTCOFINS cst, object qBCProd, object vAliqProd, object vCOFINS) + { + /** 1) Preparação **/ + var cofinsGeral = new COFINSGeral(); + PreenchePropriedades(cofinsGeral, cst, null, null, vCOFINS, qBCProd, vAliqProd); + + /** 2) Execução **/ + var tagGerada = cofinsGeral.ObterCOFINSBasico(); + + /** 2) Veerificação **/ + /** 2.1) Garante que o tipo da classe gerada foi correta**/ + Assert.IsInstanceOfType(tagGerada, typeof(COFINSQtde)); + + /** 2.2) Garante que o conteúdo repassado para as propriedades estejam corretos **/ + var tagCOFINSGerada = (tagGerada as COFINSQtde); + Assert.AreEqual(cst, tagCOFINSGerada.CST); + Assert.AreEqual(Convert.ToDecimal(qBCProd), tagCOFINSGerada.qBCProd); + Assert.AreEqual(Convert.ToDecimal(vAliqProd), tagCOFINSGerada.vAliqProd); + Assert.AreEqual(Convert.ToDecimal(vCOFINS), tagCOFINSGerada.vCOFINS); + } + + [TestMethod] + [DataTestMethod] + [DataRow(CSTCOFINS.cofins04)] + [DataRow(CSTCOFINS.cofins05)] + [DataRow(CSTCOFINS.cofins06)] + [DataRow(CSTCOFINS.cofins07)] + [DataRow(CSTCOFINS.cofins08)] + [DataRow(CSTCOFINS.cofins09)] + public void ObterCOFINSBasico_COFINSNT_Teste(CSTCOFINS cst) + { + /** 1) Preparação **/ + var cofinsGeral = new COFINSGeral(); + PreenchePropriedades(cofinsGeral, cst); + + /** 2) Execução **/ + var tagGerada = cofinsGeral.ObterCOFINSBasico(); + + /** 2) Veerificação **/ + /** 2.1) Garante que o tipo da classe gerada foi correta**/ + Assert.IsInstanceOfType(tagGerada, typeof(COFINSNT)); + + /** 2.2) Garante que o conteúdo repassado para as propriedades estejam corretos **/ + var tagCOFINSGerada = (tagGerada as COFINSNT); + Assert.AreEqual(cst, tagCOFINSGerada.CST); + } + + [TestMethod] + [DataTestMethod] + [DataRow(CSTCOFINS.cofins49, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins50, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins51, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins52, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins53, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins54, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins55, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins56, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins60, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins61, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins62, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins63, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins64, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins65, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins66, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins67, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins70, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins71, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins72, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins73, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins74, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins75, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins98, 1000, 1, 10, 1000, 1)] + [DataRow(CSTCOFINS.cofins99, 1000, 1, 10, 1000, 1)] + public void ObterCOFINSBasico_COFINSOutr_Teste(CSTCOFINS cst, object vBC, object pCOFINS, object vCOFINS, object qBCProd, object vAliqProd) + { + /** 1) Preparação **/ + var cofinsGeral = new COFINSGeral(); + PreenchePropriedades(cofinsGeral, cst, vBC, pCOFINS, vCOFINS, qBCProd, vAliqProd); + + /** 2) Execução **/ + var tagGerada = cofinsGeral.ObterCOFINSBasico(); + + /** 2) Verificação **/ + /** 2.1) Garante que o tipo da classe gerada foi correta**/ + Assert.IsInstanceOfType(tagGerada, typeof(COFINSOutr)); + + /** 2.2) Garante que o conteúdo repassado para as propriedades estejam corretos **/ + var tagCOFINSGerada = (tagGerada as COFINSOutr); + Assert.AreEqual(cst, tagCOFINSGerada.CST); + Assert.AreEqual(Convert.ToDecimal(vBC), tagCOFINSGerada.vBC); + Assert.AreEqual(Convert.ToDecimal(pCOFINS), tagCOFINSGerada.pCOFINS); + Assert.AreEqual(Convert.ToDecimal(vCOFINS), tagCOFINSGerada.vCOFINS); + Assert.AreEqual(Convert.ToDecimal(qBCProd), tagCOFINSGerada.qBCProd); + Assert.AreEqual(Convert.ToDecimal(vAliqProd), tagCOFINSGerada.vAliqProd); + } + } +} diff --git a/DFe.Testes/Impostos/DadosDeTeste/ICMSGeralDadosDeTeste.cs b/DFe.Testes/Impostos/DadosDeTeste/ICMSGeralDadosDeTeste.cs new file mode 100644 index 000000000..24e83fafc --- /dev/null +++ b/DFe.Testes/Impostos/DadosDeTeste/ICMSGeralDadosDeTeste.cs @@ -0,0 +1,49 @@ +using NFe.Classes.Informacoes.Detalhe.Tributacao.Estadual.Tipos; +using NFe.Classes.Informacoes.Emitente; +using System.Collections.Generic; + +namespace DFe.Testes.Impostos.DadosDeTeste +{ + public class ICMSGeralDadosDeTeste + { + public static IEnumerable ObterRegimesTributariosParaCst61() + { + yield return new object[] { CRT.RegimeNormal, OrigemMercadoria.OmNacional, 1000, 18, 180 }; + yield return new object[] { CRT.RegimeNormal, OrigemMercadoria.OmEstrangeiraImportacaoDireta, 1001, 180, 18 }; + yield return new object[] { CRT.RegimeNormal, OrigemMercadoria.OmEstrangeiraAdquiridaBrasil, 1000, 180, 10 }; + yield return new object[] { CRT.RegimeNormal, OrigemMercadoria.OmNacionalConteudoImportacaoSuperior40, 1200, 18, 180 }; + yield return new object[] { CRT.RegimeNormal, OrigemMercadoria.OmNacionalProcessosBasicos, 1100, 18, 180 }; + yield return new object[] { CRT.RegimeNormal, OrigemMercadoria.OmNacionalConteudoImportacaoInferiorIgual40, 1010, 12, 10 }; + yield return new object[] { CRT.RegimeNormal, OrigemMercadoria.OmEstrangeiraImportacaoDiretaSemSimilar, 101, 17, 11 }; + yield return new object[] { CRT.RegimeNormal, OrigemMercadoria.OmEstrangeiraAdquiridaBrasilSemSimilar, 105, 19, 15 }; + yield return new object[] { CRT.RegimeNormal, OrigemMercadoria.OmNacionalConteudoImportacaoSuperior70, 103, 18, 15 }; + + yield return new object[] { CRT.SimplesNacional, OrigemMercadoria.OmNacional, 1000, 18, 180 }; + yield return new object[] { CRT.SimplesNacional, OrigemMercadoria.OmEstrangeiraImportacaoDireta, 1001, 180, 18 }; + yield return new object[] { CRT.SimplesNacional, OrigemMercadoria.OmEstrangeiraAdquiridaBrasil, 1000, 180, 10 }; + yield return new object[] { CRT.SimplesNacional, OrigemMercadoria.OmNacionalConteudoImportacaoSuperior40, 1200, 18, 180 }; + yield return new object[] { CRT.SimplesNacional, OrigemMercadoria.OmNacionalProcessosBasicos, 1100, 18, 180 }; + yield return new object[] { CRT.SimplesNacional, OrigemMercadoria.OmNacionalConteudoImportacaoInferiorIgual40, 1010, 12, 10 }; + yield return new object[] { CRT.SimplesNacional, OrigemMercadoria.OmEstrangeiraImportacaoDiretaSemSimilar, 101, 17, 11 }; + yield return new object[] { CRT.SimplesNacional, OrigemMercadoria.OmEstrangeiraAdquiridaBrasilSemSimilar, 105, 19, 15 }; + yield return new object[] { CRT.SimplesNacional, OrigemMercadoria.OmNacionalConteudoImportacaoSuperior70, 103, 18, 15 }; + + yield return new object[] { CRT.SimplesNacionalExcessoSublimite, OrigemMercadoria.OmNacional, 1000, 18, 180 }; + yield return new object[] { CRT.SimplesNacionalExcessoSublimite, OrigemMercadoria.OmEstrangeiraImportacaoDireta, 1001, 180, 18 }; + yield return new object[] { CRT.SimplesNacionalExcessoSublimite, OrigemMercadoria.OmEstrangeiraAdquiridaBrasil, 1000, 180, 10 }; + yield return new object[] { CRT.SimplesNacionalExcessoSublimite, OrigemMercadoria.OmNacionalConteudoImportacaoSuperior40, 1200, 18, 180 }; + yield return new object[] { CRT.SimplesNacionalExcessoSublimite, OrigemMercadoria.OmNacionalProcessosBasicos, 1100, 18, 180 }; + yield return new object[] { CRT.SimplesNacionalExcessoSublimite, OrigemMercadoria.OmNacionalConteudoImportacaoInferiorIgual40, 1010, 12, 10 }; + yield return new object[] { CRT.SimplesNacionalExcessoSublimite, OrigemMercadoria.OmEstrangeiraImportacaoDiretaSemSimilar, 101, 17, 11 }; + yield return new object[] { CRT.SimplesNacionalExcessoSublimite, OrigemMercadoria.OmEstrangeiraAdquiridaBrasilSemSimilar, 105, 19, 15 }; + yield return new object[] { CRT.SimplesNacionalExcessoSublimite, OrigemMercadoria.OmNacionalConteudoImportacaoSuperior70, 103, 18, 15 }; + } + + public static IEnumerable ObterRegimesTributarios() + { + yield return new object[] { CRT.SimplesNacional }; + yield return new object[] { CRT.SimplesNacionalExcessoSublimite }; + yield return new object[] { CRT.RegimeNormal }; + } + } +} diff --git a/DFe.Testes/Impostos/ICMSGeral_Teste.cs b/DFe.Testes/Impostos/ICMSGeral_Teste.cs new file mode 100644 index 000000000..ba8a06ba7 --- /dev/null +++ b/DFe.Testes/Impostos/ICMSGeral_Teste.cs @@ -0,0 +1,269 @@ +using System; +using System.ComponentModel; +using DFe.Testes.Impostos.DadosDeTeste; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using NFe.Classes.Informacoes.Detalhe.Tributacao.Estadual; +using NFe.Classes.Informacoes.Detalhe.Tributacao.Estadual.Tipos; +using NFe.Classes.Informacoes.Emitente; +using NFe.Utils.Tributacao.Estadual; + +namespace DFe.Testes.Impostos +{ + [TestClass] + public class ICMSGeral_Teste + { + #region CRT - Normal + + [TestMethod] + [DataTestMethod] + [DataRow(CRT.RegimeNormal, OrigemMercadoria.OmEstrangeiraAdquiridaBrasil, DeterminacaoBaseIcms.DbiMargemValorAgregado, 1000, 18, 180, null, null)] + [DataRow(CRT.RegimeNormal, OrigemMercadoria.OmEstrangeiraAdquiridaBrasilSemSimilar, DeterminacaoBaseIcms.DbiMargemValorAgregado, 1000, 18, 180, 0, 0)] + [DataRow(CRT.RegimeNormal, OrigemMercadoria.OmEstrangeiraImportacaoDireta, DeterminacaoBaseIcms.DbiValorOperacao, 1000, 18, 180, 0, 0)] + [DataRow(CRT.RegimeNormal, OrigemMercadoria.OmEstrangeiraImportacaoDiretaSemSimilar, DeterminacaoBaseIcms.DbiMargemValorAgregado, 1000, 18, 180, null, null)] + [DataRow(CRT.RegimeNormal, OrigemMercadoria.OmNacional, DeterminacaoBaseIcms.DbiPrecoTabelado, 1000, 18, 180, null, null)] + [DataRow(CRT.RegimeNormal, OrigemMercadoria.OmNacionalConteudoImportacaoInferiorIgual40, DeterminacaoBaseIcms.DbiPauta, 1000, 18, 180, 0, 0)] + public void ObterICMSBasico_ICMS00_Teste(CRT crt, OrigemMercadoria origem, DeterminacaoBaseIcms modBC, object vBC, object pICMS, object vICMS, object pFCP, object vFCP) + { + /** 1) Preparação **/ + var icmsGeral = new ICMSGeral() + { + orig = origem, + CST = Csticms.Cst00, + modBC = modBC, + vBC = Convert.ToDecimal(vBC), + pICMS = Convert.ToDecimal(pICMS), + vICMS = Convert.ToDecimal(vICMS), + pFCP = Convert.ToDecimal(pFCP), + vFCP = Convert.ToDecimal(vFCP) + }; + + /** 2) Execução **/ + var tagGerada = icmsGeral.ObterICMSBasico(crt); + + /** 2) Veerificação **/ + /** 2.1) Garante que o tipo da classe gerada foi correta**/ + Assert.IsInstanceOfType(tagGerada, typeof(ICMS00)); + + /** 2.2) Garante que o conteúdo repassado para as propriedades estejam corretos **/ + var tagICMSGerada = (tagGerada as ICMS00); + Assert.AreEqual(origem, tagICMSGerada.orig); + Assert.AreEqual(Csticms.Cst00, tagICMSGerada.CST); + Assert.AreEqual(modBC, tagICMSGerada.modBC); + Assert.AreEqual(Convert.ToDecimal(vBC), tagICMSGerada.vBC); + Assert.AreEqual(Convert.ToDecimal(pICMS), tagICMSGerada.pICMS); + Assert.AreEqual(Convert.ToDecimal(vICMS), tagICMSGerada.vICMS); + Assert.AreEqual(Convert.ToDecimal(pFCP), tagICMSGerada.pFCP); + Assert.AreEqual(Convert.ToDecimal(vFCP), tagICMSGerada.vFCP); + } + + [TestMethod] + [DataTestMethod] + [DataRow(CRT.RegimeNormal, OrigemMercadoria.OmEstrangeiraAdquiridaBrasil, DeterminacaoBaseIcms.DbiMargemValorAgregado, 1000, 18, 180, 0, 0, 0, DeterminacaoBaseIcmsSt.DbisListaNegativa, 15, 2, 1000, 18, 25, 0, 0, 0)] + [DataRow(CRT.RegimeNormal, OrigemMercadoria.OmEstrangeiraAdquiridaBrasilSemSimilar, DeterminacaoBaseIcms.DbiMargemValorAgregado, 1000, 18, 180, 0, 0, 0, DeterminacaoBaseIcmsSt.DbisListaNegativa, 15, 2, 1000, 18, 25, 100, 10, 10)] + [DataRow(CRT.RegimeNormal, OrigemMercadoria.OmNacionalConteudoImportacaoInferiorIgual40, DeterminacaoBaseIcms.DbiMargemValorAgregado, 100, 18, 18, 0, 0, 0, DeterminacaoBaseIcmsSt.DbisListaNegativa, 15, 2, 1000, 18, 25, 0, 0, 0)] + public void ObterICMSBasico_ICMS10_Teste(CRT crt, OrigemMercadoria origem, DeterminacaoBaseIcms modBC, object vBC, object pICMS, object vICMS, object vBCFCP, object pFCP, object vFCP, DeterminacaoBaseIcmsSt modBCST, object pMVAST, object pRedBCST, object vBCST, object pICMSST, object vICMSST, object vBCFCPST, object pFCPST, object vFCPST) + { + /** 1) Preparação **/ + var icmsGeral = new ICMSGeral() + { + orig = origem, + CST = Csticms.Cst10, + modBC = modBC, + vBC = Convert.ToDecimal(vBC), + pICMS = Convert.ToDecimal(pICMS), + vICMS = Convert.ToDecimal(vICMS), + pFCP = Convert.ToDecimal(pFCP), + vFCP = Convert.ToDecimal(vFCP), + vBCFCP = Convert.ToDecimal(vBCFCP), + modBCST = modBCST, + pMVAST = Convert.ToDecimal(pMVAST), + pRedBCST = Convert.ToDecimal(pRedBCST), + vBCST = Convert.ToDecimal(vBCST), + pICMSST = Convert.ToDecimal(pICMSST), + vICMSST = Convert.ToDecimal(vICMSST), + vBCFCPST = Convert.ToDecimal(vBCFCPST), + pFCPST = Convert.ToDecimal(pFCPST), + vFCPST = Convert.ToDecimal(vFCPST) + }; + + /** 2) Execução **/ + var tagGerada = icmsGeral.ObterICMSBasico(crt); + + /** 2) Veerificação **/ + /** 2.1) Garante que o tipo da classe gerada foi correta**/ + Assert.IsInstanceOfType(tagGerada, typeof(ICMS10)); + + /** 2.2) Garante que o conteúdo repassado para as propriedades estejam corretos **/ + var tagICMSGerada = (tagGerada as ICMS10); + Assert.AreEqual(origem, tagICMSGerada.orig); + Assert.AreEqual(Csticms.Cst10, tagICMSGerada.CST); + Assert.AreEqual(modBC, tagICMSGerada.modBC); + Assert.AreEqual(Convert.ToDecimal(vBC), tagICMSGerada.vBC); + Assert.AreEqual(Convert.ToDecimal(pICMS), tagICMSGerada.pICMS); + Assert.AreEqual(Convert.ToDecimal(vICMS), tagICMSGerada.vICMS); + Assert.AreEqual(Convert.ToDecimal(pFCP), tagICMSGerada.pFCP); + Assert.AreEqual(Convert.ToDecimal(vFCP), tagICMSGerada.vFCP); + Assert.AreEqual(Convert.ToDecimal(vBCFCP), tagICMSGerada.vBCFCP); + Assert.AreEqual(modBCST, tagICMSGerada.modBCST); + Assert.AreEqual(Convert.ToDecimal(pMVAST), tagICMSGerada.pMVAST); + Assert.AreEqual(Convert.ToDecimal(pRedBCST), tagICMSGerada.pRedBCST); + Assert.AreEqual(Convert.ToDecimal(vBCST), tagICMSGerada.vBCST); + Assert.AreEqual(Convert.ToDecimal(pICMSST), tagICMSGerada.pICMSST); + Assert.AreEqual(Convert.ToDecimal(vICMSST), tagICMSGerada.vICMSST); + Assert.AreEqual(Convert.ToDecimal(vBCFCPST), tagICMSGerada.vBCFCPST); + Assert.AreEqual(Convert.ToDecimal(pFCPST), tagICMSGerada.pFCPST); + Assert.AreEqual(Convert.ToDecimal(vFCPST), tagICMSGerada.vFCPST); + } + + //TODO: Falta criar os métodos de testes dos demais CSTs do ICMS (CTR = Normal) + + #endregion + + #region CRT - Simples + + [TestMethod] + [DataTestMethod] + [DataRow(CRT.SimplesNacional, OrigemMercadoria.OmEstrangeiraAdquiridaBrasil, 100, 18)] + public void ObterICMSBasico_CSOSN101_Teste(CRT crt, OrigemMercadoria origem, object pCredSN, object vCredICMSSN) + { + /** 1) Preparação **/ + var icmsGeral = new ICMSGeral() + { + orig = origem, + CSOSN = Csosnicms.Csosn101, + pCredSN = Convert.ToDecimal(pCredSN), + vCredICMSSN = Convert.ToDecimal(vCredICMSSN) + }; + + /** 2) Execução **/ + var tagGerada = icmsGeral.ObterICMSBasico(crt); + + /** 2) Veerificação **/ + /** 2.1) Garante que o tipo da classe gerada foi correta**/ + Assert.IsInstanceOfType(tagGerada, typeof(ICMSSN101)); + + /** 2.2) Garante que o conteúdo repassado para as propriedades estejam corretos **/ + var tagICMSGerada = (tagGerada as ICMSSN101); + Assert.AreEqual(origem, tagICMSGerada.orig); + Assert.AreEqual(Csosnicms.Csosn101, tagICMSGerada.CSOSN); + Assert.AreEqual(Convert.ToDecimal(pCredSN), tagICMSGerada.pCredSN); + Assert.AreEqual(Convert.ToDecimal(vCredICMSSN), tagICMSGerada.vCredICMSSN); + } + + //TODO: Falta criar os métodos de testes dos demais CSOSNs do ICMS (CTR = Simples) + + #endregion + + #region CST 61 - Tributação Monofásica Sobre os Combustíveis + + [TestMethod] + [DynamicData(nameof(ICMSGeralDadosDeTeste.ObterRegimesTributariosParaCst61), typeof(ICMSGeralDadosDeTeste), DynamicDataSourceType.Method)] + [DisplayName("Dado CST 61 quando obter ICMS então ICMS deve conter campos de tributação monofásica sobre combustíveis preenchidos")] + public void DadoCST61QuandoObterICMSEntaoICMSDeveConterCamposDeTributacaoMonofasicaSobreCombustiveisPreenchidos(CRT crt, OrigemMercadoria origem, object vICMSMonoRet, object adRemICMSRet, object qBCMonoRet) + { + /** 1) Preparação **/ + var icmsGeral = new ICMSGeral() + { + orig = origem, + CST = Csticms.Cst61, + vICMSMonoRet = Convert.ToDecimal(vICMSMonoRet), + adRemICMSRet = Convert.ToDecimal(adRemICMSRet), + qBCMonoRet = Convert.ToDecimal(qBCMonoRet) + }; + + /** 2) Execução **/ + var tagGerada = icmsGeral.ObterICMSBasico(crt); + + /** 2) Veerificação **/ + /** 2.1) Garante que o tipo da classe gerada foi correta**/ + Assert.IsInstanceOfType(tagGerada, typeof(ICMS61)); + + /** 2.2) Garante que o conteúdo repassado para as propriedades estejam corretos **/ + var tagICMSGerada = (tagGerada as ICMS61); + Assert.AreEqual(origem, tagICMSGerada.orig); + Assert.AreEqual(Csticms.Cst61, tagICMSGerada.CST); + Assert.AreEqual(Convert.ToDecimal(vICMSMonoRet), tagICMSGerada.vICMSMonoRet); + Assert.AreEqual(Convert.ToDecimal(adRemICMSRet), tagICMSGerada.adRemICMSRet); + Assert.AreEqual(Convert.ToDecimal(qBCMonoRet), tagICMSGerada.qBCMonoRet); + } + + [TestMethod] + [DynamicData(nameof(ICMSGeralDadosDeTeste.ObterRegimesTributariosParaCst61), typeof(ICMSGeralDadosDeTeste), DynamicDataSourceType.Method)] + [DisplayName("Dado CST 61 quando obter ICMS então ICMS não deve ter campos que não sejam da tributação monofásica sobre combustíveis preenchidos")] + public void DadoCST61QuandoObterIcmsEntaoIcmsNaoDeveTerCamposQueNaoSejamDaTributacaoMonofasicaSobreCombustiveisPreenchidos(CRT crt, OrigemMercadoria origem, object vICMSMonoRet, object adRemICMSRet, object qBCMonoRet) + { + /** 1) Preparação **/ + var icmsGeral = new ICMSGeral() + { + orig = origem, + CST = Csticms.Cst61, + vICMSMonoRet = Convert.ToDecimal(vICMSMonoRet), + adRemICMSRet = Convert.ToDecimal(adRemICMSRet), + qBCMonoRet = Convert.ToDecimal(qBCMonoRet) + }; + + /** 2) Execução **/ + icmsGeral.ObterICMSBasico(crt); + + /** 2) Verificação **/ + VerificarSeNaoFoiPreenchidaOutroCampoQueNaoSejaCamposDaCst61(icmsGeral); + } + + private void VerificarSeNaoFoiPreenchidaOutroCampoQueNaoSejaCamposDaCst61(ICMSGeral icmsGeral) + { + Assert.AreEqual(icmsGeral.pCredSN, 0); + Assert.AreEqual(icmsGeral.vCredICMSSN, 0); + Assert.AreEqual(icmsGeral.vBC, 0); + Assert.AreEqual(icmsGeral.pICMS, 0); + Assert.AreEqual(icmsGeral.vICMS, 0); + Assert.IsNull(icmsGeral.pFCP); + Assert.IsNull(icmsGeral.vFCP); + Assert.IsNull(icmsGeral.vBCFCP); + } + + [TestMethod] + [DynamicData(nameof(ICMSGeralDadosDeTeste.ObterRegimesTributarios), typeof(ICMSGeralDadosDeTeste), DynamicDataSourceType.Method)] + [DisplayName("Dado CST 61 quando gerar ICMS então ICMS deve ser do tipo ICMS 61 e nenhum outro")] + public void DadoCST61QuandoGerarICMSEntaoICMSDeveSerDoTipoICMS61ENenhumOutro(CRT crt) + { + /** 1) Preparação **/ + var icmsGeral = new ICMSGeral() + { + CST = Csticms.Cst61 + }; + + /** 2) Execução **/ + var tagGerada = icmsGeral.ObterICMSBasico(crt); + + /** 2) Verificação **/ + VerificarSeFoiGeradoIcms61(tagGerada); + } + + private void VerificarSeFoiGeradoIcms61(ICMSBasico tagGerada) + { + Assert.IsInstanceOfType(tagGerada, typeof(ICMS61)); + + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMS00)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMS02)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMS10)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMS15)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMS20)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMS30)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMS40)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMS51)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMS53)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMS51)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMS60)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMS70)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMS90)); + + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMSSN101)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMSSN102)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMSSN201)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMSSN202)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMSSN500)); + Assert.IsNotInstanceOfType(tagGerada, typeof(ICMSSN900)); + } + #endregion + } +} diff --git a/DFe.Testes/Impostos/IPIGeral_Teste.cs b/DFe.Testes/Impostos/IPIGeral_Teste.cs new file mode 100644 index 000000000..04aeef4dc --- /dev/null +++ b/DFe.Testes/Impostos/IPIGeral_Teste.cs @@ -0,0 +1,92 @@ +using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using NFe.Classes.Informacoes.Detalhe.Tributacao.Federal; +using NFe.Classes.Informacoes.Detalhe.Tributacao.Federal.Tipos; +using NFe.Utils.Tributacao.Federal; + +namespace DFe.Testes.Impostos +{ + [TestClass] + public class IPIGeral_Teste + { + /// + /// Método auxiliar para preencher as propriedades do objeto a ser testado + /// + private void PreenchePropriedades( + IPIGeral ipiGeral, + CSTIPI cst, + object vBC = null, + object pIPI = null, + object vIPI = null, + object qUnid = null, + object vUnid = null) + { + ipiGeral.CST = cst; + if (vBC != null) ipiGeral.vBC = Convert.ToDecimal(vBC); + if (pIPI != null) ipiGeral.pIPI = Convert.ToDecimal(pIPI); + if (vIPI != null) ipiGeral.vIPI = Convert.ToDecimal(vIPI); + if (qUnid != null) ipiGeral.qUnid = Convert.ToDecimal(qUnid); + if (vUnid != null) ipiGeral.vUnid = Convert.ToDecimal(vUnid); + } + + [TestMethod] + [DataTestMethod] + [DataRow(CSTIPI.ipi00, 1000, 1, 10, 5, 50)] + [DataRow(CSTIPI.ipi49, 1000, 1, 10, 5, 50)] + [DataRow(CSTIPI.ipi50, 1000, 1, 10, 5, 50)] + [DataRow(CSTIPI.ipi99, 1000, 1, 10, 5, 50)] + public void ObterIPIBasico_IPITrib_Teste(CSTIPI cst, object vBC, object pIPI, object vIPI, object qUnid, object vUnid) + { + /** 1) Preparação **/ + var ipiGeral = new IPIGeral(); + PreenchePropriedades(ipiGeral, cst, vBC, pIPI, vIPI, qUnid, vUnid); + + /** 2) Execução **/ + var tagGerada = ipiGeral.ObterIPIBasico(); + + /** 2) Veerificação **/ + /** 2.1) Garante que o tipo da classe gerada foi correta**/ + Assert.IsInstanceOfType(tagGerada, typeof(IPITrib)); + + /** 2.2) Garante que o conteúdo repassado para as propriedades estejam corretos **/ + var tagIPIGerada = (tagGerada as IPITrib); + Assert.AreEqual(cst, tagIPIGerada.CST); + Assert.AreEqual(Convert.ToDecimal(vBC), tagIPIGerada.vBC); + Assert.AreEqual(Convert.ToDecimal(pIPI), tagIPIGerada.pIPI); + Assert.AreEqual(Convert.ToDecimal(vIPI), tagIPIGerada.vIPI); + Assert.AreEqual(Convert.ToDecimal(qUnid), tagIPIGerada.qUnid); + Assert.AreEqual(Convert.ToDecimal(vUnid), tagIPIGerada.vUnid); + } + + [TestMethod] + [DataTestMethod] + [DataRow(CSTIPI.ipi01)] + [DataRow(CSTIPI.ipi02)] + [DataRow(CSTIPI.ipi03)] + [DataRow(CSTIPI.ipi04)] + [DataRow(CSTIPI.ipi05)] + [DataRow(CSTIPI.ipi51)] + [DataRow(CSTIPI.ipi52)] + [DataRow(CSTIPI.ipi53)] + [DataRow(CSTIPI.ipi54)] + [DataRow(CSTIPI.ipi55)] + public void ObterIPIBasico_IPINT_Teste(CSTIPI cst) + { + /** 1) Preparação **/ + var ipiGeral = new IPIGeral(); + PreenchePropriedades(ipiGeral, cst); + + /** 2) Execução **/ + var tagGerada = ipiGeral.ObterIPIBasico(); + + /** 2) Veerificação **/ + /** 2.1) Garante que o tipo da classe gerada foi correta**/ + Assert.IsInstanceOfType(tagGerada, typeof(IPINT)); + + /** 2.2) Garante que o conteúdo repassado para as propriedades estejam corretos **/ + var tagIPIGerada = (tagGerada as IPINT); + Assert.AreEqual(cst, tagIPIGerada.CST); + } + + } +} diff --git a/DFe.Testes/Impostos/PISGeral_Teste.cs b/DFe.Testes/Impostos/PISGeral_Teste.cs new file mode 100644 index 000000000..1bd6a8074 --- /dev/null +++ b/DFe.Testes/Impostos/PISGeral_Teste.cs @@ -0,0 +1,157 @@ +using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using NFe.Classes.Informacoes.Detalhe.Tributacao.Federal; +using NFe.Classes.Informacoes.Detalhe.Tributacao.Federal.Tipos; +using NFe.Utils.Tributacao.Federal; + +namespace DFe.Testes.Impostos +{ + [TestClass] + public class PISGeral_Teste + { + /// + /// Método auxiliar para preencher as propriedades do objeto a ser testado + /// + private void PreenchePropriedades( + PISGeral pisGeral, + CSTPIS cst, + object vBC = null, + object pPIS = null, + object vPIS = null, + object qBCProd = null, + object vAliqProd = null) + { + pisGeral.CST = cst; + if (vBC != null) pisGeral.vBC = Convert.ToDecimal(vBC); + if (pPIS != null) pisGeral.pPIS = Convert.ToDecimal(pPIS); + if (vPIS != null) pisGeral.vPIS = Convert.ToDecimal(vPIS); + if (qBCProd != null) pisGeral.qBCProd = Convert.ToDecimal(qBCProd); + if (vAliqProd != null) pisGeral.vAliqProd = Convert.ToDecimal(vAliqProd); + } + + [TestMethod] + [DataTestMethod] + [DataRow(CSTPIS.pis01, 1000, 1, 10)] + [DataRow(CSTPIS.pis02, 1000, 1, 10)] + public void ObterPISBasico_PISAliq_Teste(CSTPIS cst, object vBC, object pPIS, object vPIS) + { + /** 1) Preparação **/ + var pisGeral = new PISGeral(); + PreenchePropriedades(pisGeral, cst, vBC, pPIS, vPIS); + + /** 2) Execução **/ + var tagGerada = pisGeral.ObterPISBasico(); + + /** 2) Veerificação **/ + /** 2.1) Garante que o tipo da classe gerada foi correta**/ + Assert.IsInstanceOfType(tagGerada, typeof(PISAliq)); + + /** 2.2) Garante que o conteúdo repassado para as propriedades estejam corretos **/ + var tagPISGerada = (tagGerada as PISAliq); + Assert.AreEqual(cst, tagPISGerada.CST); + Assert.AreEqual(Convert.ToDecimal(vBC), tagPISGerada.vBC); + Assert.AreEqual(Convert.ToDecimal(pPIS), tagPISGerada.pPIS); + Assert.AreEqual(Convert.ToDecimal(vPIS), tagPISGerada.vPIS); + } + + + [TestMethod] + [DataTestMethod] + [DataRow(CSTPIS.pis03, 1000, 1, 10)] + public void ObterPISBasico_PISQtde_Teste(CSTPIS cst, object qBCProd, object vAliqProd, object vPIS) + { + /** 1) Preparação **/ + var pisGeral = new PISGeral(); + PreenchePropriedades(pisGeral, cst, null, null, vPIS, qBCProd, vAliqProd); + + /** 2) Execução **/ + var tagGerada = pisGeral.ObterPISBasico(); + + /** 2) Veerificação **/ + /** 2.1) Garante que o tipo da classe gerada foi correta**/ + Assert.IsInstanceOfType(tagGerada, typeof(PISQtde)); + + /** 2.2) Garante que o conteúdo repassado para as propriedades estejam corretos **/ + var tagPISGerada = (tagGerada as PISQtde); + Assert.AreEqual(cst, tagPISGerada.CST); + Assert.AreEqual(Convert.ToDecimal(qBCProd), tagPISGerada.qBCProd); + Assert.AreEqual(Convert.ToDecimal(vAliqProd), tagPISGerada.vAliqProd); + Assert.AreEqual(Convert.ToDecimal(vPIS), tagPISGerada.vPIS); + } + + [TestMethod] + [DataTestMethod] + [DataRow(CSTPIS.pis04)] + [DataRow(CSTPIS.pis05)] + [DataRow(CSTPIS.pis06)] + [DataRow(CSTPIS.pis07)] + [DataRow(CSTPIS.pis08)] + [DataRow(CSTPIS.pis09)] + public void ObterPISBasico_PISNT_Teste(CSTPIS cst) + { + /** 1) Preparação **/ + var pisGeral = new PISGeral(); + PreenchePropriedades(pisGeral, cst); + + /** 2) Execução **/ + var tagGerada = pisGeral.ObterPISBasico(); + + /** 2) Veerificação **/ + /** 2.1) Garante que o tipo da classe gerada foi correta**/ + Assert.IsInstanceOfType(tagGerada, typeof(PISNT)); + + /** 2.2) Garante que o conteúdo repassado para as propriedades estejam corretos **/ + var tagPISGerada = (tagGerada as PISNT); + Assert.AreEqual(cst, tagPISGerada.CST); + } + + [TestMethod] + [DataTestMethod] + [DataRow(CSTPIS.pis49, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis50, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis51, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis52, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis53, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis54, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis55, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis56, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis60, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis61, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis62, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis63, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis64, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis65, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis66, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis67, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis70, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis71, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis72, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis73, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis74, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis75, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis98, 1000, 1, 10, 1000, 1)] + [DataRow(CSTPIS.pis99, 1000, 1, 10, 1000, 1)] + public void ObterPISBasico_PISOutr_Teste(CSTPIS cst, object vBC, object pPIS, object vPIS, object qBCProd, object vAliqProd) + { + /** 1) Preparação **/ + var pisGeral = new PISGeral(); + PreenchePropriedades(pisGeral, cst, vBC, pPIS, vPIS, qBCProd, vAliqProd); + + /** 2) Execução **/ + var tagGerada = pisGeral.ObterPISBasico(); + + /** 2) Verificação **/ + /** 2.1) Garante que o tipo da classe gerada foi correta**/ + Assert.IsInstanceOfType(tagGerada, typeof(PISOutr)); + + /** 2.2) Garante que o conteúdo repassado para as propriedades estejam corretos **/ + var tagPISGerada = (tagGerada as PISOutr); + Assert.AreEqual(cst, tagPISGerada.CST); + Assert.AreEqual(Convert.ToDecimal(vBC), tagPISGerada.vBC); + Assert.AreEqual(Convert.ToDecimal(pPIS), tagPISGerada.pPIS); + Assert.AreEqual(Convert.ToDecimal(vPIS), tagPISGerada.vPIS); + Assert.AreEqual(Convert.ToDecimal(qBCProd), tagPISGerada.qBCProd); + Assert.AreEqual(Convert.ToDecimal(vAliqProd), tagPISGerada.vAliqProd); + } + } +} diff --git a/DFe.Testes/Utils/Assinatura/AssinaturaDigitalTesteUnitario.cs b/DFe.Testes/Utils/Assinatura/AssinaturaDigitalTesteUnitario.cs new file mode 100644 index 000000000..570b4bba6 --- /dev/null +++ b/DFe.Testes/Utils/Assinatura/AssinaturaDigitalTesteUnitario.cs @@ -0,0 +1,48 @@ +using System.Security.Cryptography; +using System.Text; +using DadosDeTestes.AssinaturaDigital; +using DFe.Utils.Assinatura; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace DFe.Testes.Utils.Assinatura; + +[TestClass] +public class AssinaturaDigitalTesteUnitario +{ + [TestMethod(displayName: "Dado dados para geração do hash sha1 bytes, quando obter hash sha1 bytes, então deve obter hash sha1 em bytes igual do SHA1CryptoServiceProvider.")] + [DynamicData(nameof(AssinaturaDigitalTesteDados.ObterDadosParaGeracaoDoHashSha1Bytes), typeof(AssinaturaDigitalTesteDados), DynamicDataSourceType.Method)] + public void DadoDadosParaGeracaoDoHashSha1BytesQuandoObterHashSha1BytesEntaoDeveObterHashSha1EmBytesIgualDoSha1CryptoServiceProvider(string dadosEmString) + { + // Arrange + var dadosEmBytes = Encoding.UTF8.GetBytes(dadosEmString); + var bytesEsperados = ObterHashSha1BytesUsandoSha1CryptoServiceProvider(dadosEmBytes); + + // Act + var bytesRetornado = AssinaturaDigital.ObterHashSha1Bytes(dadosEmBytes); + + // Assert + CollectionAssert.AreEqual(bytesEsperados, bytesRetornado); + } + + [TestMethod(displayName: "Dado dados para geração do hash sha1 bytes, quando obter hash sha1 bytes, então deve obter hash sha1 em bytes.")] + [DynamicData(nameof(AssinaturaDigitalTesteDados.ObterDadosParaGeracaoDoHashSha1BytesEValorEsperado), typeof(AssinaturaDigitalTesteDados), DynamicDataSourceType.Method)] + public void DadoDadosParaGeracaoDoHashSha1BytesQuandoObterHashSha1BytesEntaoDeveObterHashSha1EmBytes(string dadosEmString, byte[] bytesEsperados) + { + // Arrange + var dadosEmBytes = Encoding.UTF8.GetBytes(dadosEmString); + + // Act + var bytesRetornado = AssinaturaDigital.ObterHashSha1Bytes(dadosEmBytes); + + // Assert + CollectionAssert.AreEqual(bytesEsperados, bytesRetornado); + } + + private byte[] ObterHashSha1BytesUsandoSha1CryptoServiceProvider(byte[] dados) + { + var sha1 = new SHA1CryptoServiceProvider(); + var hashSha1Bytes = sha1.ComputeHash(dados); + + return hashSha1Bytes; + } +} \ No newline at end of file diff --git a/DFe.Testes/Valores/ValorTesteUnitario.cs b/DFe.Testes/Valores/ValorTesteUnitario.cs new file mode 100644 index 000000000..7faa587eb --- /dev/null +++ b/DFe.Testes/Valores/ValorTesteUnitario.cs @@ -0,0 +1,30 @@ +using DadosDeTestes; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Valor = DFe.Classes.Valor; + +namespace DFe.Testes.Valores +{ + [TestClass] + public class ValorTesteUnitario + { + // Normativa ABNT NBR5891 + [TestMethod(displayName: "Dado valor para arredondamento, quando o arredondar, então deve retornar o valor arredondado seguindo as normas da ABNT.")] + [DynamicData(nameof(ValorDadosDeTeste.ObterValoresParaArredondamentoSegundoNormativaAbnt), typeof(ValorDadosDeTeste), DynamicDataSourceType.Method)] + public void DadoValorParaArredondamentoQuandoArredondarEntaoDeveRetornarOValorArredondadoSeguindoAsNormasDaAbnt(decimal valor, decimal valorEsperado) + { + var casasDecimaisParaArredondamento = 2; + var valorArredondadoDfe = Valor.Arredondar(valor,casasDecimaisParaArredondamento); + + Assert.AreEqual(valorArredondadoDfe, valorEsperado); + } + + [TestMethod(displayName: "Dado valor para arredondamento nulo, quando o arredondar, então deve retornar nulo.")] + public void DadoValorParaArredondamentoQuandoArredondarEntaoOValorArredondadoDeveSeguirAsNormasDaAbnt() + { + var casasDecimaisParaArredondamento = 2; + var valorArredondadoDfe = Valor.Arredondar(null,casasDecimaisParaArredondamento); + + Assert.IsNull(valorArredondadoDfe); + } + } +} diff --git a/DFe.Utils/Assinatura/AssinaturaDigital.cs b/DFe.Utils/Assinatura/AssinaturaDigital.cs old mode 100755 new mode 100644 index c0aabd784..097acf2fb --- a/DFe.Utils/Assinatura/AssinaturaDigital.cs +++ b/DFe.Utils/Assinatura/AssinaturaDigital.cs @@ -31,25 +31,36 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System; +using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography.Xml; using System.Xml; +using Shared.DFe.Utils; using SignatureZeus = DFe.Classes.Assinatura.Signature; namespace DFe.Utils.Assinatura { public class AssinaturaDigital { - public static SignatureZeus Assina(T objeto, string id, X509Certificate2 certificado) where T : class + public static SignatureZeus Assina(T objeto, string id, X509Certificate2 certificado, + string signatureMethod = "http://www.w3.org/2000/09/xmldsig#rsa-sha1", + string digestMethod = "http://www.w3.org/2000/09/xmldsig#sha1", + bool cfgServicoRemoverAcentos = false) where T : class { var objetoLocal = objeto; if (id == null) throw new Exception("Não é possível assinar um objeto evento sem sua respectiva Id!"); - var documento = new XmlDocument { PreserveWhitespace = true }; - documento.LoadXml(FuncoesXml.ClasseParaXmlString(objetoLocal)); - var docXml = new SignedXml(documento) { SigningKey = certificado.PrivateKey }; - var reference = new Reference { Uri = "#" + id }; + var documento = new XmlDocument {PreserveWhitespace = true}; + + documento.LoadXml(cfgServicoRemoverAcentos + ? FuncoesXml.ClasseParaXmlString(objetoLocal).RemoverAcentos() + : FuncoesXml.ClasseParaXmlString(objetoLocal)); + + var docXml = new SignedXml(documento) {SigningKey = certificado.PrivateKey}; + + docXml.SignedInfo.SignatureMethod = signatureMethod; + var reference = new Reference {Uri = "#" + id, DigestMethod = digestMethod}; // adicionando EnvelopedSignatureTransform a referencia var envelopedSigntature = new XmlDsigEnvelopedSignatureTransform(); @@ -72,5 +83,51 @@ public static SignatureZeus Assina(T objeto, string id, X509Certificate2 cert var assinatura = FuncoesXml.XmlStringParaClasse(xmlDigitalSignature.OuterXml); return assinatura; } + + /// + /// Gera uma assinatura digital no formato PKCS1 utilizando o algoritmo RSA com SHA-1. + /// + /// Certificado digital com chave privada usada para assinar. + /// Dados a serem assinados em formato de array de bytes. + /// Assinatura digital como um array de bytes. + public static byte[] CriarAssinaturaPkcs1(X509Certificate2 certificado, byte[] valor) + { + var rsa = certificado.GetRSAPrivateKey(); + + var rsaFormatter = new RSAPKCS1SignatureFormatter(rsa); + rsaFormatter.SetHashAlgorithm("SHA1"); + + var hashSha1Bytes = ObterHashSha1Bytes(valor); + + var assinatura = rsaFormatter.CreateSignature(hashSha1Bytes); + + return assinatura; + } + + /// + /// Obtém o hash SHA-1 em formato byte array a partir de um array de bytes informado. + /// + public static byte[] ObterHashSha1Bytes(byte[] dados) + { + using (var sha1 = SHA1.Create()) + { + var sha1HashBytes = sha1.ComputeHash(dados); + + return sha1HashBytes; + } + } + + /// + /// Obtém a assinatura do certificado digital no formato PKCS#1, baseado em um array de bytes passado como Argumento [value]. + /// + /// + /// + /// + public static byte[] ObterAssinaturaPkcs1(ConfiguracaoCertificado configuracaoCertificado, byte[] value) + { + X509Certificate2 certificado = CertificadoDigital.ObterCertificado(configuracaoCertificado); + using (RSA rsa = certificado.GetRSAPrivateKey()) + return rsa.SignData(value, HashAlgorithmName.SHA1, RSASignaturePadding.Pkcs1); + } } } \ No newline at end of file diff --git a/DFe.Utils/Assinatura/CertificadoDigital.cs b/DFe.Utils/Assinatura/CertificadoDigital.cs old mode 100755 new mode 100644 index 13c1803f8..8104d944d --- a/DFe.Utils/Assinatura/CertificadoDigital.cs +++ b/DFe.Utils/Assinatura/CertificadoDigital.cs @@ -32,7 +32,7 @@ /********************************************************************************/ using System; -using System.Collections.Generic; +using System.Collections.Concurrent; using System.IO; using System.Runtime.InteropServices; using System.Security.Cryptography; @@ -43,7 +43,7 @@ namespace DFe.Utils.Assinatura { public static class CertificadoDigital { - private static readonly Dictionary CacheCertificado = new Dictionary(); + private static readonly ConcurrentDictionary CacheCertificado = new ConcurrentDictionary(); #region Métodos privados @@ -52,7 +52,7 @@ public static class CertificadoDigital /// /// /// - private static X509Store ObterX509Store(OpenFlags openFlags) + public static X509Store ObterX509Store(OpenFlags openFlags) { var store = new X509Store(StoreName.My, StoreLocation.CurrentUser); store.Open(openFlags); @@ -67,14 +67,14 @@ private static X509Store ObterX509Store(OpenFlags openFlags) /// Arquivo do certificado digital /// Senha do certificado digital /// - private static X509Certificate2 ObterDeArquivo(string arquivo, string senha) + private static X509Certificate2 ObterDeArquivo(string arquivo, string senha, X509KeyStorageFlags keyStorageFlag) { if (!File.Exists(arquivo)) { - throw new Exception(String.Format("Certificado digital {0} não encontrado!", arquivo)); + throw new Exception(string.Format("Certificado digital {0} não encontrado!", arquivo)); } - var certificado = new X509Certificate2(arquivo, senha, X509KeyStorageFlags.MachineKeySet); + var certificado = new X509Certificate2(arquivo, senha, keyStorageFlag); return certificado; } @@ -82,14 +82,14 @@ private static X509Certificate2 ObterDeArquivo(string arquivo, string senha) /// /// Obtém um certificado a partir do arquivo e da senha passados nos parâmetros /// - /// Arquivo do certificado digital + /// Array de bytes do certificado digital /// Senha do certificado digital /// - private static X509Certificate2 ObterDoArrayBytes(byte[] arrayBytes, string senha) + private static X509Certificate2 ObterDoArrayBytes(byte[] arrayBytes, string senha, X509KeyStorageFlags keyStorageFlag) { try { - var certificado = new X509Certificate2(arrayBytes, senha, X509KeyStorageFlags.MachineKeySet); + var certificado = new X509Certificate2(arrayBytes, senha, keyStorageFlag); return certificado; } catch (Exception ex) @@ -148,24 +148,34 @@ private static X509Certificate2 ObterDoRepositorioPassandoPin(string serial, str /// private static void DefinirPinParaChavePrivada(this X509Certificate2 certificado, string pin) { - if (certificado == null) throw new ArgumentNullException("certificado"); - var key = (RSACryptoServiceProvider)certificado.PrivateKey; - - var providerHandle = IntPtr.Zero; - var pinBuffer = Encoding.ASCII.GetBytes(pin); - - MetodosNativos.Executar(() => MetodosNativos.CryptAcquireContext(ref providerHandle, - key.CspKeyContainerInfo.KeyContainerName, - key.CspKeyContainerInfo.ProviderName, - key.CspKeyContainerInfo.ProviderType, - MetodosNativos.CryptContextFlags.Silent)); - MetodosNativos.Executar(() => MetodosNativos.CryptSetProvParam(providerHandle, - MetodosNativos.CryptParameter.KeyExchangePin, - pinBuffer, 0)); - MetodosNativos.Executar(() => MetodosNativos.CertSetCertificateContextProperty( - certificado.Handle, - MetodosNativos.CertificateProperty.CryptoProviderHandle, - 0, providerHandle)); + /// Suprimindo o aviso CA1416 para esta região de código específica +#pragma warning disable CA1416 + if (Environment.OSVersion.Platform == PlatformID.Win32NT || Environment.OSVersion.Platform == PlatformID.Win32Windows || Environment.OSVersion.Platform == PlatformID.Win32S) + { + if (certificado == null) throw new ArgumentNullException("certificado"); + var key = (RSACryptoServiceProvider)certificado.PrivateKey; + + var providerHandle = IntPtr.Zero; + var pinBuffer = Encoding.ASCII.GetBytes(pin); + + MetodosNativos.Executar(() => MetodosNativos.CryptAcquireContext(ref providerHandle, + key.CspKeyContainerInfo.KeyContainerName, + key.CspKeyContainerInfo.ProviderName, + key.CspKeyContainerInfo.ProviderType, + MetodosNativos.CryptContextFlags.Silent)); + MetodosNativos.Executar(() => MetodosNativos.CryptSetProvParam(providerHandle, + MetodosNativos.CryptParameter.KeyExchangePin, + pinBuffer, 0)); + MetodosNativos.Executar(() => MetodosNativos.CertSetCertificateContextProperty( + certificado.Handle, + MetodosNativos.CertificateProperty.CryptoProviderHandle, + 0, providerHandle)); + } + else + { + throw new NotSupportedException("Metodo DefinirPinParaChavePrivada com suporte apenas no Windows atualmente!"); + } +#pragma warning restore CA1416 } /// @@ -179,9 +189,9 @@ private static X509Certificate2 ObterDadosCertificado(ConfiguracaoCertificado co case TipoCertificado.A1Repositorio: return ObterDoRepositorio(configuracaoCertificado.Serial, OpenFlags.MaxAllowed); case TipoCertificado.A1ByteArray: - return ObterDoArrayBytes(configuracaoCertificado.ArrayBytesArquivo, configuracaoCertificado.Senha); + return ObterDoArrayBytes(configuracaoCertificado.ArrayBytesArquivo, configuracaoCertificado.Senha, configuracaoCertificado.KeyStorageFlags); case TipoCertificado.A1Arquivo: - return ObterDeArquivo(configuracaoCertificado.Arquivo, configuracaoCertificado.Senha); + return ObterDeArquivo(configuracaoCertificado.Arquivo, configuracaoCertificado.Senha, configuracaoCertificado.KeyStorageFlags); case TipoCertificado.A3: return ObterDoRepositorioPassandoPin(configuracaoCertificado.Serial, configuracaoCertificado.Senha); default: @@ -191,32 +201,11 @@ private static X509Certificate2 ObterDadosCertificado(ConfiguracaoCertificado co #endregion - /// - /// Exibe a lista de certificados instalados no PC e devolve o certificado selecionado - /// - /// - public static X509Certificate2 ListareObterDoRepositorio() - { - var store = ObterX509Store(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly); - var collection = store.Certificates; - var fcollection = collection.Find(X509FindType.FindByTimeValid, DateTime.Now, true); - var scollection = X509Certificate2UI.SelectFromCollection(fcollection, "Certificados válidos:", "Selecione o certificado que deseja usar", - X509SelectionFlag.SingleSelection); - - if (scollection.Count == 0) - { - throw new Exception("Nenhum certificado foi selecionado!"); - } - - store.Close(); - return scollection[0]; - } - /// /// Obtém um objeto contendo o certificado digital /// Se for informado , - /// o certificado digital será obtido pelo método , - /// senão será obtido pelo método + /// o certificado digital será obtido pelo método , + /// senão será obtido pelo método /// Para liberar os recursos do certificado, após seu uso, invoque o método /// public static X509Certificate2 ObterCertificado(ConfiguracaoCertificado configuracaoCertificado) @@ -224,23 +213,22 @@ public static X509Certificate2 ObterCertificado(ConfiguracaoCertificado configur if (!configuracaoCertificado.ManterDadosEmCache) return ObterDadosCertificado(configuracaoCertificado); - if (!string.IsNullOrEmpty(configuracaoCertificado.CacheId) && CacheCertificado.ContainsKey(configuracaoCertificado.CacheId)) - return CacheCertificado[configuracaoCertificado.CacheId]; + if (!string.IsNullOrWhiteSpace(configuracaoCertificado.CacheId) && CacheCertificado.TryGetValue(configuracaoCertificado.CacheId, out var certificadoEmCache)) + return certificadoEmCache; - X509Certificate2 certificado = ObterDadosCertificado(configuracaoCertificado); + var certificado = ObterDadosCertificado(configuracaoCertificado); - var keyCertificado = string.IsNullOrEmpty(configuracaoCertificado.CacheId) + var keyCertificado = string.IsNullOrWhiteSpace(configuracaoCertificado.CacheId) ? certificado.SerialNumber : configuracaoCertificado.CacheId; configuracaoCertificado.CacheId = keyCertificado; + + var certificadoDoCache = CacheCertificado.GetOrAdd(keyCertificado, certificado); - CacheCertificado.Add(keyCertificado, certificado); - - return CacheCertificado[keyCertificado]; + return certificadoDoCache; } - public static void ClearCache() { CacheCertificado.Clear(); @@ -317,6 +305,18 @@ public static void VerificaValidade(this X509Certificate2 x509Certificate2) } } + /// + /// Extensão para retornar o número de dias válidos do certificado + /// + /// + /// Número de dias válidos + public static int VerificaDiasValidade(this X509Certificate2 x509Certificate2) + { + DateTime dtExp = Convert.ToDateTime(x509Certificate2.GetExpirationDateString().Substring(0, 10)); + TimeSpan dt = dtExp.Subtract(DateTime.Today); + + return dt.Days; + } /// /// Extenção para certificado digital @@ -331,22 +331,33 @@ public static bool IsA3(this X509Certificate2 x509Certificate2) bool result = false; - try + /// Suprimindo o aviso CA1416 para esta região de código específica +#pragma warning disable CA1416 + if (Environment.OSVersion.Platform == PlatformID.Win32NT || Environment.OSVersion.Platform == PlatformID.Win32Windows || Environment.OSVersion.Platform == PlatformID.Win32S) { - RSACryptoServiceProvider service = x509Certificate2.PrivateKey as RSACryptoServiceProvider; - if (service != null) + try + { + RSACryptoServiceProvider service = x509Certificate2.PrivateKey as RSACryptoServiceProvider; + + if (service != null) + { + if (service.CspKeyContainerInfo.Removable && + service.CspKeyContainerInfo.HardwareDevice) + result = true; + } + } + catch { - if (service.CspKeyContainerInfo.Removable && - service.CspKeyContainerInfo.HardwareDevice) - result = true; + //assume que é false + result = false; } } - catch + else { - //assume que é false - result = false; + throw new NotSupportedException("Metodo IsA3 com suporte apenas no Windows atualmente!"); } +#pragma warning restore CA1416 return result; } diff --git a/DFe.Utils/CertificadoDigitalUtils.cs b/DFe.Utils/CertificadoDigitalUtils.cs new file mode 100644 index 000000000..178f71ea8 --- /dev/null +++ b/DFe.Utils/CertificadoDigitalUtils.cs @@ -0,0 +1,144 @@ +using System; +using System.Security.Cryptography.X509Certificates; +#if !(NETSTANDARD || NETCOREAPP) +using DFe.Utils.Assinatura; +#endif +using System.Security; +using System.IO; + +namespace DFe.Utils +{ + public class CertificadoDigitalUtils + { +#if !(NETSTANDARD || NETCOREAPP) + + /// + /// Exibe a lista de certificados instalados no PC e devolve o certificado selecionado + /// + /// + public static X509Certificate2 ListareObterDoRepositorio() + { + var store = CertificadoDigital.ObterX509Store(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly); + var collection = store.Certificates; + var fcollection = collection.Find(X509FindType.FindByTimeValid, DateTime.Now, true); + var scollection = X509Certificate2UI.SelectFromCollection(fcollection, "Certificados válidos:", "Selecione o certificado que deseja usar", + X509SelectionFlag.SingleSelection); + + if (scollection.Count == 0) + { + throw new Exception("Nenhum certificado foi selecionado!"); + } + + store.Close(); + return scollection[0]; + } +#endif + + /// + /// Retorna o certificado que está no caminho especificado + /// + /// Caminho do certificado (.pfx) + /// string representando a senha do certificado + public static X509Certificate2 ObterDoCaminho(string caminho, string password) + { + caminho = ArrumaCaminho(caminho); + SecureString stringSegura = null; + try + { + stringSegura = new SecureString(); + if ((password.Length > 0)) + { + foreach (Char caractere in password.ToCharArray()) + { + stringSegura.AppendChar(caractere); + } + } + return ObterDoCaminho(caminho, stringSegura); + } + catch + { + throw; + } + } + + /// + /// Retorna o certificado que está no caminho especificado + /// + /// Caminho do certificado (.pfx) + /// SecureString representando a senha do certificado + /// + public static X509Certificate2 ObterDoCaminho(string caminho, SecureString password) + { + caminho = ArrumaCaminho(caminho); + if (!caminho.ToLower().EndsWith(".pfx")) + { + throw new Exception("Caminho do certificado deve terminar com '.pfx'"); + } + + if (!File.Exists(caminho)) + { + throw new Exception("Certificado não se encontra no caminho especificado"); + } + + var cert = new X509Certificate2(caminho, password, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable); + return cert; + } + + /// + /// Retorna o certificado que está em bytes + /// + /// array de byte do certificado + /// string representando a senha do certificado + /// + public static X509Certificate2 ObterDosBytes(byte[] bytes, string password, X509KeyStorageFlags? keyStorageFlags) + { + SecureString stringSegura = null; + try + { + stringSegura = new SecureString(); + if ((password.Length > 0)) + { + foreach (Char caractere in password.ToCharArray()) + { + stringSegura.AppendChar(caractere); + } + } + + return ObterDosBytes(bytes, stringSegura, keyStorageFlags); + } + catch + { + throw; + } + } + + /// + /// Retorna o certificado que está em bytes + /// + /// array de byte do certificado + /// SecureString senha do certificado + /// + public static X509Certificate2 ObterDosBytes(byte[] bytes, SecureString password, X509KeyStorageFlags? keyStorageFlags) + { + var cert = new X509Certificate2(bytes, password, keyStorageFlags ?? (X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable)); + return cert; + } + + /// + /// Arruma o path caso tenha sido escrito incorretamente + /// + /// Caminho do arquivo + pastas + /// + private static string ArrumaCaminho(string caminho) + { + caminho = caminho.Replace(@"\\", @"\"); + caminho = caminho.Replace(@"//", @"/"); + caminho = caminho.Replace("\"", ""); //remove " + caminho = caminho.Replace("\'", ""); //remove ' + caminho = caminho.Replace(@"/", Path.DirectorySeparatorChar.ToString()); + caminho = caminho.Replace(@"\", Path.DirectorySeparatorChar.ToString()); + + return caminho; + } + } +} \ No newline at end of file diff --git a/DFe.Utils/ChaveFiscal.cs b/DFe.Utils/ChaveFiscal.cs index eb67f8f46..18a93fddf 100644 --- a/DFe.Utils/ChaveFiscal.cs +++ b/DFe.Utils/ChaveFiscal.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Text; using DFe.Classes.Entidades; @@ -54,18 +55,23 @@ public class ChaveFiscal /// Tipo de emissão do DF-e. Informar inteiro conforme consta no manual de orientação do contribuinte para o DF-e /// Código numérico que compõe a Chave de Acesso. Número gerado pelo emitente para cada DF-e /// Retorna um objeto com os dados da chave de acesso - public static DadosChaveFiscal ObterChave(Estado ufEmitente, DateTime dataEmissao, string cnpjEmitente, ModeloDocumento modelo, int serie, long numero, int tipoEmissao, int cNf) + public static DadosChaveFiscal ObterChave(Estado ufEmitente, DateTimeOffset dataEmissao, string cnpjEmitente, ModeloDocumento modelo, int serie, long numero, int tipoEmissao, int cNf) { var chave = new StringBuilder(); + if (cnpjEmitente.Length < 14) + { + cnpjEmitente = cnpjEmitente.PadLeft(14, '0'); + } + chave.Append(((int)ufEmitente).ToString("D2")) - .Append(Convert.ToDateTime(dataEmissao).ToString("yyMM")) - .Append(cnpjEmitente) - .Append(((int)modelo).ToString("D2")) - .Append(serie.ToString("D3")) - .Append(numero.ToString("D9")) - .Append(tipoEmissao.ToString()) - .Append(cNf.ToString("D8")); + .Append(dataEmissao.ToString("yyMM")) + .Append(cnpjEmitente) + .Append(((int)modelo).ToString("D2")) + .Append(serie.ToString("D3")) + .Append(numero.ToString("D9")) + .Append(tipoEmissao.ToString()) + .Append(cNf.ToString("D8")); var digitoVerificador = ObterDigitoVerificador(chave.ToString()); @@ -89,8 +95,8 @@ private static string ObterDigitoVerificador(string chave) //percorrendo cada caractere da chave da direita para esquerda para fazer os cálculos com o peso for (var i = chave.Length - 1; i != -1; i--) { - var ch = Convert.ToInt32(chave[i].ToString()); - soma += ch*peso; + var valorCaractere = ObterValorDoCaractere(chave[i]); + soma += valorCaractere * peso; //sempre que for 9 voltamos o peso a 2 if (peso < 9) peso += 1; @@ -109,6 +115,17 @@ private static string ObterDigitoVerificador(string chave) return dv.ToString(); } + /// + /// Obtem o valor de um caractere + /// + /// + /// + private static int ObterValorDoCaractere(char caractere) + { + const int zeroASCII = 48; + return caractere - zeroASCII; + } + /// /// Informa se a chave de um DF-e é válida /// diff --git a/DFe.Utils/ConfiguracaoCertificado.cs b/DFe.Utils/ConfiguracaoCertificado.cs index cd2b4cd3d..158e28bf5 100644 --- a/DFe.Utils/ConfiguracaoCertificado.cs +++ b/DFe.Utils/ConfiguracaoCertificado.cs @@ -33,23 +33,26 @@ using System; using System.ComponentModel; -using NFe.Utils.Annotations; +using System.Security.Cryptography.X509Certificates; namespace DFe.Utils { public enum TipoCertificado { [Description("Certificado A1")] - A1Repositorio, + A1Repositorio = 0, + [Description("Certificado A1 em arquivo")] - A1Arquivo, - [Description("Certificado A1 em byte array")] - A1ByteArray, + A1Arquivo = 1, + [Description("Certificado A3")] - A3 + A3 = 2, + + [Description("Certificado A1 em byte array")] + A1ByteArray = 3 } - public class ConfiguracaoCertificado : INotifyPropertyChanged + public class ConfiguracaoCertificado { private string _serial; private string _arquivo; @@ -57,6 +60,14 @@ public class ConfiguracaoCertificado : INotifyPropertyChanged private TipoCertificado _tipoCertificado; private string _cacheId; private byte[] _arrayBytesArquivo; + private X509KeyStorageFlags _keyStorageFlags; + + public ConfiguracaoCertificado() + { + KeyStorageFlags = X509KeyStorageFlags.MachineKeySet; + SignatureMethodSignedXml = "http://www.w3.org/2000/09/xmldsig#rsa-sha1"; + DigestMethodReference = "http://www.w3.org/2000/09/xmldsig#sha1"; + } /// /// Tipo de certificado a ser usado @@ -71,7 +82,6 @@ public TipoCertificado TipoCertificado Senha = null; ArrayBytesArquivo = null; _tipoCertificado = value; - OnPropertyChanged(this.ObterPropriedadeInfo(c => c.TipoCertificado).Name); } } @@ -90,7 +100,6 @@ public string Serial _serial = value; if (!string.IsNullOrEmpty(value)) Arquivo = null; - OnPropertyChanged(this.ObterPropriedadeInfo(c => c.Serial).Name); } } @@ -104,7 +113,6 @@ public byte[] ArrayBytesArquivo { if (value == _arrayBytesArquivo) return; _arrayBytesArquivo = value; - OnPropertyChanged(this.ObterPropriedadeInfo(c => c.ArrayBytesArquivo).Name); } } @@ -123,7 +131,6 @@ public string Arquivo _arquivo = value; if (!string.IsNullOrEmpty(value)) Serial = null; - OnPropertyChanged(this.ObterPropriedadeInfo(c => c.Arquivo).Name); } } @@ -141,7 +148,6 @@ public string Senha throw new Exception(string.Format("Para {0} o {1} não deve ser informada!", TipoCertificado.Descricao(), this.ObterPropriedadeInfo(c => c.Senha).Name)); if (value == _senha) return; _senha = value; - OnPropertyChanged(this.ObterPropriedadeInfo(c => c.Senha).Name); } } @@ -155,7 +161,6 @@ public string CacheId { if (value == _cacheId) return; _cacheId = value; - OnPropertyChanged("CacheId"); } } @@ -165,12 +170,30 @@ public string CacheId /// public bool ManterDadosEmCache { get; set; } - public event PropertyChangedEventHandler PropertyChanged; - [NotifyPropertyChangedInvocator] - protected virtual void OnPropertyChanged(string propertyName) + + /// + /// Algoritmo de Assinatura (Padrao: http://www.w3.org/2000/09/xmldsig#rsa-sha1) + /// + public string SignatureMethodSignedXml { get; set; } + + + /// + /// URI para DigestMethod na Classe Reference para auxiliar para a assinatura (Padrao: http://www.w3.org/2000/09/xmldsig#sha1) + /// + public string DigestMethodReference { get; set; } + + /// + /// + /// + public X509KeyStorageFlags KeyStorageFlags { - if (PropertyChanged != null) PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName)); + get { return _keyStorageFlags; } + set + { + if (value == _keyStorageFlags) return; + _keyStorageFlags = value; + } } } } diff --git a/DFe.Utils/DFe.Utils.csproj b/DFe.Utils/DFe.Utils.csproj old mode 100755 new mode 100644 index dcd541940..1c59a4fa6 --- a/DFe.Utils/DFe.Utils.csproj +++ b/DFe.Utils/DFe.Utils.csproj @@ -1,68 +1,16 @@ - - - - - Debug - AnyCPU - {B4E1A7A6-5D66-4326-8A8D-39338E6FC84C} - Library - Properties - DFe.Utils - DFe.Utils - v4.5 - 512 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - - - - - - - - - - - - - - - - - - - - {9984ec15-18e1-4a87-b4db-18ac913dc4e8} - DFe.Classes - - - - - \ No newline at end of file + + + + net462;netstandard2.0;net6.0 + + + + + + + + + + + + diff --git a/DFe.Utils/DFe.Utils.csproj.DotSettings b/DFe.Utils/DFe.Utils.csproj.DotSettings deleted file mode 100644 index 662f95686..000000000 --- a/DFe.Utils/DFe.Utils.csproj.DotSettings +++ /dev/null @@ -1,2 +0,0 @@ - - CSharp50 \ No newline at end of file diff --git a/DFe.Utils/DataHora.cs b/DFe.Utils/DataHora.cs index 5951d9546..7951ed586 100644 --- a/DFe.Utils/DataHora.cs +++ b/DFe.Utils/DataHora.cs @@ -36,6 +36,7 @@ namespace DFe.Utils { public static class DataHora { + /// /// Retorna uma string no formato AAAA-MM-DD /// @@ -46,6 +47,30 @@ public static string ParaDataString(this DateTime data) return data == DateTime.MinValue ? null : data.ToString("yyyy-MM-dd"); } + /// + /// Retorna uma string no formato AAAA-MM-DD + /// + /// + /// + public static string ParaDataString(this DateTime? data) + { + if (data == null) return null; + + return data == DateTime.MinValue ? null : data.Value.ToString("yyyy-MM-dd"); + } + + /// + /// Retorna uma string no formato AAAA-MM + /// + /// + /// + public static string ParaDataAnoEMesString(this DateTime? data) + { + if (data == null) return null; + + return data == DateTime.MinValue ? null : data.Value.ToString("yyyy-MM"); + } + /// /// Retorna uma string no formato AAAA-MM-DDThh:mm:ssTZD (UTC - Universal Coordinated Time) /// diff --git a/DFe.Utils/DataHoraOffSet.cs b/DFe.Utils/DataHoraOffSet.cs new file mode 100644 index 000000000..89aaa59c1 --- /dev/null +++ b/DFe.Utils/DataHoraOffSet.cs @@ -0,0 +1,111 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ +using System; + +namespace DFe.Utils +{ + public static class DataHoraOffSet + { + /// + /// Retorna uma string no formato AAAA-MM-DD + /// + /// + /// + public static string ParaDataString(this DateTimeOffset data) + { + return data == DateTimeOffset.MinValue ? null : data.ToString("yyyy-MM-dd"); + } + + /// + /// Retorna uma string no formato AAAA-MM-DD + /// + /// + /// + public static string ParaDataString(this DateTimeOffset? data) + { + if (data == null) return null; + + return data == DateTimeOffset.MinValue ? null : data.Value.ToString("yyyy-MM-dd"); + } + + /// + /// Retorna uma string no formato AAAA-MM-DDThh:mm:ssTZD (UTC - Universal Coordinated Time) + /// + /// + /// + public static string ParaDataHoraStringUtc(this DateTimeOffset data) + { + return data == DateTimeOffset.MinValue ? null : data.ToString("yyyy-MM-ddTHH:mm:sszzz"); + } + + /// + /// Retorna uma string no formato AAAA-MM-DDThh:mm:dd + /// + /// + /// + public static string ParaDataHoraStringSemUtc(this DateTimeOffset data) + { + return data == DateTimeOffset.MinValue ? null : data.ToString("yyyy-MM-ddTHH:mm:dd"); + } + + /// + /// Retorna uma string no formato AAAA-MM-DDThh:mm:dd + /// + /// + /// + public static string ParaDataHoraStringSemUtc(this DateTimeOffset? data) + { + return ParaDataHoraStringSemUtc(data.GetValueOrDefault()); + } + + /// + /// Retorna uma string no formato AAAA-MM-DDThh:mm:ssTZD (UTC - Universal Coordinated Time) + /// + /// + /// + public static string ParaDataHoraStringUtc(this DateTimeOffset? data) + { + return ParaDataHoraStringUtc(data.GetValueOrDefault()); + } + + /// + /// Retorna uma string no formato AAAA-MM-DD HH:mm:ss + /// + /// + /// + public static string ParaDataHoraString(this DateTimeOffset data) + { + return data.ToString("yyyyMMddHHmmss"); + } + } +} diff --git a/DFe.Utils/EnumExt.cs b/DFe.Utils/EnumExt.cs index d6f75077f..3fd3ddd7f 100644 --- a/DFe.Utils/EnumExt.cs +++ b/DFe.Utils/EnumExt.cs @@ -1,11 +1,11 @@ using System; using System.ComponentModel; +using System.Xml.Serialization; namespace DFe.Utils { public static class EnumExt { - /// /// Função de extensão de Enums. /// Obtém um atributo associado ao Enum. @@ -21,7 +21,6 @@ public static T ObterAtributo(this Enum value) where T : Attribute return (T)attributes[0]; } - /// /// Função de extensão de Enums. /// Obtém a descrição definida no atributo [Description("xx")] para o Enum @@ -34,5 +33,16 @@ public static string Descricao(this Enum value) return attribute == null ? value.ToString() : attribute.Description; } + /// + /// Função de extensão de Enums. + /// Obtém a XmlEnum definida no atributo [XmlEnum("xx")]para o Enum + /// + /// + /// + public static string XmlDescricao(this Enum value) + { + var attribute = value.ObterAtributo(); + return attribute == null ? value.ToString() : attribute.Name.ToString(); + } } } diff --git a/DFe.Utils/ExtXmlSerializerFactory.cs b/DFe.Utils/ExtXmlSerializerFactory.cs new file mode 100644 index 000000000..67ec93748 --- /dev/null +++ b/DFe.Utils/ExtXmlSerializerFactory.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Serialization; + +namespace DFe.Utils { + + public abstract class XmlOrderFreeSerializerFactory { + // Referência https://stackoverflow.com/a/33508815 + readonly static XmlAttributeOverrides overrides = new XmlAttributeOverrides(); + readonly static object locker = new object(); + readonly static Dictionary serializers = new Dictionary(); + static HashSet overridesAdded = new HashSet(); + + static void AddOverrideAttributes(Type type, XmlAttributeOverrides overrides) { + + if (type == null || type == typeof(object) || type.IsPrimitive || type == typeof(string) || type == typeof(DateTime)) { + return; + } + if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) { + AddOverrideAttributes(type.GetGenericArguments()[0], overrides); + return; + } + if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>)) { + AddOverrideAttributes(type.GetGenericArguments()[0], overrides); + return; + } + + var mask = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public; + foreach (var member in type.GetProperties(mask).Cast().Union(type.GetFields(mask))) { + var otTag = $"{type.Name}_{member.Name}"; + if (overridesAdded.Contains(otTag)) { + continue; + } + XmlAttributes overrideAttr = null; + foreach (var attr in member.GetCustomAttributes()) { + overrideAttr = overrideAttr ?? new XmlAttributes(); + var overrideElt = new XmlElementAttribute(attr.ElementName, attr.Type) { DataType = attr.DataType, ElementName = attr.ElementName, Form = attr.Form, Namespace = attr.Namespace, Type = attr.Type }; + if(attr.IsNullable) { + // Isso aqui deve ter uma logica personalizada no setter, colocar ali em cima causa erro + overrideElt.IsNullable = true; + } + overrideAttr.XmlElements.Add(overrideElt); + if(attr.Type != null) { + AddOverrideAttributes(attr.Type, overrides); + } + } + foreach (var attr in member.GetCustomAttributes()) { + overrideAttr = overrideAttr ?? new XmlAttributes(); + overrideAttr.XmlArray = new XmlArrayAttribute { ElementName = attr.ElementName, Form = attr.Form, IsNullable = attr.IsNullable, Namespace = attr.Namespace }; + } + foreach (var attr in member.GetCustomAttributes()) { + overrideAttr = overrideAttr ?? new XmlAttributes(); + overrideAttr.XmlArrayItems.Add(attr); + } + foreach (var attr in member.GetCustomAttributes()) { + overrideAttr = overrideAttr ?? new XmlAttributes(); + overrideAttr.XmlAnyElements.Add(new XmlAnyElementAttribute { Name = attr.Name, Namespace = attr.Namespace }); + } + if (overrideAttr != null) { + overridesAdded.Add(otTag); + overrides.Add(type, member.Name, overrideAttr); + } + var mType = (member is PropertyInfo pi ? pi.PropertyType : member is FieldInfo fi ? fi.FieldType : null); + AddOverrideAttributes(mType, overrides); + } + } + + public static XmlSerializer GetSerializer(Type type) { + if (type == null) + throw new ArgumentNullException("type"); + lock (locker) { + XmlSerializer serializer; + if (!serializers.TryGetValue(type, out serializer)) { + AddOverrideAttributes(type, overrides); + serializers[type] = serializer = new XmlSerializer(type, overrides); + } + return serializer; + } + } + + } + + public static class TypeExtensions { + public static IEnumerable BaseTypesAndSelf(this Type type) { + while (type != null) { + yield return type; + type = type.BaseType; + } + } + } +} diff --git a/DFe.Utils/FrxFileHelper.cs b/DFe.Utils/FrxFileHelper.cs new file mode 100644 index 000000000..131133c84 --- /dev/null +++ b/DFe.Utils/FrxFileHelper.cs @@ -0,0 +1,28 @@ +using System; +using System.IO; +using System.Reflection; + +namespace DFe.Utils +{ + public static class FrxFileHelper + { + public static byte[] TryGetFrxFile(string caminho) + { + try + { + if (!caminho.EndsWith(".frx")) + { + caminho += ".frx"; + } + + var path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? throw new InvalidOperationException("Erro no Zeus. Assembly de relatório nao encontrado"), caminho); + var bytes = File.ReadAllBytes(path); + return bytes.Length == 0 ? null : bytes; + } + catch (Exception) + { + return null; + } + } + } +} diff --git a/DFe.Utils/FuncoesXml.cs b/DFe.Utils/FuncoesXml.cs old mode 100755 new mode 100644 index 84963a73a..da5964da1 --- a/DFe.Utils/FuncoesXml.cs +++ b/DFe.Utils/FuncoesXml.cs @@ -1,4 +1,4 @@ -/********************************************************************************/ +/********************************************************************************/ /* Projeto: Biblioteca ZeusDFe */ /* Biblioteca C# para auxiliar no desenvolvimento das demais bibliotecas DFe */ /* */ @@ -32,6 +32,7 @@ /********************************************************************************/ using System; +using System.Collections; using System.IO; using System.Linq; using System.Text; @@ -42,6 +43,10 @@ namespace DFe.Utils { public static class FuncoesXml { + + // https://github.com/ZeusAutomacao/DFe.NET/issues/610 + private static readonly Hashtable CacheSerializers = new Hashtable(); + /// /// Serializa a classe passada para uma string no form /// @@ -51,7 +56,8 @@ public static class FuncoesXml public static string ClasseParaXmlString(T objeto) { XElement xml; - var ser = XmlSerializer.FromTypes(new[] { typeof(T) })[0]; + var keyNomeClasseEmUso = typeof(T).FullName; + var ser = BuscarNoCache(keyNomeClasseEmUso, typeof(T)); using (var memory = new MemoryStream()) { @@ -71,13 +77,21 @@ public static string ClasseParaXmlString(T objeto) /// /// /// + /// true caso o XML possa conter elementos fora de ordem /// - public static T XmlStringParaClasse(string input) where T : class + public static T XmlStringParaClasse(string input, bool ignorarOrdenacaoElementos = false) where T : class { - var ser = XmlSerializer.FromTypes(new[] { typeof(T) })[0]; + var keyNomeClasseEmUso = typeof(T).FullName; + + XmlSerializer serializador; + if(ignorarOrdenacaoElementos) { + serializador = XmlOrderFreeSerializerFactory.GetSerializer(typeof(T)); + } else { + serializador = BuscarNoCache(keyNomeClasseEmUso, typeof(T)); + } using (var sr = new StringReader(input)) - return (T) ser.Deserialize(sr); + return (T)serializador.Deserialize(sr); } /// @@ -87,18 +101,26 @@ public static T XmlStringParaClasse(string input) where T : class /// Classe /// Arquivo XML /// Retorna a classe - public static T ArquivoXmlParaClasse(string arquivo) where T : class + public static T ArquivoXmlParaClasse(string arquivo, bool ignorarOrdenacaoElementos = false) where T : class { if (!File.Exists(arquivo)) { throw new FileNotFoundException("Arquivo " + arquivo + " não encontrado!"); } - var serializador = XmlSerializer.FromTypes(new[] { typeof(T) })[0]; + var keyNomeClasseEmUso = typeof(T).FullName; + + XmlSerializer serializador; + if (ignorarOrdenacaoElementos) { + serializador = XmlOrderFreeSerializerFactory.GetSerializer(typeof(T)); + } else { + serializador = BuscarNoCache(keyNomeClasseEmUso, typeof(T)); + } + var stream = new FileStream(arquivo, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); try { - return (T) serializador.Deserialize(stream); + return (T)serializador.Deserialize(stream); } finally { @@ -185,8 +207,8 @@ public static string ObterNodeDeArquivoXml(string nomeDoNode, string arquivoXml) { var xmlDoc = XDocument.Load(arquivoXml); var xmlString = (from d in xmlDoc.Descendants() - where d.Name.LocalName == nomeDoNode - select d).FirstOrDefault(); + where d.Name.LocalName == nomeDoNode + select d).FirstOrDefault(); if (xmlString == null) throw new Exception(String.Format("Nenhum objeto {0} encontrado no arquivo {1}!", nomeDoNode, arquivoXml)); @@ -205,12 +227,38 @@ public static string ObterNodeDeStringXml(string nomeDoNode, string stringXml) var s = stringXml; var xmlDoc = XDocument.Parse(s); var xmlString = (from d in xmlDoc.Descendants() - where d.Name.LocalName == nomeDoNode - select d).FirstOrDefault(); + where d.Name.LocalName == nomeDoNode + select d).FirstOrDefault(); if (xmlString == null) throw new Exception(String.Format("Nenhum objeto {0} encontrado no xml!", nomeDoNode)); return xmlString.ToString(); } + + // https://github.com/ZeusAutomacao/DFe.NET/issues/610 + private static XmlSerializer BuscarNoCache(string chave, Type type) + { + //codigo performatico pois na maioria das vezes já vai estar no cache. + //https://github.com/ZeusAutomacao/DFe.NET/issues/1146 + if (CacheSerializers.Contains(chave)) + { + return (XmlSerializer)CacheSerializers[chave]; + } + + //lock por conta de ambientes de alta concorrência (lock no type pois se for type diferente pode ser outro lock separado que não vai prejudicar) + //https://github.com/ZeusAutomacao/DFe.NET/issues/1146 + lock (type) + { + if (CacheSerializers.Contains(chave)) + { + return (XmlSerializer)CacheSerializers[chave]; + } + + var ser = XmlSerializer.FromTypes(new[] { type })[0]; + CacheSerializers.Add(chave, ser); + + return ser; + } + } } } \ No newline at end of file diff --git a/DFe.Utils/Properties/AssemblyInfo.cs b/DFe.Utils/Properties/AssemblyInfo.cs deleted file mode 100755 index ce28f6839..000000000 --- a/DFe.Utils/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("DFe.Utils")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("DFe.Utils")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("b4e1a7a6-5d66-4326-8a8d-39338e6fc84c")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.0.0.7")] -[assembly: AssemblyFileVersion("0.0.0.7")] diff --git a/DFe.Utils/StringExtencoes.cs b/DFe.Utils/StringExtencoes.cs new file mode 100644 index 000000000..db3b56047 --- /dev/null +++ b/DFe.Utils/StringExtencoes.cs @@ -0,0 +1,43 @@ +using System; +using System.Text.RegularExpressions; + +namespace Shared.DFe.Utils +{ + public static class StringExtensoes + { + public static string RemoverAcentos(this string valor) + { + if (string.IsNullOrEmpty(valor)) + return valor; + + valor = Regex.Replace(valor, "[áàâãª]", "a"); + valor = Regex.Replace(valor, "[ÁÀÂÃÄ]", "A"); + valor = Regex.Replace(valor, "[éèêë]", "e"); + valor = Regex.Replace(valor, "[ÉÈÊË]", "E"); + valor = Regex.Replace(valor, "[íìîï]", "i"); + valor = Regex.Replace(valor, "[ÍÌÎÏ]", "I"); + valor = Regex.Replace(valor, "[óòôõöº]", "o"); + valor = Regex.Replace(valor, "[ÓÒÔÕÖ]", "O"); + valor = Regex.Replace(valor, "[úùûü]", "u"); + valor = Regex.Replace(valor, "[ÚÙÛÜ]", "U"); + valor = Regex.Replace(valor, "[Ç]", "C"); + valor = Regex.Replace(valor, "[ç]", "c"); + + return valor; + } + + public static string RemoverDeclaracaoXml(this string xml) + { + if (string.IsNullOrEmpty(xml)) + return xml; + + var posIni = xml.IndexOf("", StringComparison.Ordinal); + return posFinal < 0 ? xml : xml.Remove(posIni, (posFinal + 2) - posIni); + } + + } +} diff --git a/DFe.Utils/Utils/Compressao.cs b/DFe.Utils/Utils/Compressao.cs new file mode 100644 index 000000000..331fb0aa5 --- /dev/null +++ b/DFe.Utils/Utils/Compressao.cs @@ -0,0 +1,62 @@ +using System.IO; +using System.IO.Compression; +using System.Text; + +namespace DFe.Utils +{ + public static class Compressao + { + private static void CopiarPara(Stream src, Stream dest) + { + var bytes = new byte[4096]; + + int cnt; + + while ((cnt = src.Read(bytes, 0, bytes.Length)) != 0) + { + dest.Write(bytes, 0, cnt); + } + } + + /// + /// Compacta uma string para GZip + /// + /// + /// + public static byte[] Zip(string str) + { + var bytes = Encoding.UTF8.GetBytes(str); + + using (var msi = new MemoryStream(bytes)) + using (var mso = new MemoryStream()) + { + using (var gs = new GZipStream(mso, CompressionMode.Compress)) + { + CopiarPara(msi, gs); + } + + return mso.ToArray(); + } + } + + /// + /// Descompacta uma string GZip + /// + /// + /// + public static string Unzip(byte[] bytes) + { + using (var msi = new MemoryStream(bytes)) + using (var mso = new MemoryStream()) + { + using (var gs = new GZipStream(msi, CompressionMode.Decompress)) + { + CopiarPara(gs, mso); + } + + return Encoding.UTF8.GetString(mso.ToArray()); + } + } + + } +} diff --git a/DFe.Wsdl/Cabecalho/ITagCabecalho.cs b/DFe.Wsdl/Cabecalho/ITagCabecalho.cs new file mode 100644 index 000000000..7f39643ed --- /dev/null +++ b/DFe.Wsdl/Cabecalho/ITagCabecalho.cs @@ -0,0 +1,9 @@ +using DFe.Wsdl; + +namespace CTe.CTeOSDocumento.Wsdl.Cabecalho +{ + public interface ITagCabecalho + { + string GetTagCabecalho(DFeCabecalho dfeCabecalho); + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Cabecalho/NfeTagCabecalho.cs b/DFe.Wsdl/Cabecalho/NfeTagCabecalho.cs new file mode 100644 index 000000000..4de04ac7a --- /dev/null +++ b/DFe.Wsdl/Cabecalho/NfeTagCabecalho.cs @@ -0,0 +1,32 @@ +using System.Text; +using DFe.Classes.Extensoes; +using DFe.Wsdl; + +namespace CTe.CTeOSDocumento.Wsdl.Cabecalho +{ + public class NfeTagCabecalho : ITagCabecalho + { + public string GetTagCabecalho(DFeCabecalho dfeCabecalho) + { + StringBuilder env = new StringBuilder(); + + env.Append(""); + + env.Append(""); + env.Append(dfeCabecalho.CodigoUF.GetCodigoIbgeEmString()); + env.Append(""); + + env.Append(""); + env.Append(dfeCabecalho.VersaoServico.GetVersaoString()); + env.Append(""); + + env.Append(""); + + return env.ToString(); + } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Cabecalho/TagCabecalhoVazia.cs b/DFe.Wsdl/Cabecalho/TagCabecalhoVazia.cs new file mode 100644 index 000000000..ee1eda272 --- /dev/null +++ b/DFe.Wsdl/Cabecalho/TagCabecalhoVazia.cs @@ -0,0 +1,12 @@ +using DFe.Wsdl; + +namespace CTe.CTeOSDocumento.Wsdl.Cabecalho +{ + public class TagCabecalhoVazia : ITagCabecalho + { + public string GetTagCabecalho(DFeCabecalho dfeCabecalho) + { + return string.Empty; + } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Common/CommonResponseBody.cs b/DFe.Wsdl/Common/CommonResponseBody.cs new file mode 100644 index 000000000..f16a01dd5 --- /dev/null +++ b/DFe.Wsdl/Common/CommonResponseBody.cs @@ -0,0 +1,9 @@ +using System.Xml.Serialization; + +namespace CTe.CTeOSDocumento.Common +{ + [XmlRoot(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public abstract class CommonResponseBody + { + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Common/CommonResponseHead.cs b/DFe.Wsdl/Common/CommonResponseHead.cs new file mode 100644 index 000000000..80551e38a --- /dev/null +++ b/DFe.Wsdl/Common/CommonResponseHead.cs @@ -0,0 +1,9 @@ +using System.Xml.Serialization; + +namespace CTe.CTeOSDocumento.Common +{ + [XmlRoot(ElementName = "Header", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public abstract class CommonResponseHead + { + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Common/CommonSOAPEnvelope.cs b/DFe.Wsdl/Common/CommonSOAPEnvelope.cs new file mode 100644 index 000000000..232920fef --- /dev/null +++ b/DFe.Wsdl/Common/CommonSOAPEnvelope.cs @@ -0,0 +1,28 @@ +using System.Xml.Serialization; + +namespace CTe.CTeOSDocumento.Common +{ + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlType(Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class CommonSoapEnvelope + { + [XmlAttribute(AttributeName = "soap12", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public string soapenva { get; set; } + + [XmlAttribute(AttributeName = "xsi", Namespace = "http://www.w3.org/2001/XMLSchema-instance")] + public string xsi { get; set; } + + [XmlAttribute(AttributeName = "xsd", Namespace = "http://www.w3.org/2001/XMLSchema")] + public string xsd { get; set; } + + [XmlNamespaceDeclarations] + public XmlSerializerNamespaces xmlns = new XmlSerializerNamespaces(); + public CommonSoapEnvelope() + { + xmlns.Add("soap12", "http://www.w3.org/2003/05/soap-envelope"); + } + } + +} \ No newline at end of file diff --git a/DFe.Wsdl/Common/ConfiguracaoServicoWSDL.cs b/DFe.Wsdl/Common/ConfiguracaoServicoWSDL.cs new file mode 100644 index 000000000..5b192c3ea --- /dev/null +++ b/DFe.Wsdl/Common/ConfiguracaoServicoWSDL.cs @@ -0,0 +1,26 @@ +using System; + +namespace DFe.Wsdl.Common +{ + public static class ConfiguracaoServicoWSDL + { + public static bool ValidarCertificadoDoServidorNetCore { get; set; } + private static Func _requestSefazFactory; + + public static void SetRequestSefazFactory(Func factory) + { + _requestSefazFactory = factory; + } + + public static IRequestSefaz GetRequestSefaz() + { + return _requestSefazFactory(); + } + + static ConfiguracaoServicoWSDL() + { + ValidarCertificadoDoServidorNetCore = true; + SetRequestSefazFactory(() => new RequestSefazDefault()); + } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Common/IRequestSefaz.cs b/DFe.Wsdl/Common/IRequestSefaz.cs new file mode 100644 index 000000000..909b8eb7d --- /dev/null +++ b/DFe.Wsdl/Common/IRequestSefaz.cs @@ -0,0 +1,18 @@ +using System.Security.Cryptography.X509Certificates; +using System.Threading.Tasks; +using System.Xml; +using CTe.CTeOSDocumento.Common; + +namespace DFe.Wsdl.Common +{ + public interface IRequestSefaz + { + XmlDocument SerealizeDocument(T soapEnvelope); + + Task SendRequestAsync(XmlDocument xmlEnvelop, X509Certificate2 certificadoDigital, string url, + int timeOut, TipoEvento? tipoEvento = null, string actionUrn = ""); + + string SendRequest(XmlDocument xmlEnvelop, X509Certificate2 certificadoDigital, string url, int timeOut, + TipoEvento? tipoEvento = null, string actionUrn = ""); + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Common/RequestBuilderAndSender.cs b/DFe.Wsdl/Common/RequestBuilderAndSender.cs new file mode 100644 index 000000000..a723721cc --- /dev/null +++ b/DFe.Wsdl/Common/RequestBuilderAndSender.cs @@ -0,0 +1,79 @@ +using System.Threading.Tasks; +using System.Xml; +using CTe.CTeOSDocumento.Soap; + +namespace CTe.CTeOSDocumento.Common +{ + public static class RequestBuilderAndSender + { + + /// + /// Executa o carregamento, execução do soap e retorno do resultado + /// + /// + /// + /// + /// Especifico para CTe + /// + /// + public static async Task ExecuteAsync(TCommonSoapEnvelope soapEnvelope, + WsdlConfiguracao configuration, TipoEvento requestType, string responseElementName) where TCommonSoapEnvelope : CommonSoapEnvelope + { + SoapUtils soapUtils = new SoapUtils(); + XmlDocument xmlResult = new XmlDocument(); + + var xmlEnvelop = soapUtils.SerealizeDocument(soapEnvelope); + + string tes = await soapUtils.SendRequestAsync(xmlEnvelop, configuration.CertificadoDigital, configuration.Url, configuration.TimeOut, requestType); + xmlResult.LoadXml(tes); + + return xmlResult.GetElementsByTagName(responseElementName)[0]; + } + + /// + /// Executa o carregamento, execução do soap e retorno do resultado + /// + /// + /// + /// + /// Especifico para CTe + /// + /// + public static XmlNode Execute(TCommonSoapEnvelope soapEnvelope, + WsdlConfiguracao configuration, TipoEvento requestType, string responseElementName) where TCommonSoapEnvelope : CommonSoapEnvelope + { + SoapUtils soapUtils = new SoapUtils(); + XmlDocument xmlResult = new XmlDocument(); + + var xmlEnvelop = soapUtils.SerealizeDocument(soapEnvelope); + + string tes = soapUtils.SendRequest(xmlEnvelop, configuration.CertificadoDigital, configuration.Url, configuration.TimeOut, requestType); + xmlResult.LoadXml(tes); + + return xmlResult.GetElementsByTagName(responseElementName)[0]; + } + + /// + /// Executa o carregamento, execução do soap e retorno do resultado + /// + /// + /// + /// + /// + /// Qual é a action (urn) a ser executada, NÃO é a url do server do sefaz! A url esta dentro da configuração(configuration) + /// + public static XmlNode Execute(TCommonSoapEnvelope soapEnvelope, + WsdlConfiguracao configuration, string actionUrn, string responseElementName) where TCommonSoapEnvelope : CommonSoapEnvelope + { + SoapUtils soapUtils = new SoapUtils(); + XmlDocument xmlResult = new XmlDocument(); + + var xmlEnvelop = soapUtils.SerealizeDocument(soapEnvelope); + + string tes = soapUtils.SendRequest(xmlEnvelop, configuration.CertificadoDigital, configuration.Url, configuration.TimeOut, actionUrn: actionUrn); + xmlResult.LoadXml(tes); + + return xmlResult.SelectSingleNode($"//*[local-name()='{responseElementName}']"); + } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Common/RequestSefazDefault.cs b/DFe.Wsdl/Common/RequestSefazDefault.cs new file mode 100644 index 000000000..92d470983 --- /dev/null +++ b/DFe.Wsdl/Common/RequestSefazDefault.cs @@ -0,0 +1,143 @@ +using System; +using System.IO; +using System.Net; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; +using CTe.CTeOSDocumento.Soap; +using DFe.Http.Ext; + +namespace DFe.Wsdl.Common +{ + public class RequestSefazDefault : IRequestSefaz + { + /// + /// Serializa a estrutura do envelope contida no objeto para um XmlDocument. + /// + /// + /// + /// + public XmlDocument SerealizeDocument(T soapEnvelope) + { + // instancia do objeto responsável pela serialização + XmlSerializer soapserializer = new XmlSerializer(typeof(T)); + + // Armazena os dados em memória para manipulação + MemoryStream memoryStream = new MemoryStream(); + XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8); + + //Serializa o objeto de acordo com o formato + soapserializer.Serialize(xmlTextWriter, soapEnvelope); + xmlTextWriter.Formatting = Formatting.None; + + XmlDocument xmlDocument = new XmlDocument(); + + //Remove o caractere especial BOM (byte order mark) + string output = Encoding.UTF8.GetString(memoryStream.ToArray()); + string _byteOrderMarkUtf8 = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble()); + if (output.StartsWith(_byteOrderMarkUtf8)) + { + output = output.Remove(0, _byteOrderMarkUtf8.Length); + } + + //Carrega os dados na instancia do XmlDocument + xmlDocument.LoadXml(output); + + return xmlDocument; + } + + /// + /// Cria e envia a requisição HttpClient, retornando a resposta obtida do WebService. + /// + /// + /// + /// + /// + /// + /// + public async Task SendRequestAsync(XmlDocument xmlEnvelop, X509Certificate2 certificadoDigital, string url, int timeOut, TipoEvento? tipoEvento = null, string actionUrn = "") + { + //verifica se pelo menos uma das 2 propriedades obrigatorias estão definidas + if (!tipoEvento.HasValue && string.IsNullOrWhiteSpace(actionUrn)) + { + throw new ArgumentNullException("Pelo menos uma das propriedades tipoEvento ou actionUrl devem ser definidos para executar a action na requisição soap"); + } + + //caso o tipoevento esteja definido, pega a url do evento + if (tipoEvento.HasValue) + { + actionUrn = new SoapUrls().GetSoapUrl(tipoEvento.Value); + } + + string xmlSoap = xmlEnvelop.InnerXml; + HttpWebRequest httpWr = (HttpWebRequest)WebRequest.Create(new Uri(url)); + + if (ConfiguracaoServicoWSDL.ValidarCertificadoDoServidorNetCore == false) + { + httpWr.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true; + } + + httpWr.Timeout = timeOut == 0 ? 2000 : timeOut; + httpWr.ContentLength = Encoding.UTF8.GetBytes(xmlSoap).Length; + httpWr.ClientCertificates.Add(certificadoDigital); + httpWr.ComposeContentType("application/soap+xml", Encoding.UTF8, actionUrn); + httpWr.Method = "POST"; + + StreamWriter streamWriter = new StreamWriter(httpWr.GetRequestStream()); + + streamWriter.Write(xmlSoap, 0, Encoding.UTF8.GetBytes(xmlSoap).Length); + streamWriter.Close(); + + using (HttpWebResponse httpResponse = (HttpWebResponse)httpWr.GetResponse()) + using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) + { + string xmlRetorno = streamReader.ReadToEnd(); + return await Task.FromResult(xmlRetorno); + } + } + + public string SendRequest(XmlDocument xmlEnvelop, X509Certificate2 certificadoDigital, string url, int timeOut, TipoEvento? tipoEvento = null, string actionUrn = "") + { + //verifica se pelo menos uma das 2 propriedades obrigatorias estão definidas + if (!tipoEvento.HasValue && string.IsNullOrWhiteSpace(actionUrn)) + { + throw new ArgumentNullException("Pelo menos uma das propriedades tipoEvento ou actionUrl devem ser definidos para executar a action na requisição soap"); + } + + //caso o tipoevento esteja definido, pega a url do evento + if (tipoEvento.HasValue) + { + actionUrn = new SoapUrls().GetSoapUrl(tipoEvento.Value); + } + + string xmlSoap = xmlEnvelop.InnerXml; + HttpWebRequest httpWr = (HttpWebRequest)WebRequest.Create(new Uri(url)); + + if (ConfiguracaoServicoWSDL.ValidarCertificadoDoServidorNetCore == false) + { + httpWr.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true; + } + + httpWr.Timeout = timeOut == 0 ? 2000 : timeOut; + httpWr.ContentLength = Encoding.UTF8.GetBytes(xmlSoap).Length; + httpWr.ClientCertificates.Add(certificadoDigital); + httpWr.ComposeContentType("application/soap+xml", Encoding.UTF8, actionUrn); + httpWr.Method = "POST"; + + StreamWriter streamWriter = new StreamWriter(httpWr.GetRequestStream()); + + streamWriter.Write(xmlSoap, 0, Encoding.UTF8.GetBytes(xmlSoap).Length); + streamWriter.Close(); + + using (HttpWebResponse httpResponse = (HttpWebResponse)httpWr.GetResponse()) + using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) + { + string xmlRetorno = streamReader.ReadToEnd(); + return xmlRetorno; + } + } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Common/RequestSefazHttpClientHandler.cs b/DFe.Wsdl/Common/RequestSefazHttpClientHandler.cs new file mode 100644 index 000000000..1a84ad7d6 --- /dev/null +++ b/DFe.Wsdl/Common/RequestSefazHttpClientHandler.cs @@ -0,0 +1,127 @@ +using System; +using System.IO; +using System.Net; +using System.Net.Http; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; +using CTe.CTeOSDocumento.Soap; + +namespace DFe.Wsdl.Common +{ + public class RequestSefazHttpClientHandler : IRequestSefaz + { + public XmlDocument SerealizeDocument(T soapEnvelope) + { + // instancia do objeto responsável pela serialização + XmlSerializer soapserializer = new XmlSerializer(typeof(T)); + + // Armazena os dados em memória para manipulação + MemoryStream memoryStream = new MemoryStream(); + XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8); + + //Serializa o objeto de acordo com o formato + soapserializer.Serialize(xmlTextWriter, soapEnvelope); + xmlTextWriter.Formatting = Formatting.None; + + XmlDocument xmlDocument = new XmlDocument(); + + //Remove o caractere especial BOM (byte order mark) + string output = Encoding.UTF8.GetString(memoryStream.ToArray()); + string _byteOrderMarkUtf8 = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble()); + if (output.StartsWith(_byteOrderMarkUtf8)) + { + output = output.Remove(0, _byteOrderMarkUtf8.Length); + } + + //Carrega os dados na instancia do XmlDocument + xmlDocument.LoadXml(output); + + return xmlDocument; + } + + public async Task SendRequestAsync(XmlDocument xmlEnvelop, X509Certificate2 certificadoDigital, + string url, int timeOut, + TipoEvento? tipoEvento = null, string actionUrn = "") + { + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; + if (!tipoEvento.HasValue && string.IsNullOrWhiteSpace(actionUrn)) + { + throw new ArgumentNullException( + "Pelo menos uma das propriedades tipoEvento ou actionUrl devem ser definidos para executar a action na requisição soap"); + } + + if (tipoEvento.HasValue) + { + actionUrn = new SoapUrls().GetSoapUrl(tipoEvento.Value); + } + + string xmlSoap = xmlEnvelop.InnerXml; + + using (HttpClientHandler handler = new HttpClientHandler()) + { + handler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true; + handler.ClientCertificates.Add(certificadoDigital); + + using (HttpClient client = new HttpClient(handler)) + { + client.Timeout = TimeSpan.FromMilliseconds(timeOut == 0 ? 2000 : timeOut); + + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url); + request.Content = new StringContent(xmlSoap, Encoding.UTF8, "application/soap+xml"); + request.Headers.Add("SOAPAction", actionUrn); + + HttpResponseMessage response = await client.SendAsync(request); + + response.EnsureSuccessStatusCode(); + + return await response.Content.ReadAsStringAsync(); + } + } + + } + + public string SendRequest(XmlDocument xmlEnvelop, X509Certificate2 certificadoDigital, string url, int timeOut, + TipoEvento? tipoEvento = null, string actionUrn = "") + { + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; + if (!tipoEvento.HasValue && string.IsNullOrWhiteSpace(actionUrn)) + { + throw new ArgumentNullException( + "Pelo menos uma das propriedades tipoEvento ou actionUrl devem ser definidos para executar a action na requisição soap"); + } + + if (tipoEvento.HasValue) + { + actionUrn = new SoapUrls().GetSoapUrl(tipoEvento.Value); + } + + string xmlSoap = xmlEnvelop.InnerXml; + + using (HttpClientHandler handler = new HttpClientHandler()) + { + handler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true; + handler.ClientCertificates.Add(certificadoDigital); + + using (HttpClient client = new HttpClient(handler)) + { + client.Timeout = TimeSpan.FromMilliseconds(timeOut == 0 ? 2000 : timeOut); + + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url); + request.Content = new StringContent(xmlSoap, Encoding.UTF8, "application/soap+xml"); + request.Headers.Add("SOAPAction", actionUrn); + + HttpResponseMessage response = client.SendAsync(request).Result; + + response.EnsureSuccessStatusCode(); + + return response.Content.ReadAsStringAsync().Result; + } + } + + } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Common/SoapUrls.cs b/DFe.Wsdl/Common/SoapUrls.cs new file mode 100644 index 000000000..b18a093c3 --- /dev/null +++ b/DFe.Wsdl/Common/SoapUrls.cs @@ -0,0 +1,55 @@ +using System; +using CTe.CTeOSDocumento.Common; + +namespace CTe.CTeOSDocumento.Soap +{ + public class SoapUrls + { + public string GetSoapUrl(TipoEvento tipoEvento) + { + switch (tipoEvento) + { + case TipoEvento.CTeConsulta: + return "http://www.portalfiscal.inf.br/cte/wsdl/CteConsulta"; + case TipoEvento.CTeDistribuicaoDFe: + return "http://www.portalfiscal.inf.br/cte/wsdl/CTeDistribuicaoDFe/cteDistDFeInteresse"; + case TipoEvento.CTeRecepcaoEvento: + return "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcaoEvento"; + case TipoEvento.CTeRecepcaoEventoV4: + return "http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoEventoV4/cteRecepcaoEvento"; + case TipoEvento.CTeInutilizacao: + return "http://www.portalfiscal.inf.br/cte/wsdl/CteInutilizacao"; + case TipoEvento.CTeRecepcao: + return "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao"; + case TipoEvento.CTeRecepcaoV4: + return "http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoSincV4/cteRecepcao"; + case TipoEvento.CTeRetRecepcao: + return "http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao"; + case TipoEvento.CTeStatusServico: + return "http://www.portalfiscal.inf.br/cte/wsdl/CteStatusServico"; + case TipoEvento.CTeStatusServicoV4: + return "http://www.portalfiscal.inf.br/cte/wsdl/CTeStatusServicoV4/cteStatusServicoCT"; + case TipoEvento.MDFeStatusServico: + return "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeStatusServico"; + case TipoEvento.MDFeRecepcao: + return "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcao"; + case TipoEvento.MDFeRecepcaoSinc: + return "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcaoSinc"; + case TipoEvento.MDFeRetRecepcao: + return "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRetRecepcao"; + case TipoEvento.MDFeNaoEncerrado: + return "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsNaoEnc"; + case TipoEvento.MDFeConsulta: + return "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsulta"; + case TipoEvento.MDFeEvento: + return "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcaoEvento"; + case TipoEvento.CTeConsultaV4: + return "http://www.portalfiscal.inf.br/cte/wsdl/CTeConsultaV4/cteConsultaCT"; + case TipoEvento.CTeRecepcaoOSV4: + return "http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoOSV4/cteRecepcaoOS"; + default: + throw new ArgumentOutOfRangeException(nameof(tipoEvento), tipoEvento, null); + } + } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Common/SoapUtils.cs b/DFe.Wsdl/Common/SoapUtils.cs new file mode 100644 index 000000000..53e4360cd --- /dev/null +++ b/DFe.Wsdl/Common/SoapUtils.cs @@ -0,0 +1,59 @@ +using CTe.CTeOSDocumento.Common; +using DFe.Http.Ext; +using DFe.Wsdl.Common; +using System; +using System.IO; +using System.Net; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; + +namespace CTe.CTeOSDocumento.Soap +{ + /// + /// Classe utilitária resposável pela serialização das classes em um envelope do tipo + /// SOAP e envio das requisições para os respectivos Web Services. + /// + public class SoapUtils + { + private IRequestSefaz _requestSefaz; + + public SoapUtils() + { + _requestSefaz = ConfiguracaoServicoWSDL.GetRequestSefaz(); + } + + /// + /// Serializa a estrutura do envelope contida no objeto para um XmlDocument. + /// + /// + /// + /// + public XmlDocument SerealizeDocument(T soapEnvelope) + { + return _requestSefaz.SerealizeDocument(soapEnvelope); + } + + /// + /// Cria e envia a requisição HttpClient, retornando a resposta obtida do WebService. + /// + /// + /// + /// + /// + /// + /// + public async Task SendRequestAsync(XmlDocument xmlEnvelop, X509Certificate2 certificadoDigital, string url, int timeOut, TipoEvento? tipoEvento = null, string actionUrn = "") + { + return await _requestSefaz.SendRequestAsync(xmlEnvelop, certificadoDigital, url, timeOut, tipoEvento, actionUrn); + } + + public string SendRequest(XmlDocument xmlEnvelop, X509Certificate2 certificadoDigital, string url, int timeOut, TipoEvento? tipoEvento = null, string actionUrn = "") + { + return _requestSefaz.SendRequest(xmlEnvelop, certificadoDigital, url, timeOut, tipoEvento, actionUrn); + } + } + +} diff --git a/DFe.Wsdl/Common/TipoEvento.cs b/DFe.Wsdl/Common/TipoEvento.cs new file mode 100644 index 000000000..7fe85bc66 --- /dev/null +++ b/DFe.Wsdl/Common/TipoEvento.cs @@ -0,0 +1,29 @@ +namespace CTe.CTeOSDocumento.Common +{ + public enum TipoEvento + { + CTeConsulta, + + CTeDistribuicaoDFe, + CTeRecepcaoEvento, + CTeInutilizacao, + CTeRecepcao, + CTeRetRecepcao, + CTeStatusServico, + + MDFeStatusServico, + MDFeRecepcao, + MDFeRecepcaoSinc, + MDFeRetRecepcao, + MDFeNaoEncerrado, + MDFeConsulta, + MDFeEvento, + + CTeConsultaV4, + CTeRecepcaoV4, + CTeRecepcaoOSV4, + CTeStatusServicoV4, + CTeDistribuicaoDFeV4, + CTeRecepcaoEventoV4, + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Common/WsdlConfiguracao.cs b/DFe.Wsdl/Common/WsdlConfiguracao.cs new file mode 100644 index 000000000..5947f52cd --- /dev/null +++ b/DFe.Wsdl/Common/WsdlConfiguracao.cs @@ -0,0 +1,13 @@ +using System.Security.Cryptography.X509Certificates; + +namespace CTe.CTeOSDocumento.Common +{ + public class WsdlConfiguracao + { + public string Url { get; set; } + public string CodigoIbgeEstado { get; set; } + public string Versao { get; set; } + public X509Certificate2 CertificadoDigital { get; set; } + public int TimeOut { get; set; } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Common/cteCabecMsg.cs b/DFe.Wsdl/Common/cteCabecMsg.cs new file mode 100644 index 000000000..2ba9ac13b --- /dev/null +++ b/DFe.Wsdl/Common/cteCabecMsg.cs @@ -0,0 +1,25 @@ +namespace CTe.CTeOSDocumento.Common +{ + /// + /// Classe para os campos contidos no cabeçalho do Envelope SOAP + /// + public class cteCabecMsg + { + + private string cUFField; + private string versaoDadosField; + + public string cUF + { + get { return cUFField; } + set { cUFField = value; } + } + + public string versaoDados + { + get { return versaoDadosField; } + set { versaoDadosField = value; } + } + + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Common/mdfeCabMsg.cs b/DFe.Wsdl/Common/mdfeCabMsg.cs new file mode 100644 index 000000000..b0044b4f3 --- /dev/null +++ b/DFe.Wsdl/Common/mdfeCabMsg.cs @@ -0,0 +1,20 @@ +namespace DFe.Wsdl.Common +{ + public class mdfeCabMsg + { + private string cUFField; + private string versaoDadosField; + + public string cUF + { + get { return cUFField; } + set { cUFField = value; } + } + + public string versaoDados + { + get { return versaoDadosField; } + set { versaoDadosField = value; } + } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Common/mdfeCabecMsg.cs b/DFe.Wsdl/Common/mdfeCabecMsg.cs new file mode 100644 index 000000000..821cd6bd5 --- /dev/null +++ b/DFe.Wsdl/Common/mdfeCabecMsg.cs @@ -0,0 +1,20 @@ +namespace CTe.CTeOSDocumento.Common +{ + public class mdfeCabecMsg + { + private string cUFField; + private string versaoDadosField; + + public string cUF + { + get { return cUFField; } + set { cUFField = value; } + } + + public string versaoDados + { + get { return versaoDadosField; } + set { versaoDadosField = value; } + } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Corpo/ExtTagCorpoParametroEntrada.cs b/DFe.Wsdl/Corpo/ExtTagCorpoParametroEntrada.cs new file mode 100644 index 000000000..d6399c64d --- /dev/null +++ b/DFe.Wsdl/Corpo/ExtTagCorpoParametroEntrada.cs @@ -0,0 +1,47 @@ +using System; +using DFe.Classes.Entidades; + +namespace CTe.CTeOSDocumento.Wsdl.Corpo +{ + public static class ExtTagCorpoParametroEntrada + { + public static string GetParametroDeEntradaWsdl(this Estado estado, bool compactar) + { + switch (estado) + { + case Estado.AC: + case Estado.AL: + case Estado.AP: + case Estado.AM: + case Estado.BA: + case Estado.CE: + case Estado.DF: + case Estado.ES: + case Estado.MA: + case Estado.MT: + case Estado.MS: + case Estado.MG: + case Estado.PA: + case Estado.PB: + case Estado.PR: + case Estado.PE: + case Estado.PI: + case Estado.RJ: + case Estado.RN: + case Estado.RS: + case Estado.RO: + case Estado.RR: + case Estado.SC: + case Estado.SP: + case Estado.SE: + case Estado.TO: + case Estado.AN: + case Estado.EX: + case Estado.GO: + return compactar ? "nfeDadosMsgZip" : "nfeDadosMsg"; + default: + throw new ArgumentOutOfRangeException(nameof(estado), estado, null); + } + } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Corpo/ITagCorpo.cs b/DFe.Wsdl/Corpo/ITagCorpo.cs new file mode 100644 index 000000000..7f868f608 --- /dev/null +++ b/DFe.Wsdl/Corpo/ITagCorpo.cs @@ -0,0 +1,9 @@ +using DFe.Wsdl; + +namespace CTe.CTeOSDocumento.Wsdl.Corpo +{ + public interface ITagCorpo + { + string GetTagCorpo(DFeCorpo dfeCorpo); + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Corpo/NfeTagCorpo.cs b/DFe.Wsdl/Corpo/NfeTagCorpo.cs new file mode 100644 index 000000000..cfa59e1f7 --- /dev/null +++ b/DFe.Wsdl/Corpo/NfeTagCorpo.cs @@ -0,0 +1,32 @@ +using System.Text; +using DFe.Wsdl; + +namespace CTe.CTeOSDocumento.Wsdl.Corpo +{ + public class NfeTagCorpo : ITagCorpo + { + private readonly string _parametroEntrada; + + public NfeTagCorpo(string parametroEntrada) + { + _parametroEntrada = parametroEntrada; + } + + public string GetTagCorpo(DFeCorpo dfeCorpo) + { + StringBuilder env = new StringBuilder(); + + env.Append("<"); + env.Append(_parametroEntrada); + env.Append(" xmlns=\""); + env.Append(dfeCorpo.NamespaceBody); + env.Append("\">"); + env.Append(dfeCorpo.GetXml()); + env.Append(""); + + return env.ToString(); + } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/DFe.Wsdl.csproj b/DFe.Wsdl/DFe.Wsdl.csproj new file mode 100644 index 000000000..b45c81ef0 --- /dev/null +++ b/DFe.Wsdl/DFe.Wsdl.csproj @@ -0,0 +1,17 @@ + + + + net462;netstandard2.0;net6.0 + + + + + + + + + + + + + diff --git a/DFe.Wsdl/DFeCabecalho.cs b/DFe.Wsdl/DFeCabecalho.cs new file mode 100644 index 000000000..fb33c88e3 --- /dev/null +++ b/DFe.Wsdl/DFeCabecalho.cs @@ -0,0 +1,28 @@ +using DFe.Classes.Entidades; +using DFe.Classes.Flags; +using CTe.CTeOSDocumento.Wsdl.Cabecalho; + +namespace DFe.Wsdl +{ + public class DFeCabecalho + { + public DFeCabecalho(Estado codigoUF, VersaoServico versaoServico, ITagCabecalho tagCabecalho, string namespaceHeader) + { + CodigoUF = codigoUF; + VersaoServico = versaoServico; + NamespaceHeader = namespaceHeader; + TagCabecalho = tagCabecalho; + } + + public string NamespaceHeader { get; } + public Estado CodigoUF { get; } + public VersaoServico VersaoServico { get; } + public ITagCabecalho TagCabecalho { get; } + + public string GetXmlHeader() + { + return TagCabecalho.GetTagCabecalho(this); + } + + } +} \ No newline at end of file diff --git a/DFe.Wsdl/DFeCorpo.cs b/DFe.Wsdl/DFeCorpo.cs new file mode 100644 index 000000000..5e6757e05 --- /dev/null +++ b/DFe.Wsdl/DFeCorpo.cs @@ -0,0 +1,43 @@ +using System; +using System.Text; +using System.Xml; +using CTe.CTeOSDocumento.Wsdl.Corpo; +using DFe.Utils; + +namespace DFe.Wsdl +{ + public class DFeCorpo + { + public DFeCorpo(string namespaceBody, ITagCorpo tagCorpo) + { + NamespaceBody = namespaceBody; + TagCorpo = tagCorpo; + } + + public XmlNode Xml { get; set; } + public bool XmlZip { get; set; } + + public string NamespaceBody { get; set; } + + public ITagCorpo TagCorpo { get; set; } + + public string GetXmlBody() + { + return TagCorpo.GetTagCorpo(this); + } + + public string GetXml() + { + var xmlDelcaration = ""; + + var xmlEnvio = XmlZip == false ? Xml.LastChild.OuterXml : CompactarXml(xmlDelcaration); + + return xmlEnvio; + } + + private string CompactarXml(string xmlDelcaration) + { + return Convert.ToBase64String(Compressao.Zip(new StringBuilder(xmlDelcaration).Append(Xml.LastChild.OuterXml).ToString())); + } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/DFeSoapConfig.cs b/DFe.Wsdl/DFeSoapConfig.cs new file mode 100644 index 000000000..33c808847 --- /dev/null +++ b/DFe.Wsdl/DFeSoapConfig.cs @@ -0,0 +1,22 @@ +using System.Security.Cryptography.X509Certificates; +using System.Xml; +using CTe.CTeOSDocumento.Wsdl.Corpo; +using DFe.Wsdl; + +namespace CTe.CTeOSDocumento.Wsdl +{ + public class DFeSoapConfig + { + public DFeCabecalho DFeCabecalho { get; set; } + + public DFeCorpo DFeCorpo { get; set; } + + public string Url { get; set; } + + public int TimeOut { get; set; } + + public string Metodo { get; set; } + + public X509Certificate2 Certificado { get; set; } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/DFeSoapHttpClientProtocol.cs b/DFe.Wsdl/DFeSoapHttpClientProtocol.cs new file mode 100644 index 000000000..0ee4c0e2b --- /dev/null +++ b/DFe.Wsdl/DFeSoapHttpClientProtocol.cs @@ -0,0 +1,23 @@ +using System.Xml; +using CTe.CTeOSDocumento.Wsdl; +using DFe.Http; + +namespace DFe.Wsdl +{ + public abstract class DFeSoapHttpClientProtocol + { + protected string Invoke(DFeSoapConfig soapConfig) + { + return RequestWS.EnviaSefaz(soapConfig); + } + + protected virtual string GetTagConverter(string ret, string tag) + { + XmlDocument doc = new XmlDocument(); + doc.Load(new System.IO.StringReader(ret)); + XmlNodeList xmlList = doc.GetElementsByTagName(tag); + var xmlConverter = xmlList[0].OuterXml; + return xmlConverter; + } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Http/Envelope.cs b/DFe.Wsdl/Http/Envelope.cs new file mode 100644 index 000000000..3a664d12c --- /dev/null +++ b/DFe.Wsdl/Http/Envelope.cs @@ -0,0 +1,34 @@ +using System.Text; +using CTe.CTeOSDocumento.Wsdl; + +namespace DFe.Http +{ + public class Envelope + { + public static string Construir(DFeSoapConfig soapConfig) + { + StringBuilder env = new StringBuilder(""); + + + env.Append(""); + + // cabecalho + env.Append(""); + env.Append(soapConfig.DFeCabecalho.GetXmlHeader()); + env.Append(""); + + + // corpo + env.Append(""); + env.Append(soapConfig.DFeCorpo.GetXmlBody()); + env.Append(""); + + + env.Append(""); + + return env.ToString(); + } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Http/Ext/ExtHttpWebRequest.cs b/DFe.Wsdl/Http/Ext/ExtHttpWebRequest.cs new file mode 100644 index 000000000..f0b11bef8 --- /dev/null +++ b/DFe.Wsdl/Http/Ext/ExtHttpWebRequest.cs @@ -0,0 +1,31 @@ +using System.Net; +using System.Text; + +namespace DFe.Http.Ext +{ + public static class ExtHttpWebRequest + { + public static void ComposeContentType(this HttpWebRequest http, string contentType, Encoding encoding, string action) + { + if (encoding == null && action == null) + http.ContentType = contentType; + + StringBuilder stringBuilder = new StringBuilder(contentType); + + if (encoding != null) + { + stringBuilder.Append("; charset="); + stringBuilder.Append(encoding.WebName); + } + + if (action != null) + { + stringBuilder.Append("; action=\""); + stringBuilder.Append(action); + stringBuilder.Append("\""); + } + + http.ContentType = stringBuilder.ToString(); + } + } +} \ No newline at end of file diff --git a/DFe.Wsdl/Http/RequestWS.cs b/DFe.Wsdl/Http/RequestWS.cs new file mode 100644 index 000000000..2f5cedc72 --- /dev/null +++ b/DFe.Wsdl/Http/RequestWS.cs @@ -0,0 +1,45 @@ +using System; +using System.IO; +using System.Net; +using System.Text; +using CTe.CTeOSDocumento.Wsdl; +using DFe.Http.Ext; + +namespace DFe.Http +{ + public class RequestWS + { + public static string EnviaSefaz(DFeSoapConfig soapConfig) + { + string XMLRetorno = string.Empty; + string xmlSoap = Envelope.Construir(soapConfig); + + Uri uri = new Uri(soapConfig.Url); + + WebRequest webRequest = WebRequest.Create(uri); + HttpWebRequest httpWR = (HttpWebRequest)webRequest; + httpWR.Timeout = soapConfig.TimeOut == 0 ? 2000 : soapConfig.TimeOut; + + httpWR.ContentLength = Encoding.UTF8.GetBytes(xmlSoap).Length; + + httpWR.ClientCertificates.Add(soapConfig.Certificado); + + httpWR.ComposeContentType("application/soap+xml", Encoding.UTF8, soapConfig.Metodo); + + httpWR.Method = "POST"; + + Stream reqStream = httpWR.GetRequestStream(); + StreamWriter streamWriter = new StreamWriter(reqStream); + streamWriter.Write(xmlSoap); + streamWriter.Close(); + + WebResponse webResponse = httpWR.GetResponse(); + Stream respStream = webResponse.GetResponseStream(); + StreamReader streamReader = new StreamReader(respStream); + + XMLRetorno = streamReader.ReadToEnd(); + + return XMLRetorno; + } + } +} \ No newline at end of file diff --git a/DadosDeTestes/AssinaturaDigital/AssinaturaDigitalDadosDeTeste.cs b/DadosDeTestes/AssinaturaDigital/AssinaturaDigitalDadosDeTeste.cs new file mode 100644 index 000000000..c34c52976 --- /dev/null +++ b/DadosDeTestes/AssinaturaDigital/AssinaturaDigitalDadosDeTeste.cs @@ -0,0 +1,28 @@ +using System.Security.Cryptography; + +namespace DadosDeTestes.AssinaturaDigital; + +public class AssinaturaDigitalTesteDados +{ + public static IEnumerable ObterDadosParaGeracaoDoHashSha1Bytes() + { + return new List + { + new object[] { "92037465012398765432100011223344556677889900|2|1|F1A9B237CD8800FFE234A9912B674CFA1" }, + new object[] { "87122345099887766554433221100009988776655443" }, + new object[] { "73456789101112131415161718192021222324252627" }, + new object[] { "65829374618273645564738291028374618273645564" } + }; + } + + public static IEnumerable ObterDadosParaGeracaoDoHashSha1BytesEValorEsperado() + { + return new List + { + new object[] { "92037465012398765432100011223344556677889900|2|1|F1A9B237CD8800FFE234A9912B674CFA1", new byte[] { 128, 55, 179, 49, 198, 97, 206, 43, 246, 208, 112, 183, 231, 3, 23, 105, 114, 184, 33, 153 }}, + new object[] { "87122345099887766554433221100009988776655443", new byte[] { 151, 153, 16, 228, 170, 100, 76, 248, 192, 58, 160, 126, 157, 224, 171, 233, 75, 23, 118, 67 }}, + new object[] { "73456789101112131415161718192021222324252627", new byte[] { 71, 100, 124, 212, 171, 46, 181, 47, 206, 96, 227, 230, 215, 8, 14, 131, 167, 214, 99, 181 }}, + new object[] { "65829374618273645564738291028374618273645564", new byte[] { 147, 88, 158, 178, 38, 247, 111, 70, 151, 152, 182, 14, 69, 18, 129, 97, 157, 47, 222, 50 }} + }; + } +} \ No newline at end of file diff --git a/DadosDeTestes/DadosDeTestes.csproj b/DadosDeTestes/DadosDeTestes.csproj new file mode 100644 index 000000000..eb2460e91 --- /dev/null +++ b/DadosDeTestes/DadosDeTestes.csproj @@ -0,0 +1,9 @@ + + + + net6.0 + enable + enable + + + diff --git a/DadosDeTestes/NFe/Utils/ConversaoDadosDeTeste.cs b/DadosDeTestes/NFe/Utils/ConversaoDadosDeTeste.cs new file mode 100644 index 000000000..1978358b1 --- /dev/null +++ b/DadosDeTestes/NFe/Utils/ConversaoDadosDeTeste.cs @@ -0,0 +1,15 @@ +namespace DadosDeTestes.NFe.Utils; + +public class ConversaoDadosDeTeste +{ + public static IEnumerable ObterDadosParaGerarHashSha1DeStringEValorEsperado() + { + return new List + { + new object[] { "92037465012398765432100011223344556677889900|2|1|F1A9B237CD8800FFE234A9912B674CFA1", "8037b331c661ce2bf6d070b7e703176972b82199" }, + new object[] { "87122345099887766554433221100009988776655443|1|2|9CFD3321AAC4900BDEAFA1105BC088119", "5994d3d62ca107c89677e7bede2f1e6a9371d9da" }, + new object[] { "73456789101112131415161718192021222324252627|2|2|A7C44B8D56E9002FAB1133DCE5AA784C3", "ebbb014e73ff18fec652350da4a24907fad21297" }, + new object[] { "65829374618273645564738291028374618273645564|1|1|B21C9D77E04A00BBF5C21EA39988D10AA", "19f80bbd273e606d206880f79ea56a671b263586" } + }; + } +} \ No newline at end of file diff --git a/DadosDeTestes/ValorDadosDeTeste.cs b/DadosDeTestes/ValorDadosDeTeste.cs new file mode 100644 index 000000000..48ae11b40 --- /dev/null +++ b/DadosDeTestes/ValorDadosDeTeste.cs @@ -0,0 +1,54 @@ +namespace DadosDeTestes +{ + public class ValorDadosDeTeste + { + public static IEnumerable ObterValoresDecimaisParaArredondar() + { + return new List + { + new object[] { 20.35m * 15.90m, 2 }, + new object[] { 0.35m * 15.90m, 2 }, + new object[] { 3.665m, 2 }, + new object[] { 4.775m, 2 }, + + new object[] { 20.35m * 15.90m, 3 }, + new object[] { 0.35m * 15.90m, 3 }, + new object[] { 4.77575m, 4 }, + new object[] { 5.445545m, 5 } + }; + } + + public static IEnumerable ObterValoresParaArredondamentoSegundoNormativaAbnt() + { + return new List + { + new object[] { 0.342m, 0.34m }, + new object[] { 0.346m, 0.35m }, + new object[] { 0.3452m, 0.35m }, + new object[] { 0.3450m, 0.34m }, + new object[] { 0.332m, 0.33m }, + new object[] { 0.336m, 0.34m }, + new object[] { 0.3352m, 0.34m }, + new object[] { 0.3350m, 0.34m }, + new object[] { 0.3050m, 0.30m }, + new object[] { 0.3150m, 0.32m } + }; + } + + public static IEnumerable ObterValoresParaArredondamentoParaBaixo() + { + return new List + { + new object[] { 123.4567m, 2, 123.45m }, + new object[] { 123.4599m, 2, 123.45m }, + new object[] { 123.451m, 2, 123.45m }, + new object[] { 123.4001m, 3, 123.400m }, + new object[] { 123.0009m, 3, 123.000m }, + new object[] { 123.0m, 2, 123.00m }, + new object[] { 0.9999m, 3, 0.999m }, + new object[] { 0m, 2, 0.00m }, + new object[] { 987.654m, 0, 987m } + }; + } + } +} diff --git a/Dev.VersaoAssemblies/Dev.VersaoAssemblies.csproj b/Dev.VersaoAssemblies/Dev.VersaoAssemblies.csproj new file mode 100644 index 000000000..b22bdb04a --- /dev/null +++ b/Dev.VersaoAssemblies/Dev.VersaoAssemblies.csproj @@ -0,0 +1,79 @@ + + + + + Debug + AnyCPU + {35429D4D-65DF-47F5-93BE-BFBF35FBBF3B} + Exe + Properties + Dev.VersaoAssemblies + Dev.VersaoAssemblies + v4.8 + 512 + + + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + prompt + MinimumRecommendedRules.ruleset + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + prompt + MinimumRecommendedRules.ruleset + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CTe.Classes/CTe.Classes.csproj.DotSettings b/Dev.VersaoAssemblies/Dev.VersaoAssemblies.csproj.DotSettings similarity index 100% rename from CTe.Classes/CTe.Classes.csproj.DotSettings rename to Dev.VersaoAssemblies/Dev.VersaoAssemblies.csproj.DotSettings diff --git a/Dev.VersaoAssemblies/ProgramMain.cs b/Dev.VersaoAssemblies/ProgramMain.cs new file mode 100644 index 000000000..2aa1df619 --- /dev/null +++ b/Dev.VersaoAssemblies/ProgramMain.cs @@ -0,0 +1,105 @@ +using System; +using System.IO; +using System.Text.RegularExpressions; + +namespace Dev.VersaoAssemblies +{ + internal static class ProgramMain + { + private static string _diretorioRoot; + private static string _versaoAtual; + + private static void Main(string[] args) + { + try + { + CarregarDiretorioProjeto(); + CarregarVersaoAtual(); + + Console.WriteLine("Olá, sou seu assitente para alteração de versão em massa"); + Console.WriteLine("Para continuar preciso que informe qual versão deseja utilizar. Vamos la?"); + Console.WriteLine("Versão atual do projeto é: " + _versaoAtual); + Console.Write("Então qual versão quer utilizar? (informe a versãoe aperter ENTER):"); + var versaoString = Console.ReadLine(); + + FazerAlteracaoDasVersoes(versaoString); + } + catch (Exception ex) + { + Console.WriteLine("Erro: " + ex.Message); + } + finally + { + Console.ReadKey(); + } + } + + private static void CarregarVersaoAtual() + { + var assemblyFile = Path.Combine(_diretorioRoot, "Dev.VersaoAssemblies", "Properties", "AssemblyInfo.cs"); + var regex = new Regex("assembly: AssemblyVersion.+\\)", RegexOptions.IgnoreCase); + + var match = regex.Match(File.ReadAllText(assemblyFile)); + + if (string.IsNullOrWhiteSpace(match.Value)) + { + throw new InvalidOperationException("Não foi possível verificar a versão atual do arquivo: " + assemblyFile); + } + + _versaoAtual = match.Value.Replace("assembly: AssemblyVersion", ""); + } + + private static void CarregarDiretorioProjeto() + { + _diretorioRoot = Environment.GetEnvironmentVariable("PROJETO_ZEUS_DFE") ?? string.Empty; + + if (!File.Exists(Path.Combine(_diretorioRoot, "Zeus NFe.sln"))) + { + throw new InvalidOperationException( + "Acho que você não está com a variavel de ambiente PROJETO_ZEUS_DFE configurada"); + + } + } + + private static void FazerAlteracaoDasVersoes(string versaoString) + { + var diretorios = Directory.GetDirectories(_diretorioRoot); + + foreach (var diretorio in diretorios) + { + var infoFile = Path.Combine(diretorio, "Properties", "AssemblyInfo.cs"); + + if (!File.Exists(infoFile)) + { + continue; + } + + var regexValidarVersao = new Regex(@"^[0-9]\.[0-9]{1,2}\.0\.[0-9]{1,4}$"); + + if (!regexValidarVersao.IsMatch(versaoString)) + { + throw new InvalidOperationException( + "Opa, você não informou uma versão que eu esperava. Preciso de algo assim: X.X.0.XX?"); + } + + AlterarVersaoDoAssembly(infoFile, versaoString); + Console.WriteLine("Alterado versão no AssemblyInfo: " + infoFile); + } + + Console.WriteLine("Pronto terminei. Pode apertar qualquer tecla para fechar!"); + } + + private static void AlterarVersaoDoAssembly(string infoFile, string versaoString) + { + var content = File.ReadAllText(infoFile); + + var regexVersion = new Regex("assembly: AssemblyVersion.+\\)", RegexOptions.IgnoreCase); + var regexFileVersion = new Regex("assembly: AssemblyFileVersion.+\\)", RegexOptions.IgnoreCase); + + var novoContent = regexVersion.Replace(content, "assembly: AssemblyVersion(\"" + versaoString + "\")"); + var contentFinal = regexFileVersion.Replace(novoContent, "assembly: AssemblyFileVersion(\"" + versaoString + "\")"); + + File.WriteAllText(infoFile, contentFinal); + } + } +} \ No newline at end of file diff --git a/Dev.VersaoAssemblies/app.config b/Dev.VersaoAssemblies/app.config new file mode 100644 index 000000000..3e0e37cfc --- /dev/null +++ b/Dev.VersaoAssemblies/app.config @@ -0,0 +1,3 @@ + + + diff --git a/GraphicsPrinter/GraphicsPrinter.csproj b/GraphicsPrinter/GraphicsPrinter.csproj deleted file mode 100644 index 6235ceb3f..000000000 --- a/GraphicsPrinter/GraphicsPrinter.csproj +++ /dev/null @@ -1,76 +0,0 @@ - - - - - Debug - AnyCPU - {3067EFCC-91DE-48EA-8F7E-E0D95216C6DC} - Library - Properties - GraphicsPrinter - GraphicsPrinter - v4.5 - 512 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - - - - - - - - - ..\NFe.Danfe.Nativo\Dlls\zxing.dll - - - ..\NFe.Danfe.Nativo\Dlls\zxing.presentation.dll - - - - - - - - - - - - - - - - {80C6093C-47D5-41A1-9FA0-E218E82FA666} - NFe.Danfe.Base - - - - - \ No newline at end of file diff --git a/GraphicsPrinter/GraphicsPrinter.csproj.DotSettings b/GraphicsPrinter/GraphicsPrinter.csproj.DotSettings deleted file mode 100644 index 662f95686..000000000 --- a/GraphicsPrinter/GraphicsPrinter.csproj.DotSettings +++ /dev/null @@ -1,2 +0,0 @@ - - CSharp50 \ No newline at end of file diff --git a/GraphicsPrinter/Properties/AssemblyInfo.cs b/GraphicsPrinter/Properties/AssemblyInfo.cs deleted file mode 100644 index fa7ba17cd..000000000 --- a/GraphicsPrinter/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("GraphicsPrinter")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("GraphicsPrinter")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("3067efcc-91de-48ea-8f7e-e0d95216c6dc")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/MDFe.AppTeste/App.config b/MDFe.AppTeste/App.config index d1428ad71..4bfa00561 100755 --- a/MDFe.AppTeste/App.config +++ b/MDFe.AppTeste/App.config @@ -1,6 +1,6 @@ - + diff --git a/MDFe.AppTeste/Entidades/ConfigWebService.cs b/MDFe.AppTeste/Entidades/ConfigWebService.cs index 0b6b5a1cf..4d2db1490 100755 --- a/MDFe.AppTeste/Entidades/ConfigWebService.cs +++ b/MDFe.AppTeste/Entidades/ConfigWebService.cs @@ -1,7 +1,7 @@ using System; using DFe.Classes.Entidades; using DFe.Classes.Flags; -using MDFe.Utils.Flags; +using VersaoServico = MDFe.Utils.Flags.VersaoServico; namespace MDFe.AppTeste.Entidades { diff --git a/MDFe.AppTeste/MDFe.AppTeste.csproj b/MDFe.AppTeste/MDFe.AppTeste.csproj index 8017e8002..78829a2e1 100755 --- a/MDFe.AppTeste/MDFe.AppTeste.csproj +++ b/MDFe.AppTeste/MDFe.AppTeste.csproj @@ -9,7 +9,7 @@ Properties MDFe.AppTeste MDFe.AppTeste - v4.5 + v4.8 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4 @@ -83,9 +83,6 @@ - - Code - True True @@ -106,303 +103,237 @@ - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer + Always + + + Always + + Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer + Always + + Always - Designer Always - Designer Always - Designer Always - Designer Always - Designer Always @@ -411,27 +342,34 @@ - {9984EC15-18E1-4A87-B4DB-18AC913DC4E8} + {a08ce194-9780-493d-a758-d5b3f44bd208} DFe.Classes - {b4e1a7a6-5d66-4326-8a8d-39338e6fc84c} + {97f3c222-fd10-488a-812b-e514c3a8863c} DFe.Utils - {9794cb98-4691-4218-a127-c573c2e7ff83} + {436a0bcb-3866-4969-a129-cfa03c194e1f} MDFe.Classes - {9587937a-a826-4785-9d1e-3a9f4a622b7c} + {6022bba9-15bf-4ce3-b223-90b167f053d7} MDFe.Servicos - {9c0678eb-78f2-49c6-91bf-38148fc37fbb} + {657e6e65-a138-416c-9a60-d366e68d9b6d} MDFe.Utils + + {6aa98cd9-8e71-4ac4-a3db-aef245e60096} + MDFe.Wsdl + + + + + - @@ -19,11 +20,24 @@ Serviço Solicitado - + - CNPJ do Emitente do MDF-e + Identificação do emitente - + + + CNPJ do emitente do MDF-e + Informar zeros não significativos + + + + + CPF do emitente do MDF-e + Informar zeros não significativos +Usar com serie específica 920-969 para emitente pessoa física com inscrição estadual + + + diff --git a/MDFe.AppTeste/Schemas/consReciMDFeTiposBasico_v3.00.xsd b/MDFe.AppTeste/Schemas/consReciMDFeTiposBasico_v3.00.xsd index b239debab..ed684c44a 100755 --- a/MDFe.AppTeste/Schemas/consReciMDFeTiposBasico_v3.00.xsd +++ b/MDFe.AppTeste/Schemas/consReciMDFeTiposBasico_v3.00.xsd @@ -1,5 +1,5 @@ - + @@ -28,12 +28,12 @@ - Chaves de acesso do MDF-e, compostas por: UF do emitente, AAMM da emissão do MDFe, CNPJ do emitente, modelo, série, número do MDF-e, Forma de Emissão e código numérico+DV. + Chaves de acesso do MDF-e, - Data e hora de processamento, no formato AAAA-MM-DDTHH:MM:SS TZD. Deve ser preenchida com data e hora da gravação no Banco em caso de Confirmação. Em caso de Rejeição, com data e hora do recebimento do Arquivo de MDF-e enviado. + Data e hora de processamento, no formato AAAA-MM-DDTHH:MM:SS TZD. @@ -41,12 +41,12 @@ - Número do Protocolo de Status do MDF-e. 1 posição tipo de autorizador (1 – Secretaria de Fazenda Estadual, 7 - Sefaz Nacional ); 2 posições ano; 10 seqüencial no ano. + Número do Protocolo de Status do MDF-e. - Digest Value do MDF-e processado. Utilizado para conferir a integridade do CT-e original. + Digest Value do MDF-e processado. Utilizado para conferir a integridade do MDF-e original. @@ -66,6 +66,28 @@ + + + Mensagem do Fisco + + + + + + Código do status da mensagem do fisco + + + + + + + + Mensagem do Fisco + + + + + diff --git a/MDFe.AppTeste/Schemas/consSitMDFeTiposBasico_v3.00.xsd b/MDFe.AppTeste/Schemas/consSitMDFeTiposBasico_v3.00.xsd index c25428b3f..bfb768ea5 100755 --- a/MDFe.AppTeste/Schemas/consSitMDFeTiposBasico_v3.00.xsd +++ b/MDFe.AppTeste/Schemas/consSitMDFeTiposBasico_v3.00.xsd @@ -1,4 +1,5 @@ + @@ -103,6 +104,25 @@ + + + Grupo de informações do compartilhamento do MDFe com InfraSA para geração do DTe + + + + + + Número do Protocolo de geração do DTe + + + + + Data e hora de geração do protocolo, no formato AAAA-MM-DDTHH:MM:SS TZD. + + + + + diff --git a/MDFe.AppTeste/Schemas/evAlteracaoPagtoServMDFe_v3.00.xsd b/MDFe.AppTeste/Schemas/evAlteracaoPagtoServMDFe_v3.00.xsd new file mode 100644 index 000000000..14f59ec33 --- /dev/null +++ b/MDFe.AppTeste/Schemas/evAlteracaoPagtoServMDFe_v3.00.xsd @@ -0,0 +1,257 @@ + + + + + + + Schema XML de validação do evento de alteração do pagamento do serviçp de transporte 110118 + + + + + + Descrição do Evento - “Alteração Pagamento Serviço MDFe” + + + + + + + + + + + + Número do Protocolo de Status do MDF-e. + + + + + Informações do Pagamento do Frete + + + + + + Razão social ou Nome do responsavel pelo pagamento + + + + + + + + + + + + Número do CPF do responsável pelo pgto + Informar os zeros não significativos. + + + + + Número do CNPJ do responsável pelo pgto + Informar os zeros não significativos. + + + + + Identificador do responsável pelo pgto em caso de ser estrangeiro + + + + + + + + + + + + + + Componentes do Pagamentoi do Frete + + + + + + Tipo do Componente + +01 - Vale Pedágio; +02 - Impostos, taxas e contribuições; +03 - Despesas (bancárias, meios de pagamento, outras) +04 - Frete +99 - Outros + + + + + + + + + + + + + + + Valor do componente + + + + + Descrição do componente do tipo Outros + + + + + + + + + + + + + + Valor Total do Contrato + + + + + Indicador da Forma de Pagamento:0-Pagamento à Vista;1-Pagamento à Prazo; + + + + + + + + + + + + Valor do Adiantamento (usar apenas em pagamento à Prazo + + + + + Indicador para declarar concordância em antecipar o adiantamento + Operação de transporte com utilização de veículos de frotas dedicadas ou fidelizadas. +Preencher com “1” para indicar operação de transporte de alto desempenho, demais casos não informar a tag + + + + + + + + + + + Informações do pagamento a prazo. + Informar somente se indPag for à Prazo + + + + + + Número da Parcela + + + + + + + + + + + Data de vencimento da Parcela (AAAA-MM-DD) + + + + + Valor da Parcela + + + + + + + + Tipo de Permissão em relação a antecipação das parcelas + 0 - Não permite antecipar +1 - Permite antecipar as parcelas +2 - Permite antecipar as parcelas mediante confirmação + + + + + + + + + + + + Informações bancárias + + + + + + + Número do banco + + + + + + + + + + + Número da agência bancária + + + + + + + + + + + + Número do CNPJ da Instituição de Pagamento Eletrônico do Frete + Informar os zeros não significativos. + + + + + Chave PIX + Informar a chave PIX para recebimento do frete. +Pode ser email, CPF/ CNPJ (somente numeros), Telefone com a seguinte formatação (+5599999999999) ou a chave aleatória gerada pela instituição. + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MDFe.AppTeste/Schemas/evConfirmaServMDFe_v3.00.xsd b/MDFe.AppTeste/Schemas/evConfirmaServMDFe_v3.00.xsd new file mode 100644 index 000000000..90511fd58 --- /dev/null +++ b/MDFe.AppTeste/Schemas/evConfirmaServMDFe_v3.00.xsd @@ -0,0 +1,34 @@ + + + + + + + Schema XML de validação do evento de confirmação do serviço de transporte 110117 + + + + + + Descrição do Evento - “Confirmação Serviço Transporte” + + + + + + + + + + + + Número do Protocolo de Status do MDF-e. +1 posição tipo de autorizador (9 - SEFAZ Nacional ); +2 posições ano; +10 seqüencial no ano. + + + + + + diff --git a/MDFe.AppTeste/Schemas/evEncMDFe_v3.00.xsd b/MDFe.AppTeste/Schemas/evEncMDFe_v3.00.xsd index 4d0186d0f..dc69957b2 100755 --- a/MDFe.AppTeste/Schemas/evEncMDFe_v3.00.xsd +++ b/MDFe.AppTeste/Schemas/evEncMDFe_v3.00.xsd @@ -42,6 +42,17 @@ Código do Município de Encerramento do manifesto + + + Indicador que deve ser informado quando o encerramento for registrado pelo transportador terceiro + Informar valor 1 quando o MDFe for encerrado pelo transportador terceiro, este sendo diferente do emitente do MDFe + + + + + + + diff --git a/MDFe.AppTeste/Schemas/evInclusaoDFeMDFe_v3.00.xsd b/MDFe.AppTeste/Schemas/evInclusaoDFeMDFe_v3.00.xsd new file mode 100644 index 000000000..844232bc0 --- /dev/null +++ b/MDFe.AppTeste/Schemas/evInclusaoDFeMDFe_v3.00.xsd @@ -0,0 +1,81 @@ + + + + + + + Schema XML de validação do evento de inclusão de DFe +110115 + + + + + + Descrição do Evento - “Inclusão DF-e” + + + + + + + + + + + + Número do Protocolo de Status do MDF-e. +1 posição tipo de autorizador (9 - SEFAZ Nacional ); +2 posições ano; +10 seqüencial no ano. + + + + + Código do Município de Carregamento + + + + + Nome do Município de Carregamento + + + + + + + + + + + Informações dos Documentos fiscais vinculados ao manifesto + + + + + + Código do Município de Descarregamento + + + + + Nome do Município de Descarregamento + + + + + + + + + + + Nota Fiscal Eletrônica + + + + + + + + + diff --git a/MDFe.AppTeste/Schemas/evPagtoOperMDFe_v3.00.xsd b/MDFe.AppTeste/Schemas/evPagtoOperMDFe_v3.00.xsd new file mode 100644 index 000000000..b7f4e99c6 --- /dev/null +++ b/MDFe.AppTeste/Schemas/evPagtoOperMDFe_v3.00.xsd @@ -0,0 +1,289 @@ + + + + + + + Schema XML de validação do evento de pagamento da operação de transporte 110116 + + + + + + Descrição do Evento - “Pagamento Operação MDF-e” + + + + + + + + + + + + Número do Protocolo de Status do MDF-e. +1 posição tipo de autorizador (9 - SEFAZ Nacional ); +2 posições ano; +10 seqüencial no ano. + + + + + Informações do total de viagens acobertadas pelo Evento “pagamento do frete” + + + + + + Quantidade total de viagens realizadas com o pagamento do Frete + + + + + + + + + + Número de referência da viagem do MDFe referenciado. + + + + + + + + + + + + + Informações do Pagamento do Frete + + + + + + Razão social ou Nome do responsavel pelo pagamento + + + + + + + + + + + + Número do CPF do responsável pelo pgto + Informar os zeros não significativos. + + + + + Número do CNPJ do responsável pelo pgto + Informar os zeros não significativos. + + + + + Identificador do responsável pelo pgto em caso de ser estrangeiro + + + + + + + + + + + + + + Componentes do Pagamentoi do Frete + + + + + + Tipo do Componente + +01 - Vale Pedágio; +02 - Impostos, taxas e contribuições; +03 - Despesas (bancárias, meios de pagamento, outras) +04 - Frete +99 - Outros + + + + + + + + + + + + + + + Valor do componente + + + + + Descrição do componente do tipo Outros + + + + + + + + + + + + + + Valor Total do Contrato + + + + + Indicador da Forma de Pagamento:0-Pagamento à Vista;1-Pagamento à Prazo; + + + + + + + + + + + + Valor do Adiantamento (usar apenas em pagamento à Prazo + + + + + Indicador para declarar concordância em antecipar o adiantamento + Operação de transporte com utilização de veículos de frotas dedicadas ou fidelizadas. +Preencher com “1” para indicar operação de transporte de alto desempenho, demais casos não informar a tag + + + + + + + + + + + Informações do pagamento a prazo. + Informar somente se indPag for à Prazo + + + + + + Número da Parcela + + + + + + + + + + + Data de vencimento da Parcela (AAAA-MM-DD) + + + + + Valor da Parcela + + + + + + + + Tipo de Permissão em relação a antecipação das parcelas + 0 - Não permite antecipar +1 - Permite antecipar as parcelas +2 - Permite antecipar as parcelas mediante confirmação + + + + + + + + + + + + Informações bancárias + + + + + + + Número do banco + + + + + + + + + + + Número da agência bancária + + + + + + + + + + + + Número do CNPJ da Instituição de Pagamento Eletrônico do Frete + Informar os zeros não significativos. + + + + + Chave PIX + Informar a chave PIX para recebimento do frete. +Pode ser email, CPF/ CNPJ (somente numeros), Telefone com a seguinte formatação (+5599999999999) ou a chave aleatória gerada pela instituição. + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MDFe.AppTeste/Schemas/eventoMDFeTiposBasico_v3.00.xsd b/MDFe.AppTeste/Schemas/eventoMDFeTiposBasico_v3.00.xsd index 3c677ddab..919701f0f 100755 --- a/MDFe.AppTeste/Schemas/eventoMDFeTiposBasico_v3.00.xsd +++ b/MDFe.AppTeste/Schemas/eventoMDFeTiposBasico_v3.00.xsd @@ -1,4 +1,5 @@ + @@ -12,7 +13,7 @@ - Código do órgão de recepção do Evento. Utilizar a Tabela do IBGE extendida, utilizar 90 para identificar SUFRAMA, 91 para RFB, 92 para BackOffice BRId e 93 para ONE + Código do órgão de recepção do Evento. Utilizar a Tabela do IBGE extendida, utilizar 90 para identificar SUFRAMA, 91 para RFB, 93 para ONE, 94 para SVBA @@ -22,11 +23,24 @@ 2 - Homologação - + - CNPJ do emissor do evento + Identificação do autor do evento - + + + CNPJ do autor + Informar zeros não significativos + + + + + CPF do Autor + Informar zeros não significativos. +Usar com serie específica 920-969 para emitente pessoa física com inscrição estadual, ou para emissor TAC do Regime Especial da Nota Fiscal Fácil + + + Chave de Acesso do MDF-e vinculado ao evento @@ -54,7 +68,7 @@ - + @@ -74,6 +88,61 @@ Insira neste local o XML específico do tipo de evento (cancelamento, encerramen + + + Grupo de informações do pedido de registro de evento da Nota Fiscal Fácil + + + + + + Solicitação do pedido de registro de evento da NFF. + Será preenchido com a totalidade de campos informados no aplicativo emissor serializado. + + + + + + + + + + + + + + Grupo de Informação do Provedor de Assinatura e Autorização + + + + + + CNPJ do Provedor de Assinatura e Autorização + + + + + Assinatura RSA do Emitente para DFe gerados por PAA + + + + + + Assinatura digital padrão RSA + Converter o atributo Id do DFe para array de bytes e assinar com a chave privada do RSA com algoritmo SHA1 gerando um valor no formato base64. + + + + + Chave Publica no padrão XML RSA Key + + + + + + + + @@ -82,7 +151,7 @@ Insira neste local o XML específico do tipo de evento (cancelamento, encerramen - + @@ -161,7 +230,7 @@ Insira neste local o XML específico do tipo de evento (cancelamento, encerramen - + @@ -198,7 +267,26 @@ Insira neste local o XML específico do tipo de evento (cancelamento, encerramen - + + + IP do transmissor do documento fiscal para o ambiente autorizador + + + + + Porta de origem utilizada na conexão (De 0 a 65535) + + + + + + + + + + Data e Hora da Conexão de Origem + + diff --git a/MDFe.AppTeste/Schemas/mdfeModalAquaviario_v3.00.xsd b/MDFe.AppTeste/Schemas/mdfeModalAquaviario_v3.00.xsd index d34a91bd6..97bd1b208 100755 --- a/MDFe.AppTeste/Schemas/mdfeModalAquaviario_v3.00.xsd +++ b/MDFe.AppTeste/Schemas/mdfeModalAquaviario_v3.00.xsd @@ -268,6 +268,19 @@ + + + Maritime Mobile Service Identify + Preencher com o MMSI (Maritime Mobile Service Identify) fornecido pela ANATEL ou autoridade de telecomunicações de origem da embarcação + + + + + + + + + diff --git a/MDFe.AppTeste/Schemas/mdfeModalFerroviario_v3.00.xsd b/MDFe.AppTeste/Schemas/mdfeModalFerroviario_v3.00.xsd index cf259de7e..6f043e0f6 100755 --- a/MDFe.AppTeste/Schemas/mdfeModalFerroviario_v3.00.xsd +++ b/MDFe.AppTeste/Schemas/mdfeModalFerroviario_v3.00.xsd @@ -1,4 +1,5 @@ + @@ -126,11 +127,14 @@ - + Tonelada Útil Unidade de peso referente à carga útil (apenas o peso da carga transportada), expressa em toneladas. + + + diff --git a/MDFe.AppTeste/Schemas/mdfeModalRodoviario_v3.00.xsd b/MDFe.AppTeste/Schemas/mdfeModalRodoviario_v3.00.xsd index 9f958df9c..f0d38621e 100755 --- a/MDFe.AppTeste/Schemas/mdfeModalRodoviario_v3.00.xsd +++ b/MDFe.AppTeste/Schemas/mdfeModalRodoviario_v3.00.xsd @@ -1,12 +1,12 @@ - + Tipo RNTRC - Registro Nacional Transportadores Rodoviários de Carga - + @@ -15,7 +15,7 @@ Tipo CIOT - Código Identificador da Operação de Transporte - + @@ -45,7 +45,7 @@ - + Código Identificador da Operação de Transporte Também Conhecido como conta frete @@ -109,10 +109,9 @@ - + - Número do comprovante de compra - Número de ordem do comprovante de compra do Vale-Pedágio fornecido para cada veículo ou combinação veicular, por viagem. + Identificador do vale pedagio obrigatório - IDVPO @@ -123,12 +122,58 @@ Valor do Vale-Pedagio - Número de ordem do comprovante de compra do Vale-Pedágio fornecido para cada veículo ou combinação veicular, por viagem. + Valor do Vale-Pedágio obrigatório necessário à livre circulação, desde a origem da operação de transporte até o destino, do transportador contratado. + + + Tipo do Vale Pedagio + +01 - TAG; 04 - Leitura de placa (pela placa de identificação veicular) + + + + + + + + + + + + Categoria de Combinação Veicular + Preencher com: + +02 Veículo Comercial 2 eixos;0 +4 Veículo Comercial 3 eixos; +06 Veículo Comercial 4 eixos;0 +7 Veículo Comercial 5 eixos; 0 +8 Veículo Comercial 6 eixos; +10 Veículo Comercial 7 eixos; +11 Veículo Comercial 8 eixos; +12 Veículo Comercial 9 eixos; +13 Veículo Comercial 10 eixos; +14 Veículo Comercial Acima de 10 eixos; + + + + + + + + + + + + + + + + + @@ -137,20 +182,312 @@ Grupo de informações dos contratantes do serviço de transporte - - + + + + Razão social ou Nome do contratante + + + + + + + + + + + + Número do CPF do contratante do serviço + Informar os zeros não significativos. + + + + + Número do CNPJ do contratante do serviço + Informar os zeros não significativos. + + + + + Identificador do contratante em caso de contratante estrangeiro + + + + + + + + + + + + + + Grupo de informações do contrato entre transportador e contratante + + + + + + Número do contrato do transportador com o contratante quando este existir para prestações continuadas + + + + + + + + + + + + Valor global do contrato + + + + + + + + + + + Informações do Pagamento do Contrato + + + + + + Razão social ou Nome do respnsável pelo pagamento + + + + + + + + + + + + Número do CPF do responsável pelo pgto + Informar os zeros não significativos. + + + + + Número do CNPJ do responsável pelo pgto + Informar os zeros não significativos. + + + + + Identificador do responsável pelo pgto em caso de ser estrangeiro + + + + + + + + + + + + + + Componentes do Pagamentoi do Contrato + + + + + + Tipo do Componente + +Preencher com: +01 - Vale Pedágio; +02 - Impostos, taxas e contribuições; +03 - Despesas (bancárias, meios de pagamento, outras); +04 - Frete +99 - Outros + + + + + + + + + + + + + + + Valor do componente + + + + + Descrição do componente do tipo Outros + + + + + + + + + + + + - Número do CPF do contratente do serviço - Informar os zeros não significativos. + Valor Total do Contrato - + - Número do CNPJ do contratante do serviço - Informar os zeros não significativos. + Indicador de operação de transporte de alto desempenho + Operação de transporte com utilização de veículos de frotas dedicadas ou fidelizadas. +Preencher com “1” para indicar operação de transporte de alto desempenho, demais casos não informar a tag + + + + + + - + + + Indicador da Forma de Pagamento:0-Pagamento à Vista;1-Pagamento à Prazo; + + + + + + + + + + + + Valor do Adiantamento (usar apenas em pagamento à Prazo + + + + + Indicador para declarar concordância em antecipar o adiantamento + Informar a tag somente se for autorizado antecipar o adiantamento + + + + + + + + + + Informações do pagamento a prazo. + Informar somente se indPag for à Prazo + + + + + + Número da Parcela + + + + + + + + + + + Data de vencimento da Parcela (AAAA-MM-DD) + + + + + Valor da Parcela + + + + + + + + Tipo de Permissão em relação a antecipação das parcelas + 0 - Não permite antecipar + +1 - Permite antecipar as parcelas + +2 - Permite antecipar as parcelas mediante confirmação + + + + + + + + + + + + Informações bancárias + + + + + + + Número do banco + + + + + + + + + + + Número da agência bancária + + + + + + + + + + + + Número do CNPJ da Instituição de Pagamento Eletrônico do Frete + Informar os zeros não significativos. + + + + + Chave PIX + Informar a chave PIX para recebimento do frete. +Pode ser email, CPF/ CNPJ (somente numeros), Telefone com a seguinte formatação (+5599999999999) ou a chave aleatória gerada pela instituição. + + + + + + + + + + + + @@ -227,7 +564,7 @@ - Proprietários do Veículo. + Proprietário ou possuidor do Veículo. Só preenchido quando o veículo não pertencer à empresa emitente do MDF-e @@ -280,10 +617,10 @@ Só preenchido quando o veículo não pertencer à empresa emitente do MDF-e - Tipo Proprietário + Tipo Proprietário ou possuidor Preencher com: - 0-TAC – Agregado; - 1-TAC Independente; ou + 0-TAC Agregado; + 1-TAC Independente; 2 – Outros. @@ -300,7 +637,7 @@ Só preenchido quando o veículo não pertencer à empresa emitente do MDF-e - Informações do(s) Condutor(s) do veículo + Informações do(s) Condutor(es) do veículo @@ -369,7 +706,7 @@ Só preenchido quando o veículo não pertencer à empresa emitente do MDF-e - + UF em que veículo está licenciado Sigla da UF de licenciamento do veículo. @@ -450,7 +787,7 @@ Só preenchido quando o veículo não pertencer à empresa emitente do MDF-e - Proprietários do Veículo. + Proprietários ou possuidor do Veículo. Só preenchido quando o veículo não pertencer à empresa emitente do MDF-e @@ -503,10 +840,10 @@ Só preenchido quando o veículo não pertencer à empresa emitente do MDF-e - Tipo Proprietário + Tipo Proprietário ou possuidor Preencher com: - 0-TAC – Agregado; - 1-TAC Independente; ou + 0-TAC Agregado; + 1-TAC Independente; 2 – Outros. @@ -544,7 +881,7 @@ Só preenchido quando o veículo não pertencer à empresa emitente do MDF-e - + UF em que veículo está licenciado Sigla da UF de licenciamento do veículo. diff --git a/MDFe.AppTeste/Schemas/mdfeTiposBasico_v3.00.xsd b/MDFe.AppTeste/Schemas/mdfeTiposBasico_v3.00.xsd index 631927379..3dccc2d3a 100755 --- a/MDFe.AppTeste/Schemas/mdfeTiposBasico_v3.00.xsd +++ b/MDFe.AppTeste/Schemas/mdfeTiposBasico_v3.00.xsd @@ -1,5 +1,5 @@ - + @@ -39,8 +39,9 @@ Tabela do IBGE de código de unidades da federação. Tipo do Emitente 1 - Prestador de serviço de transporte -2 - Transportador de Carga Própria -OBS: Deve ser preenchido com 2 para emitentes de NF-e e pelas transportadoras quando estiverem fazendo transporte de carga própria +2 - Transportador de Carga Própria 3 - Prestador de serviço de transporte que emitirá CT-e Globalizado + +OBS: Deve ser preenchido com 2 para emitentes de NF-e e pelas transportadoras quando estiverem fazendo transporte de carga própria. Deve ser preenchido com 3 para transportador de carga que emitirá à posteriori CT-e Globalizado relacionando as NF-e. @@ -62,7 +63,8 @@ OBS: Deve ser preenchido com 2 para emitentes de NF-e e pelas transportadoras qu Série do Manifesto - Informar a série do documento fiscal (informar zero se inexistente). + Informar a série do documento fiscal (informar zero se inexistente). +Série na faixa [920-969]: Reservada para emissão por contribuinte pessoa física com inscrição estadual. @@ -110,23 +112,23 @@ OBS: Deve ser preenchido com 2 para emitentes de NF-e e pelas transportadoras qu - Forma de emissão do Manifesto (Normal ou Contingência) + Forma de emissão do Manifesto 1 - Normal -; 2 - Contingência +; 2 - Contingência; 3-Regime Especial NFF + Identificação do processo de emissão do Manifesto - 0 - emissão de MDF-e com aplicativo do contribuinte; -3- emissão MDF-e pelo contribuinte com aplicativo fornecido pelo Fisco. + 0 - emissão de MDF-e com aplicativo do contribuinte @@ -204,6 +206,26 @@ Informar 'EX' para operações com o exterior. Formato AAAA-MM-DDTHH:MM:DD TZD + + + Indicador de participação do Canal Verde + + + + + + + + + + Indicador de MDF-e com inclusão da Carga posterior a emissão por evento de inclusão de DF-e + + + + + + + @@ -213,13 +235,24 @@ Informar 'EX' para operações com o exterior. - - - CNPJ do emitente - Informar zeros não significativos - - - + + + + CNPJ do emitente + Informar zeros não significativos + + + + + CPF do emitente + Informar zeros não significativos. + +Usar com série específica 920-969 para emitente pessoa física com inscrição estadual. +Poderá ser usado também para emissão do Regime Especial da Nota Fiscal Fácil + + + + Inscrição Estadual do emitemte @@ -300,7 +333,7 @@ Por exemplo, o arquivo para o schema do modal Rodoviário na versão 1.00 será - + Informações dos Municípios de descarregamento @@ -322,7 +355,7 @@ Por exemplo, o arquivo para o schema do modal Rodoviário na versão 1.00 será - + Conhecimentos de Tranporte - usar este grupo quando for prestador de serviço de transporte @@ -437,10 +470,56 @@ Por exemplo, o arquivo para o schema do modal Rodoviário na versão 1.00 será + + + Grupo de informações da Entrega Parcial (Corte de Voo) + + + + + + Quantidade total de volumes + + + + + Quantidade de volumes enviados no MDF-e + + + + + + + + + Indicador de Prestação parcial + + + + + + + + + + + Grupo de informações das NFe que foram entregues do CTe relacionado + + + + + + Nota Fiscal Eletrônica + + + + + + - + Nota Fiscal Eletronica @@ -558,7 +637,7 @@ Por exemplo, o arquivo para o schema do modal Rodoviário na versão 1.00 será - + Manifesto Eletrônico de Documentos Fiscais. Somente para modal Aquaviário (vide regras MOC) @@ -780,6 +859,160 @@ Dados obrigatórios apenas no modal Rodoviário, depois da lei 11.442/07. Para o + + + Produto predominante + Informar a descrição do produto predominante, conforme o item de maior valor financeiro conforme Resolução ANTT n° 5.867 de 2020). + + + + + + Tipo de Carga + Conforme Resolução ANTT nº. 5.849/2019. + +01-Granel sólido; +02-Granel líquido; +03-Frigorificada; +04-Conteinerizada; +05-Carga Geral; +06-Neogranel; +07-Perigosa (granel sólido); +08-Perigosa (granel líquido); +09-Perigosa (carga frigorificada); +10-Perigosa (conteinerizada); +11-Perigosa (carga geral). +12-Granel pressurizada + + + + + + + + + + + + + + + + + + + + + + Descrição do produto + + + + + + + + + + + GTIN (Global Trade Item Number) do produto, antigo código EAN ou código de barras + + + + + + + + + + + Código NCM + + + + + + + + + + + Informações da carga lotação. Informar somente quando MDF-e for de carga lotação + + + + + + Informações da localização de carregamento do MDF-e de carga lotação + + + + + + CEP onde foi carregado o MDF-e + Informar zeros não significativos + + + + + + + + + + + + Latitude do ponto geográfico onde foi carregado o MDF-e + + + + + Latitude do ponto geográfico onde foi carregado o MDF-e + + + + + + + + + Informações da localização de descarregamento do MDF-e de carga lotação + + + + + + CEP onde foi descarregado o MDF-e + Informar zeros não significativos + + + + + + + + + + + + Latitude do ponto geográfico onde foi descarregado o MDF-e + + + + + Latitude do ponto geográfico onde foi descarregado o MDF-e + + + + + + + + + + + + Totalizadores da carga transportada e seus documentos fiscais @@ -824,7 +1057,7 @@ Dados obrigatórios apenas no modal Rodoviário, depois da lei 11.442/07. Para o - Codigo da unidade de medida do Peso Bruto da Carga / Mercadorias transportadas + Código da unidade de medida do Peso Bruto da Carga / Mercadorias transportadas 01 – KG; 02 - TON @@ -919,6 +1152,66 @@ Dados obrigatórios apenas no modal Rodoviário, depois da lei 11.442/07. Para o + + + Informações do Responsável Técnico pela emissão do DF-e + + + + + Grupo de informações do pedido de emissão da Nota Fiscal Fácil + + + + + + Solicitação do pedido de emissão da NFF. + Será preenchido com a totalidade de campos informados no aplicativo emissor serializado. + + + + + + + + + + + + + + Grupo de Informação do Provedor de Assinatura e Autorização + + + + + + CNPJ do Provedor de Assinatura e Autorização + + + + + Assinatura RSA do Emitente para DFe gerados por PAA + + + + + + Assinatura digital padrão RSA + Converter o atributo Id do DFe para array de bytes e assinar com a chave privada do RSA com algoritmo SHA1 gerando um valor no formato base64. + + + + + Chave Publica no padrão XML RSA Key + + + + + + + + @@ -939,12 +1232,34 @@ Dados obrigatórios apenas no modal Rodoviário, depois da lei 11.442/07. Para o + + + Informações suplementares do MDF-e + + + + + + Texto com o QR-Code para consulta do MDF-e + + + + + + + + + + + + + - Tipo Pedido de Concessão de Autorização de MDF-e + Tipo Pedido de Autorização Assíncrona de MDF-e @@ -952,9 +1267,49 @@ Dados obrigatórios apenas no modal Rodoviário, depois da lei 11.442/07. Para o + + + Tipo Retorno do Pedido de Autorização do MDF-e + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Identificação da UF + + + + + Versão do Aplicativo que recebeu o Arquivo. + + + + + Código do status da mensagem enviada. + + + + + Descrição literal do status do serviço solicitado. + + + + + Dados do Recibo do Arquivo + + + + + - Tipo Retorno do Pedido de Concessão de Autorização do MDF-e + Tipo Retorno do Recibo do Pedido de Autorização do MDF-e @@ -1895,6 +2250,160 @@ Por exemplo: para rodoviário tração ou reboque deverá preencher com a placa + + + Tipo Dados da Responsável Técnico + + + + + CNPJ da pessoa jurídica responsável técnica pelo sistema utilizado na emissão do documento fiscal eletrônico + Informar o CNPJ da pessoa jurídica desenvolvedora do sistema utilizado na emissão do documento fiscal eletrônico. + + + + + Nome da pessoa a ser contatada + Informar o nome da pessoa a ser contatada na empresa desenvolvedora do sistema utilizado na emissão do documento fiscal eletrônico. No caso de pessoa física, informar o respectivo nome. + + + + + + + + + + + Email da pessoa jurídica a ser contatada + + + + + Telefone da pessoa jurídica a ser contatada + Preencher com o Código DDD + número do telefone. + + + + + + + + + + + + Identificador do código de segurança do responsável técnico + Identificador do CSRT utilizado para geração do hash + + + + + + + + + + Hash do token do código de segurança do responsável técnico + O hashCSRT é o resultado das funções SHA-1 e base64 do token CSRT fornecido pelo fisco + chave de acesso do DF-e. (Implementação em futura NT) + +Observação: 28 caracteres são representados no schema como 20 bytes do tipo base64Binary + + + + + + + + + + + + + Tipo Protocolo de status resultado do processamento do MDF-e + + + + + Dados do protocolo de status + + + + + + Identificação do Ambiente: +1 - Produção +2 - Homologação + + + + + Versão do Aplicativo que processou a NF-3e + + + + + Chave de acesso do MDF-e + + + + + Data e hora de processamento, no formato AAAA-MM-DDTHH:MM:SS TZD. + + + + + Número do Protocolo de Status do MDF-e + + + + + Digest Value do MDF-e processado. Utilizado para conferir a integridade do MDF-e original. + + + + + Código do status do MDF-e + + + + + + + + Descrição literal do status do MDF-e. + + + + + + + + + Mensagem do Fisco + + + + + + Código do status da mensagem do fisco + + + + + + + + Mensagem do Fisco + + + + + + + + + Tipo processo de emissão do MDF-e @@ -1902,7 +2411,6 @@ Por exemplo: para rodoviário tração ou reboque deverá preencher com a placa - @@ -2009,9 +2517,9 @@ Por exemplo: para rodoviário tração ou reboque deverá preencher com a placa - + - + \ No newline at end of file diff --git a/MDFe.AppTeste/Schemas/procMDFe_v3.00.xsd b/MDFe.AppTeste/Schemas/procMDFe_v3.00.xsd index 6cd3edd26..9b0c8f35f 100755 --- a/MDFe.AppTeste/Schemas/procMDFe_v3.00.xsd +++ b/MDFe.AppTeste/Schemas/procMDFe_v3.00.xsd @@ -1,7 +1,7 @@ + - MDF-e processado @@ -12,7 +12,26 @@ - + + + IP do transmissor do documento fiscal para o ambiente autorizador + + + + + Porta de origem utilizada na conexão (De 0 a 65535) + + + + + + + + + + Data e Hora da Conexão de Origem + + diff --git a/MDFe.AppTeste/Schemas/retMDFe_v3.00.xsd b/MDFe.AppTeste/Schemas/retMDFe_v3.00.xsd new file mode 100644 index 000000000..010eb7f6d --- /dev/null +++ b/MDFe.AppTeste/Schemas/retMDFe_v3.00.xsd @@ -0,0 +1,10 @@ + + + + + + + Manisfesto Eletrônico de Documentos Fiscais + + + diff --git a/MDFe.AppTeste/Schemas/tiposGeralMDFe_v3.00.xsd b/MDFe.AppTeste/Schemas/tiposGeralMDFe_v3.00.xsd index 3faa0860e..ff639b4fa 100755 --- a/MDFe.AppTeste/Schemas/tiposGeralMDFe_v3.00.xsd +++ b/MDFe.AppTeste/Schemas/tiposGeralMDFe_v3.00.xsd @@ -1,4 +1,5 @@ + @@ -90,6 +91,7 @@ + @@ -135,7 +137,7 @@ - + @@ -145,7 +147,7 @@ - + @@ -155,7 +157,7 @@ - + @@ -190,7 +192,7 @@ - + @@ -199,16 +201,7 @@ - - - - - - Tipo Número do CNPJ tamanho varíavel (3-14) - - - - + @@ -217,7 +210,7 @@ - + @@ -490,6 +483,7 @@ + @@ -500,7 +494,7 @@ - + @@ -632,13 +626,22 @@ + + + Tipo que representa uma chave publica padrão RSA + + + + + + Tipo Placa - + diff --git a/MDFe.Classes/Contratos/MDFeModalContainer.cs b/MDFe.Classes/Contratos/MDFeModalContainer.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Extensoes/ExtMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFe.cs index 3a35a06c0..71a8a3327 100644 --- a/MDFe.Classes/Extensoes/ExtMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFe.cs @@ -31,88 +31,93 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using System; using DFe.Classes.Entidades; using DFe.Utils; using DFe.Utils.Assinatura; +using MDFe.Classes.Flags; using MDFe.Classes.Informacoes; using MDFe.Utils.Configuracoes; using MDFe.Utils.Flags; using MDFe.Utils.Validacao; +using System; +using System.IO; +using System.Security.Cryptography.X509Certificates; +using System.Text; using MDFEletronico = MDFe.Classes.Informacoes.MDFe; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFe { - public static MDFEletronico Valida(this MDFEletronico mdfe) + public static MDFEletronico Valida(this MDFEletronico mdfe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + if (mdfe == null) throw new ArgumentException("Erro de assinatura, MDFe esta null"); var xmlMdfe = FuncoesXml.ClasseParaXmlString(mdfe); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlMdfe, "MDFe_v1.00.xsd"); + Validador.Valida(xmlMdfe, "mdfe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlMdfe, "MDFe_v3.00.xsd"); + Validador.Valida(xmlMdfe, "mdfe_v3.00.xsd", config); break; } var tipoModal = mdfe.InfMDFe.InfModal.Modal.GetType(); var xmlModal = FuncoesXml.ClasseParaXmlString(mdfe.InfMDFe.InfModal); - if (tipoModal == typeof (MDFeRodo)) { - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlModal, "MDFeModalRodoviario_v1.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalRodoviario_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlModal, "MDFeModalRodoviario_v3.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalRodoviario_v3.00.xsd", config); break; } } if (tipoModal == typeof (MDFeAereo)) { - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlModal, "MDFeModalAereo_v1.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalAereo_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlModal, "MDFeModalAereo_v3.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalAereo_v3.00.xsd", config); break; } } if (tipoModal == typeof (MDFeAquav)) { - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlModal, "MDFeModalAquaviario_v1.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalAquaviario_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlModal, "MDFeModalAquaviario_v3.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalAquaviario_v3.00.xsd", config); break; } } if (tipoModal == typeof (MDFeFerrov)) { - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlModal, "MDFeModalFerroviario_v1.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalFerroviario_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlModal, "MDFeModalFerroviario_v3.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalFerroviario_v3.00.xsd", config); break; } } @@ -120,10 +125,12 @@ public static MDFEletronico Valida(this MDFEletronico mdfe) return mdfe; } - public static MDFEletronico Assina(this MDFEletronico mdfe) + public static MDFEletronico Assina(this MDFEletronico mdfe, EventHandler eventHandlerChaveMdfe = null, object quemInvocouEventoChaveMDFe = null, MDFeConfiguracao cfgMdfe = null) { if(mdfe == null) throw new ArgumentException("Erro de assinatura, MDFe esta null"); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var modeloDocumentoFiscal = mdfe.InfMDFe.Ide.Mod; var tipoEmissao = (int) mdfe.InfMDFe.Ide.TpEmis; var codigoNumerico = mdfe.InfMDFe.Ide.CMDF; @@ -133,13 +140,31 @@ public static MDFEletronico Assina(this MDFEletronico mdfe) var numeroDocumento = mdfe.InfMDFe.Ide.NMDF; int serie = mdfe.InfMDFe.Ide.Serie; + if (cnpj == null) + { + cnpj = mdfe.InfMDFe.Emit.CPF.PadLeft(14, '0'); + } + var dadosChave = ChaveFiscal.ObterChave(estado, dataEHoraEmissao, cnpj, modeloDocumentoFiscal, serie, numeroDocumento, tipoEmissao, codigoNumerico); mdfe.InfMDFe.Id = "MDFe" + dadosChave.Chave; - mdfe.InfMDFe.Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout; + + if (eventHandlerChaveMdfe != null) + eventHandlerChaveMdfe.Invoke(quemInvocouEventoChaveMDFe, dadosChave.Chave); + + mdfe.InfMDFe.Versao = config.VersaoWebService.VersaoLayout; mdfe.InfMDFe.Ide.CDV = dadosChave.DigitoVerificador; - var assinatura = AssinaturaDigital.Assina(mdfe, mdfe.InfMDFe.Id, MDFeConfiguracao.X509Certificate2); + mdfe.InfMDFeSupl = new MdfeInfMDFeSupl(); + mdfe.InfMDFeSupl.QrCodMDFe = MdfeInfMDFeSupl.GerarQrCode(dadosChave.Chave, mdfe.InfMDFe.Ide.TpAmb); + if (mdfe.InfMDFe.Ide.TpEmis == MDFeTipoEmissao.Contingencia) + { + var encoding = Encoding.UTF8; + var sign = Convert.ToBase64String(AssinaturaDigital.CriarAssinaturaPkcs1(config.X509Certificate2, encoding.GetBytes(mdfe.Chave()))); + mdfe.InfMDFeSupl.QrCodMDFe += "&sign=" + sign; + } + + var assinatura = AssinaturaDigital.Assina(mdfe, mdfe.InfMDFe.Id, config.X509Certificate2); mdfe.Signature = assinatura; @@ -151,12 +176,14 @@ public static string XmlString(this MDFEletronico mdfe) return FuncoesXml.ClasseParaXmlString(mdfe); } - public static void SalvarXmlEmDisco(this MDFEletronico mdfe, string nomeArquivo = null) + public static void SalvarXmlEmDisco(this MDFEletronico mdfe, string nomeArquivo = null, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + if (config.NaoSalvarXml()) return; if (string.IsNullOrEmpty(nomeArquivo)) - nomeArquivo = MDFeConfiguracao.CaminhoSalvarXml + @"\" + mdfe.Chave() + "-mdfe.xml"; + nomeArquivo = Path.Combine(config.CaminhoSalvarXml, mdfe.Chave() + "-mdfe.xml"); FuncoesXml.ClasseParaArquivoXml(mdfe, nomeArquivo); } @@ -167,6 +194,13 @@ public static string Chave(this MDFEletronico mdfe) return chave; } + public static int AmbienteSefazInt(this MDFEletronico mdfe) + { + var ambiente = mdfe.InfMDFe.Ide.TpAmb; + + return (int) ambiente; + } + public static string CNPJEmitente(this MDFEletronico mdfe) { var cnpj = mdfe.InfMDFe.Emit.CNPJ; @@ -174,6 +208,22 @@ public static string CNPJEmitente(this MDFEletronico mdfe) return cnpj; } + public static string CPFEmitente(this MDFEletronico mdfe) + { + var cpf = mdfe.InfMDFe.Emit.CPF; + + return cpf; + } + + public static string CNPJouCPFEmitente(this MDFEletronico mdfe) + { + var cnpj = CNPJEmitente(mdfe); + + if (cnpj != null) return cnpj; + + return CPFEmitente(mdfe).PadLeft(14, '0'); + } + public static Estado UFEmitente(this MDFEletronico mdfe) { var estadoUf = mdfe.InfMDFe.Emit.EnderEmit.UF; @@ -187,5 +237,32 @@ public static long CodigoIbgeMunicipioEmitente(this MDFEletronico mdfe) return codigo; } + + public static MdfeInfMDFeSupl QrCode(this MDFEletronico mdfe, X509Certificate2 certificadoDigital, + Encoding encoding = null) + { + if (encoding == null) + encoding = Encoding.UTF8; + + var qrCode = new StringBuilder(@"https://dfe-portal.svrs.rs.gov.br/mdfe/qrCode"); + qrCode.Append("?"); + qrCode.Append("chMDFe=").Append(mdfe.Chave()); + qrCode.Append("&"); + qrCode.Append("tpAmb=").Append(mdfe.AmbienteSefazInt()); + + switch (mdfe.InfMDFe.Ide.TpEmis) + { + case MDFeTipoEmissao.Contingencia: + var assinatura = Convert.ToBase64String(AssinaturaDigital.CriarAssinaturaPkcs1(certificadoDigital, encoding.GetBytes(mdfe.Chave()))); + qrCode.Append("&sign="); + qrCode.Append(assinatura); + break; + } + + return new MdfeInfMDFeSupl + { + QrCodMDFe = qrCode.ToString() + }; + } } } diff --git a/MDFe.Classes/Extensoes/ExtMDFeConsReciMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeConsReciMDFe.cs index e2a3812e3..173921f26 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeConsReciMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeConsReciMDFe.cs @@ -31,28 +31,31 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using System.Xml; using DFe.Utils; using MDFe.Classes.Informacoes.RetRecepcao; using MDFe.Utils.Configuracoes; using MDFe.Utils.Flags; using MDFe.Utils.Validacao; +using System.IO; +using System.Xml; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeConsReciMDFe { - public static void ValidaSchema(this MDFeConsReciMDFe consReciMDFe) + public static void ValidaSchema(this MDFeConsReciMDFe consReciMDFe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlValidacao = consReciMDFe.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlValidacao, "consReciMdfe_v1.00.xsd"); + Validador.Valida(xmlValidacao, "consReciMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlValidacao, "consReciMdfe_v3.00.xsd"); + Validador.Valida(xmlValidacao, "consReciMDFe_v3.00.xsd", config); break; } } @@ -70,13 +73,15 @@ public static XmlDocument CriaRequestWs(this MDFeConsReciMDFe consReciMDFe) return request; } - public static void SalvarXmlEmDisco(this MDFeConsReciMDFe consReciMDFe) + public static void SalvarXmlEmDisco(this MDFeConsReciMDFe consReciMDFe, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + if (config.NaoSalvarXml()) return; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + var caminhoXml = config.CaminhoSalvarXml; - var arquivoSalvar = caminhoXml + @"\" + consReciMDFe.NRec + "-ped-rec.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, consReciMDFe.NRec + "-ped-rec.xml"); FuncoesXml.ClasseParaArquivoXml(consReciMDFe, arquivoSalvar); } diff --git a/MDFe.Classes/Extensoes/ExtMDFeConsSitMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeConsSitMDFe.cs index aed472a3c..326ae9068 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeConsSitMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeConsSitMDFe.cs @@ -31,28 +31,31 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using System.Xml; using DFe.Utils; using MDFe.Classes.Informacoes.ConsultaProtocolo; using MDFe.Utils.Configuracoes; using MDFe.Utils.Flags; using MDFe.Utils.Validacao; +using System.IO; +using System.Xml; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeConsSitMDFe { - public static void ValidarSchema(this MDFeConsSitMDFe consSitMdfe) + public static void ValidarSchema(this MDFeConsSitMDFe consSitMdfe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlEnvio = consSitMdfe.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlEnvio, "consSitMdfe_v1.00.xsd"); + Validador.Valida(xmlEnvio, "consSitMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlEnvio, "consSitMdfe_v3.00.xsd"); + Validador.Valida(xmlEnvio, "consSitMDFe_v3.00.xsd", config); break; } } @@ -70,13 +73,15 @@ public static XmlDocument CriaRequestWs(this MDFeConsSitMDFe consSitMdfe) return request; } - public static void SalvarXmlEmDisco(this MDFeConsSitMDFe consSitMdfe) + public static void SalvarXmlEmDisco(this MDFeConsSitMDFe consSitMdfe, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + if (config.NaoSalvarXml()) return; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + var caminhoXml = config.CaminhoSalvarXml; - var arquivoSalvar = caminhoXml + @"\" + consSitMdfe.ChMDFe + "-ped-sit.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, consSitMdfe.ChMDFe + "-ped-sit.xml"); FuncoesXml.ClasseParaArquivoXml(consSitMdfe, arquivoSalvar); } diff --git a/MDFe.Classes/Extensoes/ExtMDFeConsStatServMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeConsStatServMDFe.cs index e845674a5..403519b67 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeConsStatServMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeConsStatServMDFe.cs @@ -31,6 +31,7 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.IO; using System.Xml; using DFe.Utils; using MDFe.Classes.Informacoes.StatusServico; @@ -38,21 +39,23 @@ using MDFe.Utils.Flags; using MDFe.Utils.Validacao; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeConsStatServMDFe { - public static void ValidarSchema(this MDFeConsStatServMDFe consStatServMDFe) + public static void ValidarSchema(this MDFeConsStatServMDFe consStatServMDFe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlValidacao = consStatServMDFe.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlValidacao, "consStatServMDFe_v1.00.xsd"); + Validador.Valida(xmlValidacao, "consStatServMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlValidacao, "consStatServMDFe_v3.00.xsd"); + Validador.Valida(xmlValidacao, "consStatServMDFe_v3.00.xsd", config); break; } } @@ -70,13 +73,15 @@ public static XmlDocument CriaRequestWs(this MDFeConsStatServMDFe consStatServMd return request; } - public static void SalvarXmlEmDisco(this MDFeConsStatServMDFe consStatServMdFe) + public static void SalvarXmlEmDisco(this MDFeConsStatServMDFe consStatServMdFe, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + if (config.NaoSalvarXml()) return; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + var caminhoXml = config.CaminhoSalvarXml; - var arquivoSalvar = caminhoXml + @"\-pedido-status-servico.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, "-pedido-status-servico.xml"); FuncoesXml.ClasseParaArquivoXml(consStatServMdFe, arquivoSalvar); } diff --git a/MDFe.Classes/Extensoes/ExtMDFeCosMDFeNaoEnc.cs b/MDFe.Classes/Extensoes/ExtMDFeCosMDFeNaoEnc.cs index bc35e0f09..491a098cf 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeCosMDFeNaoEnc.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeCosMDFeNaoEnc.cs @@ -31,6 +31,7 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.IO; using System.Xml; using DFe.Utils; using MDFe.Classes.Informacoes.ConsultaNaoEncerrados; @@ -38,7 +39,7 @@ using MDFe.Utils.Flags; using MDFe.Utils.Validacao; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeCosMDFeNaoEnc { @@ -47,17 +48,19 @@ public static string XmlString(this MDFeCosMDFeNaoEnc consMDFeNaoEnc) return FuncoesXml.ClasseParaXmlString(consMDFeNaoEnc); } - public static void ValidarSchema(this MDFeCosMDFeNaoEnc consMdFeNaoEnc) + public static void ValidarSchema(this MDFeCosMDFeNaoEnc consMdFeNaoEnc, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlValidacao = consMdFeNaoEnc.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlValidacao, "consMDFeNaoEnc_v1.00.xsd"); + Validador.Valida(xmlValidacao, "consMDFeNaoEnc_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlValidacao, "consMDFeNaoEnc_v3.00.xsd"); + Validador.Valida(xmlValidacao, "consMDFeNaoEnc_v3.00.xsd", config); break; } } @@ -70,13 +73,15 @@ public static XmlDocument CriaRequestWs(this MDFeCosMDFeNaoEnc cosMdFeNaoEnc) return request; } - public static void SalvarXmlEmDisco(this MDFeCosMDFeNaoEnc cosMdFeNaoEnc) + public static void SalvarXmlEmDisco(this MDFeCosMDFeNaoEnc cosMdFeNaoEnc, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + if (config.NaoSalvarXml()) return; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + var caminhoXml = config.CaminhoSalvarXml; - var arquivoSalvar = caminhoXml + @"\" + cosMdFeNaoEnc.CNPJ + "-ped-sit.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, cosMdFeNaoEnc.CNPJ + "-ped-sit.xml"); FuncoesXml.ClasseParaArquivoXml(cosMdFeNaoEnc, arquivoSalvar); } diff --git a/MDFe.Classes/Extensoes/ExtMDFeEnviMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeEnviMDFe.cs index d1f085244..77e29cb7d 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeEnviMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeEnviMDFe.cs @@ -32,6 +32,7 @@ /********************************************************************************/ using System; +using System.IO; using System.Xml; using DFe.Utils; using MDFe.Classes.Servicos.Autorizacao; @@ -39,27 +40,29 @@ using MDFe.Utils.Flags; using MDFe.Utils.Validacao; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeEnviMDFe { - public static void Valida(this MDFeEnviMDFe enviMDFe) + public static void Valida(this MDFeEnviMDFe enviMDFe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + if (enviMDFe == null) throw new ArgumentException("Erro de assinatura, EnviMDFe esta null"); var xmlMdfe = FuncoesXml.ClasseParaXmlString(enviMDFe); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlMdfe, "enviMDFe_v1.00.xsd"); + Validador.Valida(xmlMdfe, "enviMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlMdfe, "enviMDFe_v3.00.xsd"); + Validador.Valida(xmlMdfe, "enviMDFe_v3.00.xsd", config); break; } - enviMDFe.MDFe.Valida(); + enviMDFe.MDFe.Valida(config); } public static XmlDocument CriaXmlRequestWs(this MDFeEnviMDFe enviMDFe) @@ -70,6 +73,14 @@ public static XmlDocument CriaXmlRequestWs(this MDFeEnviMDFe enviMDFe) return dadosEnvio; } + public static XmlDocument CriaXmlRequestWs(this Informacoes.MDFe mdfe) + { + var dadosEnvio = new XmlDocument(); + dadosEnvio.LoadXml(mdfe.XmlString()); + + return dadosEnvio; + } + public static string XmlString(this MDFeEnviMDFe enviMDFe) { var xmlString = FuncoesXml.ClasseParaXmlString(enviMDFe); @@ -77,17 +88,19 @@ public static string XmlString(this MDFeEnviMDFe enviMDFe) return xmlString; } - public static void SalvarXmlEmDisco(this MDFeEnviMDFe enviMDFe) + public static void SalvarXmlEmDisco(this MDFeEnviMDFe enviMDFe, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + if (config.NaoSalvarXml()) return; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + var caminhoXml = config.CaminhoSalvarXml; - var arquivoSalvar = caminhoXml + @"\" + enviMDFe.MDFe.Chave() + "-completo-mdfe.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, enviMDFe.MDFe.Chave() + "-completo-mdfe.xml"); FuncoesXml.ClasseParaArquivoXml(enviMDFe, arquivoSalvar); - enviMDFe.MDFe.SalvarXmlEmDisco(); + enviMDFe.MDFe.SalvarXmlEmDisco(null, config); } } } \ No newline at end of file diff --git a/MDFe.Classes/Extensoes/ExtMDFeEvCancMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeEvCancMDFe.cs index 18e1980d9..3adbbf565 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeEvCancMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeEvCancMDFe.cs @@ -37,21 +37,23 @@ using MDFe.Utils.Flags; using MDFe.Utils.Validacao; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeEvCancMDFe { - public static void ValidaSchema(this MDFeEvCancMDFe evCancMDFe) + public static void ValidaSchema(this MDFeEvCancMDFe evCancMDFe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlCancelamento = evCancMDFe.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlCancelamento, "evCancMDFe_v1.00.xsd"); + Validador.Valida(xmlCancelamento, "evCancMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlCancelamento, "evCancMDFe_v3.00.xsd"); + Validador.Valida(xmlCancelamento, "evCancMDFe_v3.00.xsd", config); break; } } diff --git a/MDFe.Classes/Extensoes/ExtMDFeEvEncMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeEvEncMDFe.cs index e0b32c485..e87e5090e 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeEvEncMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeEvEncMDFe.cs @@ -37,21 +37,23 @@ using MDFe.Utils.Flags; using MDFe.Utils.Validacao; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeEvEncMDFe { - public static void ValidaSchema(this MDFeEvEncMDFe evEncMDFe) + public static void ValidaSchema(this MDFeEvEncMDFe evEncMDFe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlEncerramento = evEncMDFe.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlEncerramento, "evEncMDFe_v1.00.xsd"); + Validador.Valida(xmlEncerramento, "evEncMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlEncerramento, "evEncMDFe_v3.00.xsd"); + Validador.Valida(xmlEncerramento, "evEncMDFe_v3.00.xsd", config); break; } } diff --git a/MDFe.Classes/Extensoes/ExtMDFeEvIncCondutorMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeEvIncCondutorMDFe.cs index 1d6c8361c..2eaec8a35 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeEvIncCondutorMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeEvIncCondutorMDFe.cs @@ -37,21 +37,23 @@ using MDFe.Utils.Flags; using MDFe.Utils.Validacao; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeEvIncCondutorMDFe { - public static void ValidaSchema(this MDFeEvIncCondutorMDFe evIncCondutorMDFe) + public static void ValidaSchema(this MDFeEvIncCondutorMDFe evIncCondutorMDFe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlIncluirCondutor = evIncCondutorMDFe.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlIncluirCondutor, "evIncCondutorMDFe_v1.00.xsd"); + Validador.Valida(xmlIncluirCondutor, "evIncCondutorMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlIncluirCondutor, "evIncCondutorMDFe_v3.00.xsd"); + Validador.Valida(xmlIncluirCondutor, "evIncCondutorMDFe_v3.00.xsd", config); break; } } diff --git a/MDFe.Classes/Extensoes/ExtMDFeEvIncDFeMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeEvIncDFeMDFe.cs new file mode 100644 index 000000000..7137232ce --- /dev/null +++ b/MDFe.Classes/Extensoes/ExtMDFeEvIncDFeMDFe.cs @@ -0,0 +1,63 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using DFe.Utils; +using MDFe.Classes.Informacoes.Evento.CorpoEvento; +using MDFe.Utils.Configuracoes; +using MDFe.Utils.Flags; +using MDFe.Utils.Validacao; + +namespace MDFe.Classes.Extensoes +{ + public static class ExtMDFeEvIncDFeMDFe + { + public static void ValidaSchema(this MDFeEvIncDFeMDFe evIncDFeMDFe, MDFeConfiguracao cfgMdfe = null) + { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var xmlIncluirDFe = evIncDFeMDFe.XmlString(); + + switch (config.VersaoWebService.VersaoLayout) + { + case VersaoServico.Versao300: + Validador.Valida(xmlIncluirDFe, "evInclusaoDFeMDFe_v3.00.xsd", config); + break; + } + } + + public static string XmlString(this MDFeEvIncDFeMDFe evIncDFeMDFe) + { + return FuncoesXml.ClasseParaXmlString(evIncDFeMDFe); + } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Extensoes/ExtMDFeEventoMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeEventoMDFe.cs index 5bb02e081..f6d460da6 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeEventoMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeEventoMDFe.cs @@ -31,7 +31,6 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using System.Xml; using DFe.Utils; using DFe.Utils.Assinatura; using MDFe.Classes.Informacoes.Evento; @@ -39,48 +38,64 @@ using MDFe.Utils.Configuracoes; using MDFe.Utils.Flags; using MDFe.Utils.Validacao; +using System.IO; +using System.Xml; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeEventoMDFe { - public static void ValidarSchema(this MDFeEventoMDFe evento) + public static void ValidarSchema(this MDFeEventoMDFe evento, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlValido = evento.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlValido, "eventoMDFe_v1.00.xsd"); + Validador.Valida(xmlValido, "eventoMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlValido, "eventoMDFe_v3.00.xsd"); + Validador.Valida(xmlValido, "eventoMDFe_v3.00.xsd", config); break; } var tipoEvento = evento.InfEvento.DetEvento.EventoContainer.GetType(); - if (tipoEvento == typeof (MDFeEvCancMDFe)) + if (tipoEvento == typeof(MDFeEvCancMDFe)) { - var objetoXml = (MDFeEvCancMDFe) evento.InfEvento.DetEvento.EventoContainer; - objetoXml.ValidaSchema(); + var objetoXml = (MDFeEvCancMDFe)evento.InfEvento.DetEvento.EventoContainer; + objetoXml.ValidaSchema(config); } - if (tipoEvento == typeof (MDFeEvEncMDFe)) + if (tipoEvento == typeof(MDFeEvEncMDFe)) { var objetoXml = (MDFeEvEncMDFe)evento.InfEvento.DetEvento.EventoContainer; - objetoXml.ValidaSchema(); + objetoXml.ValidaSchema(config); } - if (tipoEvento == typeof (MDFeEvIncCondutorMDFe)) + if (tipoEvento == typeof(MDFeEvIncCondutorMDFe)) { var objetoXml = (MDFeEvIncCondutorMDFe)evento.InfEvento.DetEvento.EventoContainer; - objetoXml.ValidaSchema(); + objetoXml.ValidaSchema(config); } + if (tipoEvento == typeof(MDFeEvIncDFeMDFe)) + { + var objetoXml = (MDFeEvIncDFeMDFe)evento.InfEvento.DetEvento.EventoContainer; + + objetoXml.ValidaSchema(config); + } + if (tipoEvento == typeof(MDFeEvPagtoOperMDFe)) + { + var objetoXml = (MDFeEvPagtoOperMDFe)evento.InfEvento.DetEvento.EventoContainer; + + objetoXml.ValidaSchema(config); + } } public static XmlDocument CriaXmlRequestWs(this MDFeEventoMDFe evento) @@ -96,19 +111,23 @@ public static string XmlString(this MDFeEventoMDFe evento) return FuncoesXml.ClasseParaXmlString(evento); } - public static void Assinar(this MDFeEventoMDFe evento) + public static void Assinar(this MDFeEventoMDFe evento, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + evento.Signature = AssinaturaDigital.Assina(evento, evento.InfEvento.Id, - MDFeConfiguracao.X509Certificate2); + config.X509Certificate2); } - public static void SalvarXmlEmDisco(this MDFeEventoMDFe evento, string chave) + public static void SalvarXmlEmDisco(this MDFeEventoMDFe evento, string chave, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + if (config.NaoSalvarXml()) return; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + var caminhoXml = config.CaminhoSalvarXml; - var arquivoSalvar = caminhoXml + @"\" + chave + "-ped-eve.xml"; + var arquivoSalvar = Path.Combine(caminhoXml, chave + "-ped-eve.xml"); FuncoesXml.ClasseParaArquivoXml(evento, arquivoSalvar); } diff --git a/MDFe.Classes/Extensoes/ExtMDFeRetConsMDFeNao.cs b/MDFe.Classes/Extensoes/ExtMDFeRetConsMDFeNao.cs index befc9f4dd..b9ff916d3 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeRetConsMDFeNao.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeRetConsMDFeNao.cs @@ -31,21 +31,24 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.IO; using DFe.Utils; using MDFe.Classes.Retorno.MDFeConsultaNaoEncerrado; using MDFe.Utils.Configuracoes; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeRetConsMDFeNao { - public static void SalvarXmlEmDisco(this MDFeRetConsMDFeNao retConsMdFeNao, string cnpj) + public static void SalvarXmlEmDisco(this MDFeRetConsMDFeNao retConsMdFeNao, string cnpj, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + if (config.NaoSalvarXml()) return; - var arquivoSalvar = caminhoXml + @"\" + cnpj + "-sit.xml"; + var caminhoXml = config.CaminhoSalvarXml; + + var arquivoSalvar = Path.Combine(caminhoXml, cnpj + "-sit.xml"); FuncoesXml.ClasseParaArquivoXml(retConsMdFeNao, arquivoSalvar); } diff --git a/MDFe.Classes/Extensoes/ExtMDFeRetConsReciMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeRetConsReciMDFe.cs index 7377588dc..8846136d9 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeRetConsReciMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeRetConsReciMDFe.cs @@ -31,21 +31,24 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.IO; using DFe.Utils; using MDFe.Classes.Retorno.MDFeRetRecepcao; using MDFe.Utils.Configuracoes; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeRetConsReciMDFe { - public static void SalvarXmlEmDisco(this MDFeRetConsReciMDFe consReciMdFe) + public static void SalvarXmlEmDisco(this MDFeRetConsReciMDFe consReciMdFe, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + if (config.NaoSalvarXml()) return; - var arquivoSalvar = caminhoXml + @"\" + consReciMdFe.NRec + "-pro-rec.xml"; + var caminhoXml = config.CaminhoSalvarXml; + + var arquivoSalvar = Path.Combine(caminhoXml, consReciMdFe.NRec + "-pro-rec.xml"); FuncoesXml.ClasseParaArquivoXml(consReciMdFe, arquivoSalvar); } diff --git a/MDFe.Classes/Extensoes/ExtMDFeRetConsSitMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeRetConsSitMDFe.cs index 22fd6f0c5..f5551c731 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeRetConsSitMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeRetConsSitMDFe.cs @@ -31,21 +31,24 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.IO; using DFe.Utils; using MDFe.Classes.Retorno.MDFeConsultaProtocolo; using MDFe.Utils.Configuracoes; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeRetConsSitMDFe { - public static void SalvarXmlEmDisco(this MDFeRetConsSitMDFe retConsSitMdFe, string chave) + public static void SalvarXmlEmDisco(this MDFeRetConsSitMDFe retConsSitMdFe, string chave, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + if (config.NaoSalvarXml()) return; - var arquivoSalvar = caminhoXml + @"\" + chave + "-sit.xml"; + var caminhoXml = config.CaminhoSalvarXml; + + var arquivoSalvar = Path.Combine(caminhoXml, chave + "-sit.xml"); FuncoesXml.ClasseParaArquivoXml(retConsSitMdFe, arquivoSalvar); } diff --git a/MDFe.Classes/Extensoes/ExtMDFeRetConsStatServ.cs b/MDFe.Classes/Extensoes/ExtMDFeRetConsStatServ.cs index 92192a92c..398e911e2 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeRetConsStatServ.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeRetConsStatServ.cs @@ -31,21 +31,24 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.IO; using DFe.Utils; using MDFe.Classes.Retorno.MDFeStatusServico; using MDFe.Utils.Configuracoes; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeRetConsStatServ { - public static void SalvarXmlEmDisco(this MDFeRetConsStatServ retConsStatServ) + public static void SalvarXmlEmDisco(this MDFeRetConsStatServ retConsStatServ, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + if (config.NaoSalvarXml()) return; - var arquivoSalvar = caminhoXml + @"\-retorno-status-servico.xml"; + var caminhoXml = config.CaminhoSalvarXml; + + var arquivoSalvar = Path.Combine(caminhoXml, "-retorno-status-servico.xml"); FuncoesXml.ClasseParaArquivoXml(retConsStatServ, arquivoSalvar); } diff --git a/MDFe.Classes/Extensoes/ExtMDFeRetEnviMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeRetEnviMDFe.cs index a21230de9..4f255e81e 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeRetEnviMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeRetEnviMDFe.cs @@ -31,21 +31,24 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.IO; using DFe.Utils; using MDFe.Classes.Retorno.MDFeRecepcao; using MDFe.Utils.Configuracoes; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeRetEnviMDFe { - public static void SalvarXmlEmDisco(this MDFeRetEnviMDFe retEnviMDFe) + public static void SalvarXmlEmDisco(this MDFeRetEnviMDFe retEnviMDFe, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + if (config.NaoSalvarXml()) return; - var arquivoSalvar = caminhoXml + @"\" + retEnviMDFe.InfRec.NRec + "-rec.xml"; + var caminhoXml = config.CaminhoSalvarXml; + + var arquivoSalvar = Path.Combine(caminhoXml, retEnviMDFe.InfRec.NRec + "-rec.xml"); FuncoesXml.ClasseParaArquivoXml(retEnviMDFe, arquivoSalvar); } diff --git a/MDFe.Classes/Extensoes/ExtMDFeRetEventoMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeRetEventoMDFe.cs index df32c7261..a0af8f548 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeRetEventoMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeRetEventoMDFe.cs @@ -31,21 +31,24 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.IO; using DFe.Utils; using MDFe.Classes.Retorno.MDFeEvento; using MDFe.Utils.Configuracoes; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeRetEventoMDFe { - public static void SalvarXmlEmDisco(this MDFeRetEventoMDFe retEvento, string chave) + public static void SalvarXmlEmDisco(this MDFeRetEventoMDFe retEvento, string chave, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + if (config.NaoSalvarXml()) return; - var arquivoSalvar = caminhoXml + @"\" + chave + "-env.xml"; + var caminhoXml = config.CaminhoSalvarXml; + + var arquivoSalvar = Path.Combine(caminhoXml, chave + "-env.xml"); FuncoesXml.ClasseParaArquivoXml(retEvento, arquivoSalvar); } diff --git a/MDFe.Classes/Extensoes/ExtVersaoServico.cs b/MDFe.Classes/Extensoes/ExtVersaoServico.cs index 93cf49e32..4fafad483 100644 --- a/MDFe.Classes/Extensoes/ExtVersaoServico.cs +++ b/MDFe.Classes/Extensoes/ExtVersaoServico.cs @@ -33,7 +33,7 @@ using MDFe.Utils.Flags; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtVersaoServico { diff --git a/MDFe.Classes/Extensoes/ExtevPagtoOperMDFe.cs b/MDFe.Classes/Extensoes/ExtevPagtoOperMDFe.cs new file mode 100644 index 000000000..e2712abc1 --- /dev/null +++ b/MDFe.Classes/Extensoes/ExtevPagtoOperMDFe.cs @@ -0,0 +1,30 @@ +using DFe.Utils; +using MDFe.Classes.Informacoes.Evento.CorpoEvento; +using MDFe.Utils.Configuracoes; +using MDFe.Utils.Flags; +using MDFe.Utils.Validacao; + +namespace MDFe.Classes.Extensoes +{ + public static class ExtevPagtoOperMDFe + { + public static void ValidaSchema(this MDFeEvPagtoOperMDFe evIncDFeMDFe, MDFeConfiguracao cfgMdfe = null) + { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var ev = evIncDFeMDFe.XmlString(); + + switch (config.VersaoWebService.VersaoLayout) + { + case VersaoServico.Versao300: + Validador.Valida(ev, "evPagtoOperMDFe_v3.00.xsd", config); + break; + } + } + + public static string XmlString(this MDFeEvPagtoOperMDFe evIncDFeMDFe) + { + return FuncoesXml.ClasseParaXmlString(evIncDFeMDFe); + } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Flags/MDFeCUnid.cs b/MDFe.Classes/Flags/MDFeCUnid.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Flags/MDFeCategCombVeic.cs b/MDFe.Classes/Flags/MDFeCategCombVeic.cs new file mode 100644 index 000000000..8ecd8e1eb --- /dev/null +++ b/MDFe.Classes/Flags/MDFeCategCombVeic.cs @@ -0,0 +1,37 @@ +using System.Xml.Serialization; + +namespace MDFe.Classes.Flags +{ + public enum MDFeCategCombVeic + { + [XmlEnum("02")] + VeiculoComercial2Eixos = 02, + + [XmlEnum("04")] + VeiculoComercial3Eixos = 03, + + [XmlEnum("06")] + VeiculoComercial4Eixos = 04, + + [XmlEnum("07")] + VeiculoComercial5Eixos = 05, + + [XmlEnum("08")] + VeiculoComercial6Eixos = 06, + + [XmlEnum("10")] + VeiculoComercial7Eixos = 07, + + [XmlEnum("11")] + VeiculoComercial8Eixos = 08, + + [XmlEnum("12")] + VeiculoComercial9Eixos = 09, + + [XmlEnum("13")] + VeiculoComercial10Eixos = 10, + + [XmlEnum("14")] + VeiculoComercialAcimaDe10Eixos = 14 + } +} \ No newline at end of file diff --git a/MDFe.Classes/Flags/MDFeIdentificacaoProcessoEmissao.cs b/MDFe.Classes/Flags/MDFeIdentificacaoProcessoEmissao.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Flags/MDFeIndAltoDesemp.cs b/MDFe.Classes/Flags/MDFeIndAltoDesemp.cs new file mode 100644 index 000000000..5403b2d95 --- /dev/null +++ b/MDFe.Classes/Flags/MDFeIndAltoDesemp.cs @@ -0,0 +1,12 @@ +using System.Xml.Serialization; + +namespace MDFe.Classes.Flags +{ + public enum MDFeIndAltoDesemp + { + [XmlEnum("0")] + NaoAltoDesempenho = 0, + [XmlEnum("1")] + AltoDesempenho = 1 + } +} diff --git a/MDFe.Classes/Flags/MDFeIndPag.cs b/MDFe.Classes/Flags/MDFeIndPag.cs new file mode 100644 index 000000000..71e870574 --- /dev/null +++ b/MDFe.Classes/Flags/MDFeIndPag.cs @@ -0,0 +1,12 @@ +using System.Xml.Serialization; + +namespace MDFe.Classes.Flags +{ + public enum MDFeIndPag + { + [XmlEnum("0")] + PagamentoVista = 0, + [XmlEnum("1")] + PagamentoPrazo = 1 + } +} diff --git a/MDFe.Classes/Flags/MDFeModal.cs b/MDFe.Classes/Flags/MDFeModal.cs old mode 100755 new mode 100644 index fd4550609..51fcb092b --- a/MDFe.Classes/Flags/MDFeModal.cs +++ b/MDFe.Classes/Flags/MDFeModal.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.ComponentModel; using System.Xml.Serialization; namespace MDFe.Classes.Flags @@ -37,12 +38,16 @@ namespace MDFe.Classes.Flags public enum MDFeModal { [XmlEnum("1")] + [Description("Rodoviário")] Rodoviario = 1, [XmlEnum("2")] + [Description("Aéreo")] Aereo = 2, [XmlEnum("3")] + [Description("Aquaviário")] Aquaviario = 3, [XmlEnum("4")] - Ferroviari = 4 + [Description("Ferroviário")] + Ferroviario = 4 } } \ No newline at end of file diff --git a/MDFe.Classes/Flags/MDFeTipoEmissao.cs b/MDFe.Classes/Flags/MDFeTipoEmissao.cs old mode 100755 new mode 100644 index 7b0b7ae1b..fd92cda97 --- a/MDFe.Classes/Flags/MDFeTipoEmissao.cs +++ b/MDFe.Classes/Flags/MDFeTipoEmissao.cs @@ -39,6 +39,8 @@ public enum MDFeTipoEmissao [XmlEnum("1")] Normal = 1, [XmlEnum("2")] - Contingencia = 2 + Contingencia = 2, + [XmlEnum("3")] + RegimeEspecialNFF = 3 } } \ No newline at end of file diff --git a/MDFe.Classes/Flags/MDFeTipoEmitente.cs b/MDFe.Classes/Flags/MDFeTipoEmitente.cs old mode 100755 new mode 100644 index 47a76ba2a..d351d7431 --- a/MDFe.Classes/Flags/MDFeTipoEmitente.cs +++ b/MDFe.Classes/Flags/MDFeTipoEmitente.cs @@ -39,6 +39,8 @@ public enum MDFeTipoEmitente [XmlEnum("1")] PrestadorServicoDeTransporte = 1, [XmlEnum("2")] - TransportadorCargaPropria = 2 + TransportadorCargaPropria = 2, + [XmlEnum("3")] + PrestadorServicoDeTransporteCTeGlobalizado = 3 } } \ No newline at end of file diff --git a/MDFe.Classes/Flags/MDFeTpCar.cs b/MDFe.Classes/Flags/MDFeTpCar.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Flags/MDFeTpCarga.cs b/MDFe.Classes/Flags/MDFeTpCarga.cs new file mode 100644 index 000000000..1781b6bd7 --- /dev/null +++ b/MDFe.Classes/Flags/MDFeTpCarga.cs @@ -0,0 +1,43 @@ +using System.Xml.Serialization; + +namespace MDFe.Classes.Flags +{ + public enum MDFeTpCarga + { + [XmlEnum("01")] + GranelSolido = 01, + + [XmlEnum("02")] + GranelLiquido = 02, + + [XmlEnum("03")] + Frigorificada = 03, + + [XmlEnum("04")] + Conteinerizada = 04, + + [XmlEnum("05")] + CargaGeral = 05, + + [XmlEnum("06")] + Neogranel = 06, + + [XmlEnum("07")] + PerigosaGranelSolido = 07, + + [XmlEnum("08")] + PerigosaGranelLiquido = 08, + + [XmlEnum("09")] + PerigosaCargaFrigorificada = 09, + + [XmlEnum("10")] + PerigosaCargaConteinerizada = 10, + + [XmlEnum("11")] + PerigosaCargaGeral = 11, + + [XmlEnum("12")] + GranelPressurizada = 12 + } +} \ No newline at end of file diff --git a/MDFe.Classes/Flags/MDFeTpComp.cs b/MDFe.Classes/Flags/MDFeTpComp.cs new file mode 100644 index 000000000..ef6bc8992 --- /dev/null +++ b/MDFe.Classes/Flags/MDFeTpComp.cs @@ -0,0 +1,22 @@ +using System.Xml.Serialization; + +namespace MDFe.Classes.Flags +{ + public enum MDFeTpComp + { + [XmlEnum("01")] + ValePedagio = 01, + + [XmlEnum("02")] + ImpostosTaxasEContribuicoes = 02, + + [XmlEnum("03")] + DespesasBancariasEMeiosDePagamentoOutras = 03, + + [XmlEnum("04")] + Frete = 04, + + [XmlEnum("99")] + Outros = 99 + } +} \ No newline at end of file diff --git a/MDFe.Classes/Flags/MDFeTpProp.cs b/MDFe.Classes/Flags/MDFeTpProp.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Flags/MDFeTpRod.cs b/MDFe.Classes/Flags/MDFeTpRod.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Flags/MDFeTpUnidCarga.cs b/MDFe.Classes/Flags/MDFeTpUnidCarga.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Flags/MDFeTpUnidCargaVazia.cs b/MDFe.Classes/Flags/MDFeTpUnidCargaVazia.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Flags/MDFeTpUnidTransp.cs b/MDFe.Classes/Flags/MDFeTpUnidTransp.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Flags/MDFeVersaoModal.cs b/MDFe.Classes/Flags/MDFeVersaoModal.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Informacoes/ConsultaNaoEncerrados/MDFeCosMDFeNaoEnc.cs b/MDFe.Classes/Informacoes/ConsultaNaoEncerrados/MDFeCosMDFeNaoEnc.cs old mode 100755 new mode 100644 index 2dc4be8b5..8508cb69d --- a/MDFe.Classes/Informacoes/ConsultaNaoEncerrados/MDFeCosMDFeNaoEnc.cs +++ b/MDFe.Classes/Informacoes/ConsultaNaoEncerrados/MDFeCosMDFeNaoEnc.cs @@ -33,7 +33,7 @@ using System; using System.Xml.Serialization; using DFe.Classes.Flags; -using MDFe.Utils.Flags; +using VersaoServico = MDFe.Utils.Flags.VersaoServico; namespace MDFe.Classes.Informacoes.ConsultaNaoEncerrados { @@ -58,5 +58,8 @@ public MDFeCosMDFeNaoEnc() [XmlElement(ElementName = "CNPJ")] public string CNPJ { get; set; } + + [XmlElement(ElementName = "CPF")] + public string CPF { get; set; } } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/ConsultaProtocolo/MDFeConsSitMDFe.cs b/MDFe.Classes/Informacoes/ConsultaProtocolo/MDFeConsSitMDFe.cs old mode 100755 new mode 100644 index bf188a526..5c2f4e778 --- a/MDFe.Classes/Informacoes/ConsultaProtocolo/MDFeConsSitMDFe.cs +++ b/MDFe.Classes/Informacoes/ConsultaProtocolo/MDFeConsSitMDFe.cs @@ -33,7 +33,7 @@ using System; using System.Xml.Serialization; using DFe.Classes.Flags; -using MDFe.Utils.Flags; +using VersaoServico = MDFe.Utils.Flags.VersaoServico; namespace MDFe.Classes.Informacoes.ConsultaProtocolo { diff --git a/MDFe.Classes/Informacoes/Evento/CorpoEvento/MDFeEvCancMDFe.cs b/MDFe.Classes/Informacoes/Evento/CorpoEvento/MDFeEvCancMDFe.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Informacoes/Evento/CorpoEvento/MDFeEvEncMDFe.cs b/MDFe.Classes/Informacoes/Evento/CorpoEvento/MDFeEvEncMDFe.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Informacoes/Evento/CorpoEvento/MDFeEvIncCondutorMDFe.cs b/MDFe.Classes/Informacoes/Evento/CorpoEvento/MDFeEvIncCondutorMDFe.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Informacoes/Evento/CorpoEvento/MDFeEvIncDFeMDFe.cs b/MDFe.Classes/Informacoes/Evento/CorpoEvento/MDFeEvIncDFeMDFe.cs new file mode 100644 index 000000000..df47a3dd4 --- /dev/null +++ b/MDFe.Classes/Informacoes/Evento/CorpoEvento/MDFeEvIncDFeMDFe.cs @@ -0,0 +1,75 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ +using System; +using System.Collections.Generic; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes.Evento.CorpoEvento +{ + [Serializable] + [XmlRoot(ElementName = "evIncDFeMDFe")] + public class MDFeEvIncDFeMDFe : MDFeEventoContainer + { + public MDFeEvIncDFeMDFe() + { + DescEvento = "Inclusao DF-e"; + } + + [XmlElement(ElementName = "descEvento")] + public string DescEvento { get; set; } + + [XmlElement(ElementName = "nProt")] + public string NProt { get; set; } + + [XmlElement(ElementName = "cMunCarrega")] + public string CMunCarrega { get; set; } + + [XmlElement(ElementName = "xMunCarrega")] + public string XMunCarrega { get; set; } + + [XmlElement(ElementName = "infDoc")] + public List InfDoc { get; set; } + } + + public class MDFeInfDocInc + { + [XmlElement(ElementName = "cMunDescarga")] + public string CMunDescarga { get; set; } + + [XmlElement(ElementName = "xMunDescarga")] + public string XMunDescarga { get; set; } + + [XmlElement(ElementName = "chNFe")] + public string ChNFe { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/Evento/CorpoEvento/MDFeEvPagtoOperMDFe.cs b/MDFe.Classes/Informacoes/Evento/CorpoEvento/MDFeEvPagtoOperMDFe.cs new file mode 100644 index 000000000..01a100836 --- /dev/null +++ b/MDFe.Classes/Informacoes/Evento/CorpoEvento/MDFeEvPagtoOperMDFe.cs @@ -0,0 +1,72 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.Collections.Generic; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes.Evento.CorpoEvento +{ + [Serializable] + public class MDFeEvPagtoOperMDFe : MDFeEventoContainer + { + public MDFeEvPagtoOperMDFe() + { + DescEvento = "Pagamento Operacao MDF-e"; + } + + /// + /// 1 - Descrição do evento + /// + [XmlElement("descEvento")] + public string DescEvento { get; set; } + + /// + /// 1 - Número do protocolo de autorização do MDF-e + /// + [XmlElement("nProt")] + public string NProt { get; set; } + + /// + /// 1 - Informações do total de viagens acobertadas pelo Evento “pagamento do frete” + /// + [XmlElement("infViagens")] + public MDFeInfViagens InfViagens { get; set; } + + /// + /// 1 - Grupo de Informações dos pgto do MDF-e + /// + [XmlElement(ElementName = "infPag")] + public List InfPag { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/Evento/Flags/MDFeTipoEvento.cs b/MDFe.Classes/Informacoes/Evento/Flags/MDFeTipoEvento.cs old mode 100755 new mode 100644 index 67af2f194..5d6c4dff2 --- a/MDFe.Classes/Informacoes/Evento/Flags/MDFeTipoEvento.cs +++ b/MDFe.Classes/Informacoes/Evento/Flags/MDFeTipoEvento.cs @@ -42,7 +42,15 @@ public enum MDFeTipoEvento Encerramento = 110112, [XmlEnum("110114")] InclusaoDeCondutor = 110114, + [XmlEnum("110115")] + InclusaoDFe = 110115, [XmlEnum("310620")] - RegistroDePassagem = 310620 + RegistroDePassagem = 310620, + [XmlEnum("510620")] + RegistroDePassagemAutomatico = 510620, + [XmlEnum("110116")] + PagamentoOperacaoMDFe = 110116, + [XmlEnum("310112")] + EncerramentoFisco = 310112 } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/Evento/MDFeDetEvento.cs b/MDFe.Classes/Informacoes/Evento/MDFeDetEvento.cs old mode 100755 new mode 100644 index d322420fd..d42823310 --- a/MDFe.Classes/Informacoes/Evento/MDFeDetEvento.cs +++ b/MDFe.Classes/Informacoes/Evento/MDFeDetEvento.cs @@ -30,10 +30,10 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using System; -using System.Xml.Serialization; using MDFe.Classes.Informacoes.Evento.CorpoEvento; using MDFe.Utils.Flags; +using System; +using System.Xml.Serialization; namespace MDFe.Classes.Informacoes.Evento { @@ -51,6 +51,8 @@ public MDFeDetEvento() [XmlElement("evCancMDFe", typeof(MDFeEvCancMDFe), Namespace = "http://www.portalfiscal.inf.br/mdfe")] [XmlElement("evEncMDFe", typeof(MDFeEvEncMDFe), Namespace = "http://www.portalfiscal.inf.br/mdfe")] [XmlElement("evIncCondutorMDFe", typeof(MDFeEvIncCondutorMDFe), Namespace = "http://www.portalfiscal.inf.br/mdfe")] + [XmlElement("evIncDFeMDFe", typeof(MDFeEvIncDFeMDFe), Namespace = "http://www.portalfiscal.inf.br/mdfe")] + [XmlElement("evPagtoOperMDFe", typeof(MDFeEvPagtoOperMDFe), Namespace = "http://www.portalfiscal.inf.br/mdfe")] public MDFeEventoContainer EventoContainer { get; set; } } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/Evento/MDFeEventoContainer.cs b/MDFe.Classes/Informacoes/Evento/MDFeEventoContainer.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Informacoes/Evento/MDFeEventoMDFe.cs b/MDFe.Classes/Informacoes/Evento/MDFeEventoMDFe.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Informacoes/Evento/MDFeInfEvento.cs b/MDFe.Classes/Informacoes/Evento/MDFeInfEvento.cs old mode 100755 new mode 100644 index 27b202ccd..9c2bdf845 --- a/MDFe.Classes/Informacoes/Evento/MDFeInfEvento.cs +++ b/MDFe.Classes/Informacoes/Evento/MDFeInfEvento.cs @@ -38,15 +38,27 @@ using DFe.Utils; using MDFe.Classes.Informacoes.Evento.Flags; using MDFe.Utils.Configuracoes; -using MDFe.Utils.Flags; +using VersaoServico = MDFe.Utils.Flags.VersaoServico; namespace MDFe.Classes.Informacoes.Evento { [Serializable] public class MDFeInfEvento { + /// + /// Construtor para serialização + /// + private MDFeInfEvento() + { + } + + public MDFeInfEvento(VersaoServico? versaoServico = null) + { + _versaoServico = versaoServico ?? MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout; + } + [XmlIgnore] - private readonly VersaoServico _versaoServico = MDFeConfiguracao.VersaoWebService.VersaoLayout; + private readonly VersaoServico _versaoServico; [XmlAttribute(AttributeName = "Id")] public string Id { get; set; } @@ -70,6 +82,8 @@ public string COrgaoProxy [XmlElement(ElementName = "CNPJ")] public string CNPJ { get; set; } + public string CPF { get; set; } + [XmlElement(ElementName = "chMDFe")] public string ChMDFe { get; set; } diff --git a/MDFe.Classes/Informacoes/MDFe.cs b/MDFe.Classes/Informacoes/MDFe.cs old mode 100755 new mode 100644 index eeffa8e71..ccc462c5d --- a/MDFe.Classes/Informacoes/MDFe.cs +++ b/MDFe.Classes/Informacoes/MDFe.cs @@ -50,6 +50,9 @@ public MDFe() [XmlElement(ElementName = "infMDFe")] public MDFeInfMDFe InfMDFe { get; set; } + [XmlElement(ElementName = "infMDFeSupl")] + public MdfeInfMDFeSupl InfMDFeSupl { get; set; } + [XmlElement(ElementName = "Signature", Namespace = "http://www.w3.org/2000/09/xmldsig#")] public Signature Signature { get; set; } diff --git a/MDFe.Classes/Informacoes/MDFeAereo.cs b/MDFe.Classes/Informacoes/MDFeAereo.cs old mode 100755 new mode 100644 index f087f7239..8ffd73335 --- a/MDFe.Classes/Informacoes/MDFeAereo.cs +++ b/MDFe.Classes/Informacoes/MDFeAereo.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Utils; diff --git a/MDFe.Classes/Informacoes/MDFeAquav.cs b/MDFe.Classes/Informacoes/MDFeAquav.cs old mode 100755 new mode 100644 index bbeaf2d92..d16e5e4d4 --- a/MDFe.Classes/Informacoes/MDFeAquav.cs +++ b/MDFe.Classes/Informacoes/MDFeAquav.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; @@ -109,11 +110,18 @@ public class MDFeAquav : MDFeModalContainer public List InfEmbCombs { get; set; } /// - /// 1 - Informações das Undades de Carga vazias + /// 1 - Informações das Unidades de Carga vazias /// [XmlElement(ElementName = "infUnidCargaVazia")] public List InfUnidCargaVazias { get; set; } + /// + /// 1 - Informações das Unidades de Transporte vazias + /// public List infUnidTranspVazia { get; set; } - } + + /// + /// 1 - Maritime Mobile Service Identify + /// + public string MMSI { get; set; } } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeAutXML.cs b/MDFe.Classes/Informacoes/MDFeAutXML.cs old mode 100755 new mode 100644 index 8b23734bd..d2c908015 --- a/MDFe.Classes/Informacoes/MDFeAutXML.cs +++ b/MDFe.Classes/Informacoes/MDFeAutXML.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeComp.cs b/MDFe.Classes/Informacoes/MDFeComp.cs new file mode 100644 index 000000000..5cd0fd5ac --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeComp.cs @@ -0,0 +1,69 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using DFe.Classes; +using MDFe.Classes.Flags; +using System; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeComp + { + /// + /// 1 - Tipo do Componente. + /// + [XmlElement(ElementName = "tpComp")] + public MDFeTpComp TpComp { get; set; } + + [XmlIgnore] + private decimal _vComp { get; set; } + + /// + /// 1 - Valor do Componente. + /// + [XmlElement(ElementName = "vComp")] + public decimal VComp + { + get { return _vComp.Arredondar(2); } + set { _vComp = value.Arredondar(2); } + } + + /// + /// 1 - Descrição do Componente tipo Outros. + /// + [XmlElement(ElementName = "xComp")] + public string XComp { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeCondutor.cs b/MDFe.Classes/Informacoes/MDFeCondutor.cs old mode 100755 new mode 100644 index fa2dbad40..eb55e654f --- a/MDFe.Classes/Informacoes/MDFeCondutor.cs +++ b/MDFe.Classes/Informacoes/MDFeCondutor.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeDisp.cs b/MDFe.Classes/Informacoes/MDFeDisp.cs old mode 100755 new mode 100644 index 3a3148bae..91f86a26b --- a/MDFe.Classes/Informacoes/MDFeDisp.cs +++ b/MDFe.Classes/Informacoes/MDFeDisp.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes; @@ -42,29 +43,44 @@ public class MDFeDisp private decimal _vValePed; /// - /// 3 - CNPJ da empresa fornecedora do ValePedágio + /// 4 - CNPJ da empresa fornecedora do ValePedágio /// [XmlElement(ElementName = "CNPJForn")] public string CNPJForn { get; set; } /// - /// 3 - CNPJ do responsável pelo pagamento do Vale-Pedágio + /// 4 - CNPJ do responsável pelo pagamento do Vale-Pedágio /// [XmlElement(ElementName = "CNPJPg")] public string CNPJPg { get; set; } + /// + /// 4 - CNPJ do responsável pelo pagamento do Vale-Pedágio + /// public string CPFPg { get; set; } /// - /// 3 - Número do comprovante de compra + /// 4 - Número do comprovante de compra /// [XmlElement(ElementName = "nCompra")] public string NCompra { get; set; } - public decimal vValePed + /// + /// 4 - Valor do Vale-Pedagio + /// + [XmlElement(ElementName = "vValePed")] + public decimal VValePed { get { return _vValePed.Arredondar(2); } set { _vValePed = value.Arredondar(2); } } + + /// + /// Tipo do Vale Pedágio + /// + [XmlElement(ElementName = "tpValePed")] + public MDFeTpValePed? TpValePed { get; set; } + + public bool TpValePedSpecified => TpValePed.HasValue; } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeEmit.cs b/MDFe.Classes/Informacoes/MDFeEmit.cs old mode 100755 new mode 100644 index f8c315ec8..1850966fd --- a/MDFe.Classes/Informacoes/MDFeEmit.cs +++ b/MDFe.Classes/Informacoes/MDFeEmit.cs @@ -51,12 +51,23 @@ public MDFeEmit() [XmlElement(ElementName = "CNPJ")] public string CNPJ { get; set; } + /// + /// 2 - CPF do emitente + /// + [XmlElement(ElementName = "CPF")] + public string CPF { get; set; } + /// /// 2 - Inscrição Estadual do emitemte /// [XmlElement(ElementName = "IE")] public string IE { get; set; } + public bool ShouldSerializeIE() + { + return !string.IsNullOrEmpty(IE); + } + /// /// 2 - Razão social ou Nome do emitente /// diff --git a/MDFe.Classes/Informacoes/MDFeFerrov.cs b/MDFe.Classes/Informacoes/MDFeFerrov.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Informacoes/MDFeIde.cs b/MDFe.Classes/Informacoes/MDFeIde.cs old mode 100755 new mode 100644 index 81f39ecfe..55455e917 --- a/MDFe.Classes/Informacoes/MDFeIde.cs +++ b/MDFe.Classes/Informacoes/MDFeIde.cs @@ -30,28 +30,36 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using System; -using System.Collections.Generic; -using System.Xml.Serialization; using DFe.Classes.Entidades; using DFe.Classes.Extensoes; using DFe.Classes.Flags; using DFe.Utils; using MDFe.Classes.Flags; using MDFe.Utils.Configuracoes; -using MDFe.Utils.Flags; +using System; +using System.Collections.Generic; +using System.Xml.Serialization; +using VersaoServico = MDFe.Utils.Flags.VersaoServico; namespace MDFe.Classes.Informacoes { [Serializable] public class MDFeIde { - public MDFeIde() + private MDFeIde() { InfMunCarrega = new List(); InfPercurso = new List(); } + public MDFeIde(VersaoServico? versaoServico = null) : this() + { + _versaoServico = versaoServico ?? MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout; + } + + [XmlIgnore] + private readonly VersaoServico? _versaoServico; + /// /// 2 - Código da UF do emitente do MDF-e. /// @@ -140,7 +148,8 @@ public string ProxyDhEmi { get { - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + var versaoLayout = _versaoServico ?? MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout; + switch (versaoLayout) { case VersaoServico.Versao100: return DhEmi.ParaDataHoraStringSemUtc(); @@ -226,12 +235,42 @@ public string ProxyUFFim /// Proxy para dhIniViagem /// [XmlElement(ElementName = "dhIniViagem")] - public string ProxyDhIniViagem { + public string ProxyDhIniViagem + { get { - return DhIniViagem.ParaDataHoraStringSemUtc(); + var versaoLayout = _versaoServico ?? MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout; + + switch (versaoLayout) + { + case VersaoServico.Versao100: + return DhIniViagem.ParaDataHoraStringSemUtc(); + case VersaoServico.Versao300: + return DhIniViagem.ParaDataHoraStringUtc(); + default: + throw new InvalidOperationException("Versão Inválida para MDF-e"); + } + } + set + { + if (value is null) + DhIniViagem = null; + else + DhIniViagem = DateTime.Parse(value); } - set { DhIniViagem = DateTime.Parse(value); } } + + /// + /// Indicador de participação do Canal Verde. + /// + [XmlElement(ElementName = "indCanalVerde")] + public string IndCanalVerde { get; set; } + + /// + /// Indicador de MDF-e com inclusão da Carga posterior + /// a emissão por evento de inclusão de DF-e. + /// + [XmlElement(ElementName = "indCarregaPosterior")] + public string IndCarregaPosterior { get; set; } } } diff --git a/MDFe.Classes/Informacoes/MDFeInfANTT.cs b/MDFe.Classes/Informacoes/MDFeInfANTT.cs new file mode 100644 index 000000000..561f646ef --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfANTT.cs @@ -0,0 +1,73 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.Collections.Generic; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfANTT + { + /// + /// 2 - Registro Nacional de Transportadores Rodoviários de Carga + /// + [XmlElement(ElementName = "RNTRC")] + public string RNTRC { get; set; } + + /// + /// 2 - Dados do CIOT + /// + [XmlElement(ElementName = "infCIOT")] + public List InfCIOT { get; set; } + + /// + /// 2 - Informações de Vale Pedágio + /// + [XmlElement(ElementName = "valePed")] + public MDFeValePed ValePed { get; set; } + + /// + /// 2 - Grupo de informações dos contratantes do serviço de transporte + /// + [XmlElement(ElementName = "infContratante")] + public List InfContratante { get; set; } + + /// + /// 2 - Informações do Pagamento do Frete + /// + [XmlElement(ElementName = "infPag")] + public List InfPag { get; set; } + } +} diff --git a/MDFe.Classes/Informacoes/MDFeInfAdic.cs b/MDFe.Classes/Informacoes/MDFeInfAdic.cs old mode 100755 new mode 100644 index 605557ddd..d3e4a7297 --- a/MDFe.Classes/Informacoes/MDFeInfAdic.cs +++ b/MDFe.Classes/Informacoes/MDFeInfAdic.cs @@ -30,8 +30,8 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; -using System.Collections.Generic; using System.Xml.Serialization; namespace MDFe.Classes.Informacoes diff --git a/MDFe.Classes/Informacoes/MDFeInfBanc.cs b/MDFe.Classes/Informacoes/MDFeInfBanc.cs new file mode 100644 index 000000000..689d4ae05 --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfBanc.cs @@ -0,0 +1,36 @@ +using System; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfBanc + { + /// + /// 1 - Número do Banco. + /// + [XmlElement(ElementName = "codBanco")] + public string CodBanco { get; set; } + + /// + /// 1 - Número da Agência. + /// + [XmlElement(ElementName = "codAgencia")] + public string CodAgencia { get; set; } + + /// + /// 1 -´Número do CNPJ da Instituição de + /// pagamento Eletrônico do frete. + /// + [XmlElement(ElementName = "CNPJIPEF")] + public string CNPJIPEF { get; set; } + + /// + /// 1 -Informar a chave PIX para recebimento do frete. + /// Pode ser email, CPF/ CNPJ (somente numeros), Telefone com a seguinte formatação + /// (+5599999999999) ou a chave aleatória gerada pela instituição. + /// + [XmlElement(ElementName = "PIX")] + public string PIX { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfCTe.cs b/MDFe.Classes/Informacoes/MDFeInfCTe.cs old mode 100755 new mode 100644 index 56615fb1a..fdaaff399 --- a/MDFe.Classes/Informacoes/MDFeInfCTe.cs +++ b/MDFe.Classes/Informacoes/MDFeInfCTe.cs @@ -71,5 +71,12 @@ public class MDFeInfCTe /// [XmlElement(ElementName = "peri")] public List Peri { get; set; } + + /// + /// Grupo de informações da Entrega Parcial (Corte de Voo). + /// MDF-e 3.0 + /// + [XmlElement(ElementName = "infEntregaParcial")] + public MDFeInfEntregaParcial InfEntregaParcial { get; set; } } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfContratante.cs b/MDFe.Classes/Informacoes/MDFeInfContratante.cs new file mode 100644 index 000000000..40839b96a --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfContratante.cs @@ -0,0 +1,33 @@ +using System; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfContratante + { + /// + /// 3 - Razão social ou Nome do contratante + /// + [XmlElement(ElementName = "xNome")] + public string XNome { get; set; } + + /// + /// 3 - Número do CPF do contratante do serviço + /// + [XmlElement(ElementName = "CPF")] + public string CPF { get; set; } + + /// + /// 3 - Número do CNPJ do contratante serviço + /// + [XmlElement(ElementName = "CNPJ")] + public string CNPJ { get; set; } + + /// + /// 3 - Identificador do contratante em caso de contratante estrangeiro + /// + [XmlElement(ElementName = "idEstrangeiro")] + public string IdEstrangeiro { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfDoc.cs b/MDFe.Classes/Informacoes/MDFeInfDoc.cs old mode 100755 new mode 100644 index b7cdc632a..f320e95d3 --- a/MDFe.Classes/Informacoes/MDFeInfDoc.cs +++ b/MDFe.Classes/Informacoes/MDFeInfDoc.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfEmbComb.cs b/MDFe.Classes/Informacoes/MDFeInfEmbComb.cs old mode 100755 new mode 100644 index 12006e513..9fddb53f9 --- a/MDFe.Classes/Informacoes/MDFeInfEmbComb.cs +++ b/MDFe.Classes/Informacoes/MDFeInfEmbComb.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; @@ -44,6 +45,10 @@ public class MDFeInfEmbComb [XmlElement(ElementName = "cEmbComb")] public string CEmbComb { get; set; } - public string xBalsa { get; set; } + /// + /// 2 - Código da embarcação do comboio + /// + [XmlElement(ElementName = "xBalsa")] + public string XBalsa { get; set; } } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfEntregaParcial.cs b/MDFe.Classes/Informacoes/MDFeInfEntregaParcial.cs new file mode 100644 index 000000000..36b39d2cf --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfEntregaParcial.cs @@ -0,0 +1,19 @@ +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + public class MDFeInfEntregaParcial + { + /// + /// 5 - Quantidade total de volumes + /// /// + [XmlElement(ElementName = "qtdTotal")] + public decimal QtdTotal { get; set; } + + /// + /// 5 - Quantidade de volumes enviados no MDF-e + /// + [XmlElement(ElementName = "qtdParcial")] + public decimal QtdParcial { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfLocalCarrega.cs b/MDFe.Classes/Informacoes/MDFeInfLocalCarrega.cs new file mode 100644 index 000000000..0aca2ab3e --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfLocalCarrega.cs @@ -0,0 +1,98 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfLocalCarrega + { + /// + /// 1 - Cep onde foi carregado o MDF-e. + /// + [XmlElement(ElementName = "CEP")] + public string CEP { get; set; } + + [XmlIgnore] + private decimal? _latitude { get; set; } + + /// + /// 1- Latitude do ponto geográfico onde foi carregado o MDF-e. + /// + [XmlElement("latitude")] + public string LatitudeProxy + { + get + { + if (_latitude == null) return null; + return _latitude.ToString(); + } + set + { + if (value == null) + { + _latitude = null; + return; + } + _latitude = decimal.Parse(value); + } + } + + [XmlIgnore] + private decimal? _longitude { get; set; } + + /// + /// 1 - Longitude do ponto geográfico onde foi carregado o MDF-e. + /// + [XmlElement("longitude")] + public string LongitudeProxy + { + get + { + if (_longitude == null) return null; + return _longitude.ToString(); + } + set + { + if (value == null) + { + _longitude = null; + return; + } + _longitude = decimal.Parse(value); + } + } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfLocalDescarrega.cs b/MDFe.Classes/Informacoes/MDFeInfLocalDescarrega.cs new file mode 100644 index 000000000..976eab2d7 --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfLocalDescarrega.cs @@ -0,0 +1,99 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfLocalDescarrega + { + /// + /// 1 - Cep onde foi descarregado o MDF-e. + /// + public string CEP { get; set; } + + [XmlIgnore] + private decimal? _latitude { get; set; } + + /// + /// 1- Latitude do ponto geográfico onde foi + /// descarregado o MDF-e. + /// + [XmlElement("latitude")] + public string LatitudeProxy + { + get + { + if (_latitude == null) return null; + return _latitude.ToString(); + } + set + { + if (value == null) + { + _latitude = null; + return; + } + _latitude = decimal.Parse(value); + } + } + + [XmlIgnore] + private decimal? _longitude { get; set; } + + /// + /// 1 - Longitude do ponto geográfico onde foi + /// descarregado o MDF-e. + /// + [XmlElement("longitude")] + public string LongitudeProxy + { + get + { + if (_longitude == null) return null; + return _longitude.ToString(); + } + set + { + if (value == null) + { + _longitude = null; + return; + } + _longitude = decimal.Parse(value); + } + } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfLotacao.cs b/MDFe.Classes/Informacoes/MDFeInfLotacao.cs new file mode 100644 index 000000000..68c78f43e --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfLotacao.cs @@ -0,0 +1,63 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfLotacao + { + public MDFeInfLotacao() + { + InfLocalCarrega = new MDFeInfLocalCarrega(); + InfLocalDescarrega = new MDFeInfLocalDescarrega(); + } + + /// + /// 1 - Informações da localização do + /// carregamento do MDF-e de carga lotação + /// + [XmlElement(ElementName = "infLocalCarrega")] + public MDFeInfLocalCarrega InfLocalCarrega { get; set; } + + /// + /// 1 - Informações da localização do + /// descarregamento do MDF-e de carga + /// lotação + /// + [XmlElement(ElementName = "infLocalDescarrega")] + public MDFeInfLocalDescarrega InfLocalDescarrega { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfMDFe.cs b/MDFe.Classes/Informacoes/MDFeInfMDFe.cs old mode 100755 new mode 100644 index 2555fd1b1..a9b9704f9 --- a/MDFe.Classes/Informacoes/MDFeInfMDFe.cs +++ b/MDFe.Classes/Informacoes/MDFeInfMDFe.cs @@ -49,6 +49,7 @@ public MDFeInfMDFe() Tot = new MDFeTot(); Versao = VersaoServico.Versao100; } + /// /// 1 - Versão do leiaute /// @@ -94,6 +95,12 @@ public MDFeInfMDFe() [XmlElement(ElementName = "seg")] public List Seg { get; set; } + /// + /// 1 - Grupo de informações do Produto predominante da carga do MDF-e + /// + [XmlElement(ElementName = "prodPred")] + public MDFeProdPred ProdPred { get; set; } + /// /// 1 - Totalizadores da carga transportada e seus documentos fiscais /// @@ -117,5 +124,11 @@ public MDFeInfMDFe() /// [XmlElement(ElementName = "infAdic")] public MDFeInfAdic InfAdic { get; set; } + + /// + /// 1 - Informações do Responsável Técnico pela emissão do DF-e. + /// + [XmlElement(ElementName = "infRespTec")] + public MDFeInfRespTec InfRespTec { get; set; } } } diff --git a/MDFe.Classes/Informacoes/MDFeInfMDFeTransp.cs b/MDFe.Classes/Informacoes/MDFeInfMDFeTransp.cs old mode 100755 new mode 100644 index 7bfbf100d..104b6b4bc --- a/MDFe.Classes/Informacoes/MDFeInfMDFeTransp.cs +++ b/MDFe.Classes/Informacoes/MDFeInfMDFeTransp.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfModal.cs b/MDFe.Classes/Informacoes/MDFeInfModal.cs old mode 100755 new mode 100644 index 5c4d38941..805d4233b --- a/MDFe.Classes/Informacoes/MDFeInfModal.cs +++ b/MDFe.Classes/Informacoes/MDFeInfModal.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using MDFe.Classes.Contratos; @@ -42,7 +43,7 @@ public class MDFeInfModal { public MDFeInfModal() { - VersaoModal = MDFeVersaoModal.Versao100; + VersaoModal = MDFeVersaoModal.Versao300; } /// diff --git a/MDFe.Classes/Informacoes/MDFeInfMunCarrega.cs b/MDFe.Classes/Informacoes/MDFeInfMunCarrega.cs old mode 100755 new mode 100644 index 47edd4572..25c4fb3b1 --- a/MDFe.Classes/Informacoes/MDFeInfMunCarrega.cs +++ b/MDFe.Classes/Informacoes/MDFeInfMunCarrega.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfMunDescarga.cs b/MDFe.Classes/Informacoes/MDFeInfMunDescarga.cs old mode 100755 new mode 100644 index 84d8b0a72..5f2cd87af --- a/MDFe.Classes/Informacoes/MDFeInfMunDescarga.cs +++ b/MDFe.Classes/Informacoes/MDFeInfMunDescarga.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfNFe.cs b/MDFe.Classes/Informacoes/MDFeInfNFe.cs old mode 100755 new mode 100644 index bab4f0b4b..bc83e8fb3 --- a/MDFe.Classes/Informacoes/MDFeInfNFe.cs +++ b/MDFe.Classes/Informacoes/MDFeInfNFe.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfPag.cs b/MDFe.Classes/Informacoes/MDFeInfPag.cs new file mode 100644 index 000000000..bbdcfec4a --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfPag.cs @@ -0,0 +1,124 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using DFe.Classes; +using MDFe.Classes.Flags; +using System; +using System.Collections.Generic; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfPag + { + public MDFeInfPag() + { + InfPrazo = new List(); + } + + /// + /// 3 - Nome do responsável pelo pagamento. + /// + [XmlElement(ElementName = "xNome")] + public string XNome { get; set; } + + /// + /// 3 - Número do CPF do responsável pelo pagamento. + /// + [XmlElement(ElementName = "CPF")] + public string CPF { get; set; } + + /// + /// 3 - Número do CNPJ do responsável pelo pagamento. + /// + [XmlElement(ElementName = "CNPJ")] + public string CNPJ { get; set; } + + /// + /// 3 - Identificador do responsável pelo pagamento + /// em caso de ser estrangeiro. + /// + [XmlElement(ElementName = "idEstrangeiro")] + public string IdEstrangeiro { get; set; } + + /// + /// 3 - Componentes do pagamento do frete. + /// + [XmlElement(ElementName = "Comp")] + public List Comp { get; set; } + + [XmlIgnore] + private decimal _vContrato { get; set; } + + /// + /// 3 - Valor total do Contrato. + /// + [XmlElement("vContrato")] + public decimal VContratoProxy + { + get { return _vContrato.Arredondar(2); } + set { _vContrato = value.Arredondar(2); } + } + + /// + /// 3 - Indicador da forma de pagamento. + /// + [XmlElement(ElementName = "indPag")] + public MDFeIndPag IndPag { get; set; } + + /// + /// 3 - Informações do pagamento a prazo. Informar somente se indPag for à Prazo. + /// + [XmlElement(ElementName = "infPrazo")] + public List InfPrazo { get; set; } + + /// + /// 3 - Informações Bancárias. + /// + [XmlElement(ElementName = "infBanc")] + public MDFeInfBanc InfBanc { get; set; } + + /// + /// 3 - Indicador de operação de transporte de + /// alto desempenho + /// + [XmlElement(ElementName = "indAltoDesemp")] + public MDFeIndAltoDesemp IndAltoDesemp { get; set; } + + public bool ShouldSerializeIndAltoDesemp() + { + return IndAltoDesemp == MDFeIndAltoDesemp.AltoDesempenho; + } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfPercurso.cs b/MDFe.Classes/Informacoes/MDFeInfPercurso.cs old mode 100755 new mode 100644 index 735796666..b3c5199f7 --- a/MDFe.Classes/Informacoes/MDFeInfPercurso.cs +++ b/MDFe.Classes/Informacoes/MDFeInfPercurso.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System.Xml.Serialization; using DFe.Classes.Entidades; using DFe.Classes.Extensoes; @@ -45,14 +46,13 @@ public class MDFeInfPercurso public Estado UFPer { get; set; } /// - /// Proxy para UFPer + /// Proxy para sigla das Unidades da Federação do percurso do veículo /// [XmlElement(ElementName = "UFPer")] - public string ProxyUFPer { + public string ProxyUFPer + { get { return UFPer.GetSiglaUfString(); } set { UFPer = UFPer.SiglaParaEstado(value); } } - - } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfPrazo.cs b/MDFe.Classes/Informacoes/MDFeInfPrazo.cs new file mode 100644 index 000000000..7974a2e8d --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfPrazo.cs @@ -0,0 +1,83 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.Xml.Serialization; +using DFe.Classes; +using DFe.Utils; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfPrazo + { + [XmlIgnore] + private short _nParcela { get; set; } + + /// + /// 1 - Número da parcela. + /// + [XmlElement("nParcela")] + public string NParcelaProxy + { + get { return _nParcela.ToString("D3"); } + set { _nParcela = short.Parse(value); } + } + + [XmlIgnore] + private DateTime _dVenc { get; set; } + + /// + /// Proxy para Data de Vencimento da parcela. + /// + [XmlElement("dVenc")] + public string DVencProxy + { + get { return _dVenc.ParaDataString(); } + set { _dVenc = DateTime.Parse(value); } + } + + [XmlIgnore] + private decimal _vParcela { get; set; } + + /// + /// 1 - Valor da parcela. + /// + [XmlElement("vParcela")] + public decimal VParcelaProxy + { + get { return _vParcela.Arredondar(2); } + set { _vParcela = value.Arredondar(2); } + } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfRespTec.cs b/MDFe.Classes/Informacoes/MDFeInfRespTec.cs new file mode 100644 index 000000000..6251f3df7 --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfRespTec.cs @@ -0,0 +1,90 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + public class MDFeInfRespTec + { + /// + /// 2 - CNPJ da pessoa jurídica responsável técnica pelo sistema + /// utilizado na emissão do documento fiscal eletrônico + /// + [XmlElement(ElementName = "CNPJ")] + public string CNPJ { get; set; } + + /// + /// 2 - Nome da pessoa a ser contatada + /// + [XmlElement(ElementName = "xContato")] + public string XContato { get; set; } + + /// + /// 2 - E-mail da pessoa jurídica a ser contatada + /// + [XmlElement(ElementName = "email")] + public string Email { get; set; } + + /// + /// 2 - Telefone da pessoa jurídica a ser contatada + /// + [XmlElement(ElementName = "fone")] + public string Fone { get; set; } + + [XmlIgnore] + private int? IdCSRT { get; set; } + + public bool IdCSRTSpecified + { + get { return IdCSRT.HasValue; } + } + + /// + /// 2 - Identificador do código de segurança do responsável técnico + /// + [XmlElement(ElementName = "idCSRT")] + public string ProxyIdCSRT + { + get { return IdCSRT != null ? IdCSRT.Value.ToString("D3") : null; } + set { IdCSRT = int.Parse(value); } + } + + /// + /// 2 - Hash do token do código de segurança do responsável técnico + /// + [XmlElement(ElementName = "hashCSRT")] + public string HashCSRT { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfTermCarreg.cs b/MDFe.Classes/Informacoes/MDFeInfTermCarreg.cs old mode 100755 new mode 100644 index 1c876c2a9..2c9c9d898 --- a/MDFe.Classes/Informacoes/MDFeInfTermCarreg.cs +++ b/MDFe.Classes/Informacoes/MDFeInfTermCarreg.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfTermDescarreg.cs b/MDFe.Classes/Informacoes/MDFeInfTermDescarreg.cs old mode 100755 new mode 100644 index 650402c83..ec9044ab0 --- a/MDFe.Classes/Informacoes/MDFeInfTermDescarreg.cs +++ b/MDFe.Classes/Informacoes/MDFeInfTermDescarreg.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfUnidCarga.cs b/MDFe.Classes/Informacoes/MDFeInfUnidCarga.cs old mode 100755 new mode 100644 index 7ff2942fd..1c6b4d215 --- a/MDFe.Classes/Informacoes/MDFeInfUnidCarga.cs +++ b/MDFe.Classes/Informacoes/MDFeInfUnidCarga.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; @@ -63,5 +64,7 @@ public class MDFeInfUnidCarga /// [XmlElement(ElementName = "qtdRat")] public decimal? QtdRat { get; set; } - } + + public bool QtdRatSpecified { get { return QtdRat.HasValue; } } + } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfUnidCargaVazia.cs b/MDFe.Classes/Informacoes/MDFeInfUnidCargaVazia.cs old mode 100755 new mode 100644 index cf36498c3..053da34e4 --- a/MDFe.Classes/Informacoes/MDFeInfUnidCargaVazia.cs +++ b/MDFe.Classes/Informacoes/MDFeInfUnidCargaVazia.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System.Xml.Serialization; using MDFe.Classes.Flags; diff --git a/MDFe.Classes/Informacoes/MDFeInfUnidTransp.cs b/MDFe.Classes/Informacoes/MDFeInfUnidTransp.cs old mode 100755 new mode 100644 index 568675063..f662c24ae --- a/MDFe.Classes/Informacoes/MDFeInfUnidTransp.cs +++ b/MDFe.Classes/Informacoes/MDFeInfUnidTransp.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; @@ -69,5 +70,7 @@ public class MDFeInfUnidTransp /// [XmlElement(ElementName = "qtdRat")] public decimal? QtdRat { get; set; } - } + + public bool QtdRatSpecified { get { return QtdRat.HasValue; } } + } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfViagens.cs b/MDFe.Classes/Informacoes/MDFeInfViagens.cs new file mode 100644 index 000000000..7b7497d4e --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfViagens.cs @@ -0,0 +1,68 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.Xml.Serialization; +using System; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfViagens + { + [XmlIgnore] + private int _qtdViagens { get; set; } + + /// + /// 2 - Proxy para quantidade total de viagens realizadas com o pagamento do frete. + /// + [XmlElement("qtdViagens")] + public string QtdViagensProxy + { + get { return _qtdViagens.ToString("D5"); } + set { _qtdViagens = int.Parse(value); } + } + + [XmlIgnore] + private int _nroViagem { get; set; } + + /// + /// 2 - Proxy para número de referência da viagem do MDF-e referenciado. + /// + [XmlElement("nroViagem")] + public string NroViagemProxy + { + get { return _nroViagem.ToString("D5"); } + set { _nroViagem = int.Parse(value); } + } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeLacUnidCarga.cs b/MDFe.Classes/Informacoes/MDFeLacUnidCarga.cs old mode 100755 new mode 100644 index 2ead7e9c8..6a8f591fc --- a/MDFe.Classes/Informacoes/MDFeLacUnidCarga.cs +++ b/MDFe.Classes/Informacoes/MDFeLacUnidCarga.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeLacUnidTransp.cs b/MDFe.Classes/Informacoes/MDFeLacUnidTransp.cs old mode 100755 new mode 100644 index 9e09d0b20..d51d79411 --- a/MDFe.Classes/Informacoes/MDFeLacUnidTransp.cs +++ b/MDFe.Classes/Informacoes/MDFeLacUnidTransp.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeLacre.cs b/MDFe.Classes/Informacoes/MDFeLacre.cs old mode 100755 new mode 100644 index f422b0199..28c7057bc --- a/MDFe.Classes/Informacoes/MDFeLacre.cs +++ b/MDFe.Classes/Informacoes/MDFeLacre.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeProdPred.cs b/MDFe.Classes/Informacoes/MDFeProdPred.cs new file mode 100644 index 000000000..aa02fe6ca --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeProdPred.cs @@ -0,0 +1,74 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.Xml.Serialization; +using MDFe.Classes.Flags; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeProdPred + { + /// + /// 1 - Tipo da Carga. + /// Conforme Rosulação ANTT + /// + [XmlElement(ElementName = "tpCarga")] + public MDFeTpCarga TpCarga { get; set; } + + /// + /// 1 - Descrição do produto predominante. + /// + [XmlElement(ElementName = "xProd")] + public string XProd { get; set; } + + /// + /// 1- GTIN (Global Trade Item Number) do produto, antigo código EAN ou código de barras. + /// + [XmlElement(ElementName = "cEAN")] + public string CEan { get; set; } + + /// + /// 1 - Código NCM + /// + [XmlElement(ElementName = "NCM")] + public string Ncm { get; set; } + + /// + /// 1 - Informações da carga lotação. Informar somente quando MDF-e for de carga lotação + /// + [XmlElement(ElementName = "infLotacao")] + public MDFeInfLotacao InfLotacao { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeProp.cs b/MDFe.Classes/Informacoes/MDFeProp.cs old mode 100755 new mode 100644 index 9496eda9f..f1a58cae8 --- a/MDFe.Classes/Informacoes/MDFeProp.cs +++ b/MDFe.Classes/Informacoes/MDFeProp.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes.Entidades; @@ -91,7 +92,7 @@ public string ProxyUF } /// - /// 3 - Tipo Proprietário + /// 3 - Tipo Proprietário ou possuidor /// [XmlElement(ElementName = "tpProp")] public MDFeTpProp MDFeTpProp { get; set; } diff --git a/MDFe.Classes/Informacoes/MDFeRodo.cs b/MDFe.Classes/Informacoes/MDFeRodo.cs old mode 100755 new mode 100644 index 183dcee9e..5b39f5c07 --- a/MDFe.Classes/Informacoes/MDFeRodo.cs +++ b/MDFe.Classes/Informacoes/MDFeRodo.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; @@ -41,7 +42,7 @@ namespace MDFe.Classes.Informacoes public class MDFeRodo : MDFeModalContainer { [XmlElement(ElementName = "infANTT")] - public MDFeInfANTT infANTT { get; set; } + public MDFeInfANTT InfANTT { get; set; } /// /// 1 - Registro Nacional de Transportadores Rodoviários de Carga @@ -79,22 +80,10 @@ public class MDFeRodo : MDFeModalContainer [XmlElement(ElementName = "codAgPorto")] public string CodAgPorto { get; set; } + /// + /// 1 - Lacres + /// [XmlElement(ElementName = "lacRodo")] - public List lacRodo { get; set; } - } - - [Serializable] - public class MDFeInfANTT - { - [XmlElement(ElementName = "RNTRC")] - public string RNTRC { get; set; } - - [XmlElement(ElementName = "infCIOT")] - public List infCIOT { get; set; } - - public MDFeValePed valePed { get; set; } - - [XmlElement(ElementName = "infContratante")] - public List infContratante { get; set; } + public List LacRodo { get; set; } } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeTot.cs b/MDFe.Classes/Informacoes/MDFeTot.cs old mode 100755 new mode 100644 index 6af9c9813..f5d89b0bc --- a/MDFe.Classes/Informacoes/MDFeTot.cs +++ b/MDFe.Classes/Informacoes/MDFeTot.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes; diff --git a/MDFe.Classes/Informacoes/MDFeTpValePed.cs b/MDFe.Classes/Informacoes/MDFeTpValePed.cs new file mode 100644 index 000000000..eb65b16ae --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeTpValePed.cs @@ -0,0 +1,52 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + public enum MDFeTpValePed + { + [XmlEnum("01")] + Tag = 01, + + [XmlEnum("02")] + Cupom = 02, + + [XmlEnum("03")] + Cartao = 03, + + [XmlEnum("04")] + LeituraDePlaca = 04 + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeTrem.cs b/MDFe.Classes/Informacoes/MDFeTrem.cs old mode 100755 new mode 100644 index 830e13241..7195c1099 --- a/MDFe.Classes/Informacoes/MDFeTrem.cs +++ b/MDFe.Classes/Informacoes/MDFeTrem.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Utils; diff --git a/MDFe.Classes/Informacoes/MDFeVag.cs b/MDFe.Classes/Informacoes/MDFeVag.cs old mode 100755 new mode 100644 index 16333678e..3b6e87196 --- a/MDFe.Classes/Informacoes/MDFeVag.cs +++ b/MDFe.Classes/Informacoes/MDFeVag.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes; diff --git a/MDFe.Classes/Informacoes/MDFeValePed.cs b/MDFe.Classes/Informacoes/MDFeValePed.cs old mode 100755 new mode 100644 index acdae4a6b..2687d82d7 --- a/MDFe.Classes/Informacoes/MDFeValePed.cs +++ b/MDFe.Classes/Informacoes/MDFeValePed.cs @@ -30,9 +30,11 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; +using MDFe.Classes.Flags; namespace MDFe.Classes.Informacoes { @@ -44,5 +46,16 @@ public class MDFeValePed /// [XmlElement(ElementName = "disp")] public List Disp { get; set; } + + /// + /// 3 - Categoria de Combinação Veicular + /// + [XmlElement(ElementName = "categCombVeic", IsNullable = true)] + public MDFeCategCombVeic? CategCombVeic { get; set; } + + public bool CategCombVeicSpecified => CategCombVeic.HasValue; + + public bool ShouldSerializeCategCombVeic() => CategCombVeicSpecified; + } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeVeicReboque.cs b/MDFe.Classes/Informacoes/MDFeVeicReboque.cs old mode 100755 new mode 100644 index 30a39eb5c..b930cb80e --- a/MDFe.Classes/Informacoes/MDFeVeicReboque.cs +++ b/MDFe.Classes/Informacoes/MDFeVeicReboque.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes.Entidades; @@ -87,16 +88,26 @@ public class MDFeVeicReboque public MDFeTpCar TpCar { get; set; } [XmlIgnore] - public Estado UF { get; set; } + public Estado? UF { get; set; } [XmlElement(ElementName = "UF")] public string ProxyUF { get { - return UF.GetSiglaUfString(); + return UF.HasValue ? UF.Value.GetSiglaUfString() : null; + } + set + { + if (!string.IsNullOrEmpty(value)) + UF = new Estado().SiglaParaEstado(value); + else + UF = null; } - set { UF = UF.SiglaParaEstado(value); } } + + public bool TaraSpecified { get { return Tara.HasValue; } } + public bool CapKGSpecified { get { return CapKG.HasValue; } } + public bool CapM3Specified { get { return CapM3.HasValue; } } } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeVeicTracao.cs b/MDFe.Classes/Informacoes/MDFeVeicTracao.cs old mode 100755 new mode 100644 index 53de797e0..ddb570534 --- a/MDFe.Classes/Informacoes/MDFeVeicTracao.cs +++ b/MDFe.Classes/Informacoes/MDFeVeicTracao.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; @@ -79,7 +80,7 @@ public class MDFeVeicTracao public int? CapM3 { get; set; } /// - /// 2 - Proprietários do Veículo. Só preenchido quando o veículo não pertencer à empresa emitente do MDF-e + /// 2 - Proprietário ou possuidor do Veículo. Só preenchido quando o veículo não pertencer à empresa emitente do MDF-e /// [XmlElement(ElementName = "prop")] public MDFeProp Prop { get; set; } @@ -103,10 +104,10 @@ public class MDFeVeicTracao public MDFeTpCar TpCar { get; set; } /// - /// 2 - UF em que veículo está licenciado + /// 3 - UF em que veículo está licenciado /// [XmlIgnore] - public Estado UF { get; set; } + public Estado? UF { get; set; } /// /// Proxy para obter a sigla uf @@ -116,12 +117,19 @@ public string ProxyUF { get { - return UF.GetSiglaUfString(); + return UF.HasValue ? UF.Value.GetSiglaUfString() : null; + } + set + { + if (!string.IsNullOrEmpty(value)) + UF = new Estado().SiglaParaEstado(value); + else + UF = null; } - set { UF = UF.SiglaParaEstado(value); } } public bool CapKGSpecified { get { return CapKG.HasValue; } } public bool CapM3Specified { get { return CapM3.HasValue; } } + public bool TaraSpecified { get { return Tara.HasValue; } } } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MdfeInfMDFeSupl.cs b/MDFe.Classes/Informacoes/MdfeInfMDFeSupl.cs new file mode 100644 index 000000000..d714f4200 --- /dev/null +++ b/MDFe.Classes/Informacoes/MdfeInfMDFeSupl.cs @@ -0,0 +1,54 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.Text; +using System.Xml.Serialization; +using DFe.Classes.Flags; + +namespace MDFe.Classes.Informacoes +{ + public class MdfeInfMDFeSupl + { + /// + /// 1 - Texto com o QR-Code para consulta do MDF-e + /// + [XmlElement(ElementName = "qrCodMDFe")] + public string QrCodMDFe { get; set; } + + public static string GerarQrCode(string chave, TipoAmbiente tipoAmbiente) + { + var qrCode = new StringBuilder(@"https://dfe-portal.svrs.rs.gov.br/mdfe/qrCode"); + return qrCode.Append("?").Append("chMDFe=").Append(chave).Append("&").Append("tpAmb=").Append((int)tipoAmbiente).ToString(); + } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/RetRecepcao/MDFeConsReciMDFe.cs b/MDFe.Classes/Informacoes/RetRecepcao/MDFeConsReciMDFe.cs old mode 100755 new mode 100644 index 82233e0a3..53ea62dd5 --- a/MDFe.Classes/Informacoes/RetRecepcao/MDFeConsReciMDFe.cs +++ b/MDFe.Classes/Informacoes/RetRecepcao/MDFeConsReciMDFe.cs @@ -30,10 +30,11 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes.Flags; -using MDFe.Utils.Flags; +using VersaoServico = MDFe.Utils.Flags.VersaoServico; namespace MDFe.Classes.Informacoes.RetRecepcao { diff --git a/MDFe.Classes/Informacoes/StatusServico/MDFeConsStatServMDFe.cs b/MDFe.Classes/Informacoes/StatusServico/MDFeConsStatServMDFe.cs old mode 100755 new mode 100644 index 67b381bf7..719abd940 --- a/MDFe.Classes/Informacoes/StatusServico/MDFeConsStatServMDFe.cs +++ b/MDFe.Classes/Informacoes/StatusServico/MDFeConsStatServMDFe.cs @@ -30,10 +30,11 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes.Flags; -using MDFe.Utils.Flags; +using VersaoServico = MDFe.Utils.Flags.VersaoServico; namespace MDFe.Classes.Informacoes.StatusServico { diff --git a/MDFe.Classes/Informacoes/infContratante.cs b/MDFe.Classes/Informacoes/infContratante.cs deleted file mode 100644 index a55f87ce2..000000000 --- a/MDFe.Classes/Informacoes/infContratante.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace MDFe.Classes.Informacoes -{ - public class infContratante - { - public string CPF { get; set; } - public string CNPJ { get; set; } - } -} \ No newline at end of file diff --git a/MDFe.Classes/MDFe.Classes.csproj b/MDFe.Classes/MDFe.Classes.csproj index d868f0076..8869b4349 100755 --- a/MDFe.Classes/MDFe.Classes.csproj +++ b/MDFe.Classes/MDFe.Classes.csproj @@ -1,166 +1,12 @@ - - - + + - Debug - AnyCPU - {9794CB98-4691-4218-A127-C573C2E7FF83} - Library - Properties - MDFe.Classes - MDFe.Classes - v4.5 - 512 - + net462;netstandard2.0;net6.0 + - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - {9984ec15-18e1-4a87-b4db-18ac913dc4e8} - DFe.Classes - - - {b4e1a7a6-5d66-4326-8a8d-39338e6fc84c} - DFe.Utils - - - {9C0678EB-78F2-49C6-91BF-38148FC37FBB} - MDFe.Utils - + - - - - \ No newline at end of file + + diff --git a/MDFe.Classes/MDFe.Classes.csproj.DotSettings b/MDFe.Classes/MDFe.Classes.csproj.DotSettings deleted file mode 100644 index 662f95686..000000000 --- a/MDFe.Classes/MDFe.Classes.csproj.DotSettings +++ /dev/null @@ -1,2 +0,0 @@ - - CSharp50 \ No newline at end of file diff --git a/MDFe.Classes/Properties/AssemblyInfo.cs b/MDFe.Classes/Properties/AssemblyInfo.cs deleted file mode 100755 index 7b41ae7aa..000000000 --- a/MDFe.Classes/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("MDFe.Classes")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("MDFe.Classes")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("9794cb98-4691-4218-a127-c573c2e7ff83")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.0.0.8")] -[assembly: AssemblyFileVersion("0.0.0.8")] diff --git a/MDFe.Classes/Retorno/MDFeConsultaNaoEncerrado/MDFeRetConsMDFeNao.cs b/MDFe.Classes/Retorno/MDFeConsultaNaoEncerrado/MDFeRetConsMDFeNao.cs old mode 100755 new mode 100644 index 21aafc2d0..ebe1b2a0c --- a/MDFe.Classes/Retorno/MDFeConsultaNaoEncerrado/MDFeRetConsMDFeNao.cs +++ b/MDFe.Classes/Retorno/MDFeConsultaNaoEncerrado/MDFeRetConsMDFeNao.cs @@ -38,7 +38,7 @@ using DFe.Classes.Flags; using DFe.Utils; using MDFe.Classes.Informacoes.ConsultaNaoEncerrados; -using MDFe.Utils.Flags; +using VersaoServico = MDFe.Utils.Flags.VersaoServico; namespace MDFe.Classes.Retorno.MDFeConsultaNaoEncerrado { diff --git a/MDFe.Classes/Retorno/MDFeConsultaProtocolo/MDFeRetConsSitMDFe.cs b/MDFe.Classes/Retorno/MDFeConsultaProtocolo/MDFeRetConsSitMDFe.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Retorno/MDFeEvento/MDFeRetEventoMDFe.cs b/MDFe.Classes/Retorno/MDFeEvento/MDFeRetEventoMDFe.cs old mode 100755 new mode 100644 index 282fa7174..9a0434e18 --- a/MDFe.Classes/Retorno/MDFeEvento/MDFeRetEventoMDFe.cs +++ b/MDFe.Classes/Retorno/MDFeEvento/MDFeRetEventoMDFe.cs @@ -35,7 +35,6 @@ using DFe.Classes.Assinatura; using DFe.Utils; using MDFe.Classes.Informacoes.Evento; -using MDFe.Classes.Informacoes.Evento.CorpoEvento; namespace MDFe.Classes.Retorno.MDFeEvento { diff --git a/MDFe.Classes/Retorno/MDFeEvento/MDFeRetInfEvento.cs b/MDFe.Classes/Retorno/MDFeEvento/MDFeRetInfEvento.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Retorno/MDFeProcEventoMDFe.cs b/MDFe.Classes/Retorno/MDFeProcEventoMDFe.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Retorno/MDFeProcMDFe.cs b/MDFe.Classes/Retorno/MDFeProcMDFe.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Retorno/MDFeRecepcao/MDFeRetEnviMDFe.cs b/MDFe.Classes/Retorno/MDFeRecepcao/MDFeRetEnviMDFe.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Retorno/MDFeRetRecepcao/MDFeInfProtMDFe.cs b/MDFe.Classes/Retorno/MDFeRetRecepcao/MDFeInfProtMDFe.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Retorno/MDFeRetRecepcao/MDFeProtMDFe.cs b/MDFe.Classes/Retorno/MDFeRetRecepcao/MDFeProtMDFe.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Retorno/MDFeRetRecepcao/MDFeRetConsReciMDFe.cs b/MDFe.Classes/Retorno/MDFeRetRecepcao/MDFeRetConsReciMDFe.cs old mode 100755 new mode 100644 index e3a61c2bd..7c3a5186c --- a/MDFe.Classes/Retorno/MDFeRetRecepcao/MDFeRetConsReciMDFe.cs +++ b/MDFe.Classes/Retorno/MDFeRetRecepcao/MDFeRetConsReciMDFe.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes.Entidades; @@ -77,7 +78,7 @@ public string CUFProxy } [XmlElement(ElementName = "protMDFe")] - public MDFeProtMDFe ProtMdFe { get; set; } + public MDFeProtMDFe ProtMDFe { get; set; } public static MDFeRetConsReciMDFe LoadXml(string xml) { diff --git a/MDFe.Classes/Retorno/MDFeRetRecepcao/Sincrono/MDFeRetMDFe.cs b/MDFe.Classes/Retorno/MDFeRetRecepcao/Sincrono/MDFeRetMDFe.cs new file mode 100644 index 000000000..8aeca30d8 --- /dev/null +++ b/MDFe.Classes/Retorno/MDFeRetRecepcao/Sincrono/MDFeRetMDFe.cs @@ -0,0 +1,64 @@ +using DFe.Classes.Entidades; +using DFe.Classes.Extensoes; +using DFe.Classes.Flags; +using DFe.Utils; +using System; +using System.Xml.Serialization; + +namespace MDFe.Classes.Retorno.MDFeRetRecepcao.Sincrono +{ + [Serializable] + [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/mdfe", + ElementName = "retMDFe")] + public class MDFeRetMDFe: RetornoBase + { + [XmlAttribute(AttributeName = "versao")] + public string Versao { get; set; } + + [XmlElement(ElementName = "tpAmb")] + public TipoAmbiente TpAmb { get; set; } + + [XmlElement(ElementName = "verAplic")] + public string VerAplic { get; set; } + + [XmlElement(ElementName = "nRec")] + public string NRec { get; set; } + + [XmlElement(ElementName = "cStat")] + public short CStat { get; set; } + + [XmlElement(ElementName = "xMotivo")] + public string XMotivo { get; set; } + + [XmlIgnore] + public Estado CUF { get; set; } + + [XmlElement(ElementName = "cUF")] + public string CUFProxy + { + get + { + return CUF.GetCodigoIbgeEmString(); + } + set { CUF = CUF.CodigoIbgeParaEstado(value); } + } + + [XmlElement(ElementName = "protMDFe")] + public MDFeProtMDFe ProtMdFe { get; set; } + + public static MDFeRetMDFe LoadXml(string xml) + { + var retorno = FuncoesXml.XmlStringParaClasse(xml); + retorno.RetornoXmlString = xml; + + return retorno; + } + public static MDFeRetMDFe LoadXml(string xml, Informacoes.MDFe mdfe) + { + var retorno = LoadXml(xml); + retorno.EnvioXmlString = FuncoesXml.ClasseParaXmlString(mdfe); + + return retorno; + } + } +} diff --git a/MDFe.Classes/Retorno/MDFeStatusServico/MDFeRetConsStatServ.cs b/MDFe.Classes/Retorno/MDFeStatusServico/MDFeRetConsStatServ.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Retorno/RetornoBase.cs b/MDFe.Classes/Retorno/RetornoBase.cs old mode 100755 new mode 100644 diff --git a/MDFe.Classes/Servicos/Autorizacao/MDFeEnviMDFe.cs b/MDFe.Classes/Servicos/Autorizacao/MDFeEnviMDFe.cs old mode 100755 new mode 100644 diff --git a/MDFe.Damdfe.AppTeste/App.config b/MDFe.Damdfe.AppTeste/App.config index d1428ad71..4bfa00561 100755 --- a/MDFe.Damdfe.AppTeste/App.config +++ b/MDFe.Damdfe.AppTeste/App.config @@ -1,6 +1,6 @@ - + diff --git a/MDFe.Damdfe.AppTeste/Form1.Designer.cs b/MDFe.Damdfe.AppTeste/Form1.Designer.cs index b1f97988b..3897acaed 100755 --- a/MDFe.Damdfe.AppTeste/Form1.Designer.cs +++ b/MDFe.Damdfe.AppTeste/Form1.Designer.cs @@ -39,12 +39,15 @@ private void InitializeComponent() this.txtDesenvolvedor = new System.Windows.Forms.TextBox(); this.button4 = new System.Windows.Forms.Button(); this.button5 = new System.Windows.Forms.Button(); + this.txtArquivoFrx = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.chbQuebrarLinhaObservacao = new System.Windows.Forms.CheckBox(); ((System.ComponentModel.ISupportInitialize)(this.pcbLogotipo)).BeginInit(); this.SuspendLayout(); // // button1 // - this.button1.Location = new System.Drawing.Point(228, 122); + this.button1.Location = new System.Drawing.Point(228, 159); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(83, 28); this.button1.TabIndex = 0; @@ -55,7 +58,7 @@ private void InitializeComponent() // chbCancelado // this.chbCancelado.AutoSize = true; - this.chbCancelado.Location = new System.Drawing.Point(228, 64); + this.chbCancelado.Location = new System.Drawing.Point(228, 90); this.chbCancelado.Name = "chbCancelado"; this.chbCancelado.Size = new System.Drawing.Size(135, 17); this.chbCancelado.TabIndex = 1; @@ -66,7 +69,7 @@ private void InitializeComponent() // chbEncerrado // this.chbEncerrado.AutoSize = true; - this.chbEncerrado.Location = new System.Drawing.Point(228, 87); + this.chbEncerrado.Location = new System.Drawing.Point(228, 113); this.chbEncerrado.Name = "chbEncerrado"; this.chbEncerrado.Size = new System.Drawing.Size(133, 17); this.chbEncerrado.TabIndex = 2; @@ -78,7 +81,7 @@ private void InitializeComponent() // this.pcbLogotipo.Location = new System.Drawing.Point(10, 29); this.pcbLogotipo.Name = "pcbLogotipo"; - this.pcbLogotipo.Size = new System.Drawing.Size(202, 121); + this.pcbLogotipo.Size = new System.Drawing.Size(202, 147); this.pcbLogotipo.TabIndex = 3; this.pcbLogotipo.TabStop = false; // @@ -114,7 +117,7 @@ private void InitializeComponent() // label2 // this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(225, 9); + this.label2.Location = new System.Drawing.Point(225, 4); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(73, 13); this.label2.TabIndex = 7; @@ -122,14 +125,14 @@ private void InitializeComponent() // // txtDesenvolvedor // - this.txtDesenvolvedor.Location = new System.Drawing.Point(228, 28); + this.txtDesenvolvedor.Location = new System.Drawing.Point(228, 23); this.txtDesenvolvedor.Name = "txtDesenvolvedor"; this.txtDesenvolvedor.Size = new System.Drawing.Size(298, 20); this.txtDesenvolvedor.TabIndex = 8; // // button4 // - this.button4.Location = new System.Drawing.Point(325, 122); + this.button4.Location = new System.Drawing.Point(325, 159); this.button4.Name = "button4"; this.button4.Size = new System.Drawing.Size(83, 28); this.button4.TabIndex = 9; @@ -139,7 +142,7 @@ private void InitializeComponent() // // button5 // - this.button5.Location = new System.Drawing.Point(417, 122); + this.button5.Location = new System.Drawing.Point(417, 159); this.button5.Name = "button5"; this.button5.Size = new System.Drawing.Size(83, 28); this.button5.TabIndex = 10; @@ -147,11 +150,40 @@ private void InitializeComponent() this.button5.UseVisualStyleBackColor = true; this.button5.Click += new System.EventHandler(this.button5_Click); // + // txtArquivoFrx + // + this.txtArquivoFrx.Location = new System.Drawing.Point(228, 65); + this.txtArquivoFrx.Name = "txtArquivoFrx"; + this.txtArquivoFrx.Size = new System.Drawing.Size(298, 20); + this.txtArquivoFrx.TabIndex = 12; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(225, 48); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(60, 13); + this.label3.TabIndex = 11; + this.label3.Text = "Arquivo Frx"; + // + // chbQuebrarLinhaObservacao + // + this.chbQuebrarLinhaObservacao.AutoSize = true; + this.chbQuebrarLinhaObservacao.Location = new System.Drawing.Point(228, 136); + this.chbQuebrarLinhaObservacao.Name = "chbQuebrarLinhaObservacao"; + this.chbQuebrarLinhaObservacao.Size = new System.Drawing.Size(168, 17); + this.chbQuebrarLinhaObservacao.TabIndex = 13; + this.chbQuebrarLinhaObservacao.Text = "Quebrar linha nas observação"; + this.chbQuebrarLinhaObservacao.UseVisualStyleBackColor = true; + // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(536, 160); + this.ClientSize = new System.Drawing.Size(536, 197); + this.Controls.Add(this.chbQuebrarLinhaObservacao); + this.Controls.Add(this.txtArquivoFrx); + this.Controls.Add(this.label3); this.Controls.Add(this.button5); this.Controls.Add(this.button4); this.Controls.Add(this.txtDesenvolvedor); @@ -185,6 +217,9 @@ private void InitializeComponent() private System.Windows.Forms.TextBox txtDesenvolvedor; private System.Windows.Forms.Button button4; private System.Windows.Forms.Button button5; + private System.Windows.Forms.TextBox txtArquivoFrx; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.CheckBox chbQuebrarLinhaObservacao; } } diff --git a/MDFe.Damdfe.AppTeste/Form1.cs b/MDFe.Damdfe.AppTeste/Form1.cs index c9e325707..7a7ab3920 100755 --- a/MDFe.Damdfe.AppTeste/Form1.cs +++ b/MDFe.Damdfe.AppTeste/Form1.cs @@ -1,11 +1,5 @@ using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; @@ -61,14 +55,16 @@ public DamdfeFrMDFe GetReport() try { - var rpt = new DamdfeFrMDFe(mdfe, - new ConfiguracaoDamdfe() + var rpt = new DamdfeFrMDFe(proc: mdfe, + config: new ConfiguracaoDamdfe() { Logomarca = ImageToByte(pcbLogotipo.Image), DocumentoEncerrado = chbEncerrado.Checked, DocumentoCancelado = chbCancelado.Checked, - Desenvolvedor = txtDesenvolvedor.Text - }); + Desenvolvedor = txtDesenvolvedor.Text, + QuebrarLinhasObservacao = chbQuebrarLinhaObservacao.Checked + }, + arquivoRelatorio: txtArquivoFrx.Text); return rpt; } catch(Exception ex) diff --git a/MDFe.Damdfe.AppTeste/MDFe.Damdfe.AppTeste.csproj b/MDFe.Damdfe.AppTeste/MDFe.Damdfe.AppTeste.csproj index 5544150dc..8362b80b5 100755 --- a/MDFe.Damdfe.AppTeste/MDFe.Damdfe.AppTeste.csproj +++ b/MDFe.Damdfe.AppTeste/MDFe.Damdfe.AppTeste.csproj @@ -9,7 +9,7 @@ Properties MDFe.Damdfe.AppTeste MDFe.Damdfe.AppTeste - v4.5 + v4.8 512 true @@ -55,7 +55,6 @@ Form1.cs - Form1.cs @@ -84,11 +83,11 @@ - {B4E1A7A6-5D66-4326-8A8D-39338E6FC84C} + {97f3c222-fd10-488a-812b-e514c3a8863c} DFe.Utils - {9794CB98-4691-4218-A127-C573C2E7FF83} + {436a0bcb-3866-4969-a129-cfa03c194e1f} MDFe.Classes @@ -96,7 +95,7 @@ MDFe.Damdfe.Base - {730D4787-C8CF-4FA1-B9F5-DC814DBEAB7A} + {b16beabd-ccc2-4779-bcae-3f55c43c98ac} MDFe.Damdfe.Fast diff --git a/MDFe.Damdfe.AppTeste/Program.cs b/MDFe.Damdfe.AppTeste/Program.cs index e4a8bde97..04631cd2e 100755 --- a/MDFe.Damdfe.AppTeste/Program.cs +++ b/MDFe.Damdfe.AppTeste/Program.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using System.Windows.Forms; namespace MDFe.Damdfe.AppTeste diff --git a/MDFe.Damdfe.AppTeste/Properties/AssemblyInfo.cs b/MDFe.Damdfe.AppTeste/Properties/AssemblyInfo.cs deleted file mode 100755 index 7da318bd3..000000000 --- a/MDFe.Damdfe.AppTeste/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("MDFe.Damdfe.AppTeste")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("MDFe.Damdfe.AppTeste")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("e34320d9-c822-41cf-b11d-c4b64001748b")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/MDFe.Damdfe.AppTeste/Properties/Resources.Designer.cs b/MDFe.Damdfe.AppTeste/Properties/Resources.Designer.cs index 59d10553c..d66daedc7 100755 --- a/MDFe.Damdfe.AppTeste/Properties/Resources.Designer.cs +++ b/MDFe.Damdfe.AppTeste/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// O código foi gerado por uma ferramenta. +// Versão de Tempo de Execução:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// As alterações ao arquivo poderão causar comportamento incorreto e serão perdidas se +// o código for gerado novamente. // //------------------------------------------------------------------------------ @@ -13,13 +13,13 @@ namespace MDFe.Damdfe.AppTeste.Properties { /// - /// A strongly-typed resource class, for looking up localized strings, etc. + /// Uma classe de recurso de tipo de alta segurança, para pesquisar cadeias de caracteres localizadas etc. /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + // Essa classe foi gerada automaticamente pela classe StronglyTypedResourceBuilder + // através de uma ferramenta como ResGen ou Visual Studio. + // Para adicionar ou remover um associado, edite o arquivo .ResX e execute ResGen novamente + // com a opção /str, ou recrie o projeto do VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -33,7 +33,7 @@ internal Resources() { } /// - /// Returns the cached ResourceManager instance used by this class. + /// Retorna a instância de ResourceManager armazenada em cache usada por essa classe. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ internal Resources() { } /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. + /// Substitui a propriedade CurrentUICulture do thread atual para todas as + /// pesquisas de recursos que usam essa classe de recurso de tipo de alta segurança. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { diff --git a/MDFe.Damdfe.AppTeste/Properties/Settings.Designer.cs b/MDFe.Damdfe.AppTeste/Properties/Settings.Designer.cs index bfa4d2b3d..103fb593e 100755 --- a/MDFe.Damdfe.AppTeste/Properties/Settings.Designer.cs +++ b/MDFe.Damdfe.AppTeste/Properties/Settings.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// O código foi gerado por uma ferramenta. +// Versão de Tempo de Execução:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// As alterações ao arquivo poderão causar comportamento incorreto e serão perdidas se +// o código for gerado novamente. // //------------------------------------------------------------------------------ @@ -12,7 +12,7 @@ namespace MDFe.Damdfe.AppTeste.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.3.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/MDFe.Damdfe.Base/ConfiguracaoDamdfe.cs b/MDFe.Damdfe.Base/ConfiguracaoDamdfe.cs index 58bd295bf..78843daaf 100755 --- a/MDFe.Damdfe.Base/ConfiguracaoDamdfe.cs +++ b/MDFe.Damdfe.Base/ConfiguracaoDamdfe.cs @@ -40,11 +40,36 @@ public class ConfiguracaoDamdfe { public ConfiguracaoDamdfe() { - this.Logomarca = null; - this.DocumentoCancelado = false; - this.DocumentoEncerrado = false; + Logomarca = null; + DocumentoCancelado = false; + DocumentoEncerrado = false; + QuebrarLinhasObservacao = false; + MargemDireita = 6; + MargemEsquerda = 6; + MargemSuperior = 8; + MargemInferior = 8; } + /// + /// Margem direita da página em MM + /// + public float MargemDireita { get; set; } + + /// + /// Margem esquerda da página em MM + /// + public float MargemEsquerda { get; set; } + + /// + /// Margem superior da página em MM + /// + public float MargemSuperior { get; set; } + + /// + /// Margem inferior da página em MM + /// + public float MargemInferior { get; set; } + /// /// Logomarca do emitente a ser impressa no DAMDFe do MDFe /// @@ -65,6 +90,11 @@ public ConfiguracaoDamdfe() /// public string Desenvolvedor { get; set; } + /// + /// Substitui ; (ponto e virgula) por quebra de linha no DAMDFe + /// + public bool QuebrarLinhasObservacao { get; set; } + /// /// Retorna um objeto do tipo Image a partir da logo armazenada na propriedade Logomarca /// @@ -77,5 +107,18 @@ public Image ObterLogo() var image = Image.FromStream(ms); return image; } + + /// + /// Retorna um objeto do tipo MemoryStream a partir da logo armazenada na propriedade Logomarca + /// + /// + public MemoryStream ObterLogoMemory() + { + if (Logomarca == null) + return new MemoryStream(); + var ms = new MemoryStream(Logomarca); + + return ms; + } } } \ No newline at end of file diff --git a/MDFe.Damdfe.Base/MDFe.Damdfe.Base.csproj b/MDFe.Damdfe.Base/MDFe.Damdfe.Base.csproj index 966a0d84d..3492e9013 100755 --- a/MDFe.Damdfe.Base/MDFe.Damdfe.Base.csproj +++ b/MDFe.Damdfe.Base/MDFe.Damdfe.Base.csproj @@ -1,57 +1,24 @@ - - - + + - Debug - AnyCPU - {2419900B-1E90-4181-9338-3E84237C3B00} - Library - Properties - MDFe.Damdfe.Base - MDFe.Damdfe.Base - v4.5 - 512 - + net462;netstandard2.0;net6.0 + - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + 6.0.0 + + + + + + + + + + Always + + + + diff --git a/MDFe.Damdfe.Base/MDFe.Damdfe.Base.csproj.DotSettings b/MDFe.Damdfe.Base/MDFe.Damdfe.Base.csproj.DotSettings deleted file mode 100644 index 662f95686..000000000 --- a/MDFe.Damdfe.Base/MDFe.Damdfe.Base.csproj.DotSettings +++ /dev/null @@ -1,2 +0,0 @@ - - CSharp50 \ No newline at end of file diff --git a/MDFe.Damdfe.Base/MDFe/MDFeRetrato.frx b/MDFe.Damdfe.Base/MDFe/MDFeRetrato.frx new file mode 100644 index 000000000..42c85e14a --- /dev/null +++ b/MDFe.Damdfe.Base/MDFe/MDFeRetrato.frx @@ -0,0 +1,801 @@ + + + using System; +using System.IO; +using System.Collections; +using System.Collections.Generic; +using System.ComponentModel; +using System.Windows.Forms; +using System.Drawing; +using System.Data; +using System.Text.RegularExpressions; + +using FastReport; +using FastReport.Data; +using FastReport.Dialog; +using FastReport.Barcode; +using FastReport.Table; +using FastReport.Utils; + +using DFe.Classes.Flags; +using DFe.Classes.Entidades; +using MDFe.Classes.Informacoes; +using MDFe.Classes.Flags; +using MDFe.Utils.Flags; + +using VersaoServico = MDFe.Utils.Flags.VersaoServico; + +namespace FastReport +{ + public class ReportScript + { + private void Page1_StartPage(object sender, EventArgs e) + { + Overlay1.Height = 945f; + + Overlay1.Visible = ((TipoAmbiente)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Ide.TpAmb")) == TipoAmbiente.Homologacao; + } + + private string ObterSiglaDeUF(string codigoUF) + { + Estado estado = (Estado)System.Enum.Parse(typeof(Estado), codigoUF); + return estado.ToString(); + } + + private string FormatarCampo(long valor, char format) + { + return FormatarCampo(valor.ToString(), format); + } + + private string FormatarCampo(string valor, char format) + { + if (valor == null) return string.Empty; + + switch (format) + { + case 'c': //CEP + if (valor.Length == 8) + valor = valor.Substring(0,2) + "." + valor.Substring(2,3) + "-" + valor.Substring(5,3); + break; + case 'f': //Telefone /celular + if (valor.Length == 10) + valor = "(" +valor.Substring(0,2) + ")" + valor.Substring(2,4) + "-" + valor.Substring(6,4); + else if (valor.Length == 11) + valor = "(" +valor.Substring(0,2) + ")" + valor.Substring(2,5) + "-" + valor.Substring(7,4); + break; + case 'd': //cpf / cnpj + if (valor.Length == 11) + valor = valor.Substring(0,3)+"."+valor.Substring(3,3)+"."+valor.Substring(6,3)+"-"+valor.Substring(9,2); + else if (valor.Length == 14) + valor = valor.Substring(0,2)+"."+valor.Substring(2,3)+"."+valor.Substring(5,3)+"/"+valor.Substring(8,4)+"-"+valor.Substring(12,2); + break; + case 'p': + if (valor.Length == 7) + valor = valor.Substring(0,3)+"-"+valor.Substring(3,4); + break; + case 'z': + var chaveFormatada = ""; + for (int i = 0; i < valor.Length; i += 4) + chaveFormatada = chaveFormatada + valor.Substring(i, 4) + " "; + valor = chaveFormatada; + break; + } + return valor; + } + + private int? qtdeCTe = 0; + private int? qtdeNFe = 0; + private int? qtdeMDFe = 0; + + private void PageHeader1_BeforePrint(object sender, EventArgs e) + { + var chave = Substring((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Id"), 4); + if (!string.IsNullOrEmpty(chave) & chave.Length == 44) + { + var chaveFormatada = ""; + for (int i = 0; i < chave.Length; i += 4) + chaveFormatada = chaveFormatada + chave.Substring(i, 4) + " "; + txtChaveMDFe.Text = chaveFormatada; + } + + bool versao300 = (VersaoServico)Report.GetColumnValue("MDFeProcMDFe.Versao") == VersaoServico.Versao300; + + if (versao300) + { + var infSupl = ((MdfeInfMDFeSupl)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFeSupl")); + Barcode1.Visible = false; + + if (infSupl != null) + { + Barcode1.Visible = true; + } + } + + BarcodeChave.Text = chave; + + //Veiculos e Reboques + txtPlaca.Text = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicTracao.Placa")); + + txtRntrc.Text = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicTracao.Prop.RNTRC")); + if ( string.IsNullOrEmpty(txtRntrc.Text) ) + { + if (versao300) + txtRntrc.Text = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.RNTRC")); + else + txtRntrc.Text = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.RNTRC")); + } + + var veic = Report.GetDataSource("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicReboque"); + veic.Init(); + while (veic.HasMoreRows) + { + //txtPlaca.Text += Environment.NewLine + ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicReboque.Placa")); + txtPlaca.Text += ((String)Report.GetParameterValue("NewLine")) + ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicReboque.Placa")); + string rntrc = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicReboque.Prop.RNTRC")); + if ( string.IsNullOrEmpty(rntrc) ) + rntrc = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.RNTRC")); + txtRntrc.Text += ((String)Report.GetParameterValue("NewLine")) + rntrc; + + veic.Next(); + } + + //Condutores + txtCpf.Text = ""; + txtNome.Text = ""; + var moto = Report.GetDataSource("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicTracao.Condutor"); + moto.Init(); + while (moto.HasMoreRows) + { + txtCpf.Text += FormatarCampo((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicTracao.Condutor.CPF"), 'd') + ((String)Report.GetParameterValue("NewLine")); + txtNome.Text += ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicTracao.Condutor.XNome")) + ((String)Report.GetParameterValue("NewLine")); + moto.Next(); + } + + DefinirDocumentosFiscais(); + + //Vales Pedágio + txtCnpjResp.Text = ""; + txtCnpjFornec.Text = ""; + txtNumComprovante.Text = ""; + var vale = Report.GetDataSource("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.ValePed.Disp"); + vale.Init(); + while (vale.HasMoreRows) + { + txtCnpjResp.Text += FormatarCampo(((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.ValePed.Disp.CNPJPg")), 'd') + ((String)Report.GetParameterValue("NewLine")); + txtCnpjFornec.Text += FormatarCampo(((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.ValePed.Disp.CNPJForn")), 'd') + ((String)Report.GetParameterValue("NewLine")); + txtNumComprovante.Text += ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.ValePed.Disp.NCompra")) + ((String)Report.GetParameterValue("NewLine")); + vale.Next(); + } + + if (versao300) + { + txtCnpjResp.Text = ""; + txtCnpjFornec.Text = ""; + txtNumComprovante.Text = ""; + var valePed = Report.GetDataSource("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.valePed.Disp"); + valePed.Init(); + while (valePed.HasMoreRows) + { + + var cnpj = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.valePed.Disp.CNPJPg")); + var cpf = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.valePed.Disp.CPFPg")); + + txtCnpjResp.Text += FormatarCampo(cpf != null && cpf != string.Empty ? cpf : cnpj, 'd') + ((String)Report.GetParameterValue("NewLine")); + txtCnpjFornec.Text += FormatarCampo(((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.valePed.Disp.CNPJForn")), 'd') + ((String)Report.GetParameterValue("NewLine")); + txtNumComprovante.Text += ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.valePed.Disp.NCompra")) + ((String)Report.GetParameterValue("NewLine")); + valePed.Next(); + } + } + + //Seguros + if (versao300) + { + txtSeguroResponsavel.Text = ""; + txtSeguroSeguradora.Text = ""; + txtSeguroApolice.Text = ""; + var seguros = Report.GetDataSource("MDFeProcMDFe.MDFe.InfMDFe.Seg"); + seguros.Init(); + while (seguros.HasMoreRows) + { + string seguradora = (String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Seg.InfSeg.XSeg"); + if (seguradora.Length > 30) + seguradora = seguradora.Substring(0,30); + + string apolice = (String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Seg.NApol"); + if (apolice.Length > 20) + apolice = apolice.Substring(0,20); + + txtSeguroResponsavel.Text += ((MDFeRespSeg)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Seg.InfResp.RespSeg") == MDFeRespSeg.EmitenteDoMDFe ? "1 - EMITENTE" :"2 - CONTRATANTE") + ((String)Report.GetParameterValue("NewLine")); + txtSeguroSeguradora.Text += seguradora + ((String)Report.GetParameterValue("NewLine")); + txtSeguroApolice.Text += apolice + ((String)Report.GetParameterValue("NewLine")); + + seguros.Next(); + } + + txtContratantes.Text = ""; + var contratantes = Report.GetDataSource("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.InfANTT.InfContratante"); + contratantes.Init(); + while (contratantes.HasMoreRows) + { + var infContratante = (MDFeInfContratante)contratantes.CurrentRow; + string cnpj = infContratante.CNPJ; + string cpf = infContratante.CPF; + + txtContratantes.Text += FormatarCampo(cpf != null && cpf != string.Empty ? cpf : cnpj, 'd') + ((String)Report.GetParameterValue("NewLine")); + + contratantes.Next(); + } + } + + //Totais + qtdeCTe = ((Nullable<Int32>)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Tot.QCTe")); + qtdeCTe = qtdeCTe ?? 0; + Text38.Text = qtdeCTe.ToString(); + + qtdeNFe = ((Nullable<Int32>)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Tot.QNFe")); + qtdeNFe = qtdeNFe ?? 0; + Text39.Text = qtdeNFe.ToString(); + + qtdeMDFe = ((Nullable<Int32>)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Tot.QMDFe")); + qtdeMDFe = qtdeMDFe ?? 0; + Text40.Text = qtdeMDFe.ToString(); + + DataDocumentoCancelado.Visible = ((Boolean)Report.GetParameterValue("DocumentoCancelado")) || ((Boolean)Report.GetParameterValue("DocumentoEncerrado")); + Text60.Text = ((Boolean)Report.GetParameterValue("DocumentoEncerrado")) ? "DOCUMENTO ENCERRADO" : "DOCUMENTO CANCELADO"; + + if ((Boolean)Report.GetParameterValue("QuebrarLinhasObservacao")) + Text57.Text = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfAdic.InfCpl")).Replace(";",((String)Report.GetParameterValue("NewLine"))); + } + + private void DefinirDocumentosFiscais() + { + txtDocumentosFiscais.Text = ""; + var infMunDescargas = Report.GetDataSource("MDFeProcMDFe.MDFe.InfMDFe.InfDoc.InfMunDescarga"); + infMunDescargas.Init(); + while(infMunDescargas.HasMoreRows){ + var uf = (String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfDoc.InfMunDescarga.CMunDescarga"); + uf = ObterSiglaDeUF(uf.Substring(0, 2)); + + var infNfes = Report.GetDataSource("MDFeProcMDFe.MDFe.InfMDFe.InfDoc.InfMunDescarga.InfNFe"); + var infCtes = Report.GetDataSource("MDFeProcMDFe.MDFe.InfMDFe.InfDoc.InfMunDescarga.InfCTe"); + var infMdfes = Report.GetDataSource("MDFeProcMDFe.MDFe.InfMDFe.InfDoc.InfMunDescarga.InfMdFeTransps"); + + infNfes.Init(); + infCtes.Init(); + infMdfes.Init(); + + if (infNfes.RowCount > 0 || infCtes.RowCount > 0 || infMdfes.RowCount > 0) + { + txtDocumentosFiscais.Text += (String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfDoc.InfMunDescarga.XMunDescarga") + + "/" + uf + + " - " + (String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfDoc.InfMunDescarga.CMunDescarga") + ((String)Report.GetParameterValue("NewLine")); + + while(infNfes.HasMoreRows){ + var chNfe = FormatarCampo((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfDoc.InfMunDescarga.InfNFe.ChNFe"), 'z'); + if(chNfe != null) + txtDocumentosFiscais.Text += "NFe - " + chNfe + ((String)Report.GetParameterValue("NewLine")); + infNfes.Next(); + } + + while(infCtes.HasMoreRows){ + var chCte = FormatarCampo((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfDoc.InfMunDescarga.InfCTe.ChCTe"), 'z'); + if(chCte != null) + txtDocumentosFiscais.Text += "CTe - " + chCte + ((String)Report.GetParameterValue("NewLine")); + infCtes.Next(); + } + + while(infMdfes.HasMoreRows){ + var chMdfe = FormatarCampo((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfDoc.InfMunDescarga.InfMdFeTransps.ChMDFe"), 'z'); + if(chMdfe != null) + txtDocumentosFiscais.Text += "MDFe - " + chMdfe + ((String)Report.GetParameterValue("NewLine")); + infMdfes.Next(); + } + + txtDocumentosFiscais.Text += ((String)Report.GetParameterValue("NewLine")); + } + + infMunDescargas.Next(); + } + } + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MDFe.Damdfe.Base/Properties/AssemblyInfo.cs b/MDFe.Damdfe.Base/Properties/AssemblyInfo.cs deleted file mode 100755 index a12582b08..000000000 --- a/MDFe.Damdfe.Base/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("MDFe.Damdfe.Base")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("MDFe.Damdfe.Base")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("2419900b-1e90-4181-9338-3e84237c3b00")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/MDFe.Damdfe.Fast/DamdfeFrMDFe.cs b/MDFe.Damdfe.Fast/DamdfeFrMDFe.cs index bf56856f1..a1509ae6d 100755 --- a/MDFe.Damdfe.Fast/DamdfeFrMDFe.cs +++ b/MDFe.Damdfe.Fast/DamdfeFrMDFe.cs @@ -32,10 +32,13 @@ /********************************************************************************/ using System.IO; +using System; +using DFe.Utils; using FastReport; +using FastReport.Export.Html; using FastReport.Export.Pdf; -using MDFe.Damdfe.Base; using MDFe.Classes.Retorno; +using MDFe.Damdfe.Base; namespace MDFe.Damdfe.Fast { @@ -43,12 +46,23 @@ public class DamdfeFrMDFe { protected Report Relatorio; - public DamdfeFrMDFe(MDFeProcMDFe proc, ConfiguracaoDamdfe config) + public DamdfeFrMDFe(MDFeProcMDFe proc, ConfiguracaoDamdfe config, string arquivoRelatorio = null) { Relatorio = new Report(); RegisterData(proc); + + if (string.IsNullOrWhiteSpace(arquivoRelatorio)) + { + const string caminho = @"MDFe\MDFeRetrato.frx"; + var frx = FrxFileHelper.TryGetFrxFile(caminho); + Relatorio.Load(new MemoryStream(frx)); + } + else + { + Relatorio.Load(arquivoRelatorio); + } + Configurar(config); - } public DamdfeFrMDFe() @@ -59,18 +73,18 @@ public DamdfeFrMDFe() public void RegisterData(MDFeProcMDFe proc) { Relatorio.RegisterData(new[] { proc }, "MDFeProcMDFe", 20); - Relatorio.GetDataSource("MDFeProcMDFe").Enabled = true; - Relatorio.Load(new MemoryStream(Properties.Resources.MDFeRetrato)); - } - + Relatorio.GetDataSource("MDFeProcMDFe").Enabled = true; + } + public void Configurar(ConfiguracaoDamdfe config) { - Relatorio.SetParameterValue("DoocumentoCancelado", config.DocumentoCancelado); + Relatorio.SetParameterValue("DocumentoCancelado", config.DocumentoCancelado); Relatorio.SetParameterValue("DocumentoEncerrado", config.DocumentoEncerrado); Relatorio.SetParameterValue("Desenvolvedor", config.Desenvolvedor); + Relatorio.SetParameterValue("QuebrarLinhasObservacao", config.QuebrarLinhasObservacao); ((PictureObject)Relatorio.FindObject("poEmitLogo")).Image = config.ObterLogo(); } - + /// /// Abre a janela de visualização do DAMDFe /// @@ -111,5 +125,120 @@ public void ExportarPdf(string arquivo) Relatorio.Prepare(); Relatorio.Export(new PDFExport(), arquivo); } + + /// + /// Converte o DAMDFe para PDF e copia para o stream + /// + /// Variável do tipo Stream para output + public void ExportarPdf(Stream outputStream) + { + Relatorio.Prepare(); + Relatorio.Export(new PDFExport(), outputStream); + outputStream.Position = 0; + } + + /// + /// Converte o DAMDFe para PDF e salva-o no caminho/arquivo indicado + /// + /// Caminho/arquivo onde deve ser salvo o PDF do DAMDFe + /// Instancia do tipo de exportacao do FastReport + public void ExportarPdf(string arquivo, FastReport.Export.ExportBase exportBase) + { + if (exportBase == null) + throw new NullReferenceException("exportBase deve ter um objeto instanciado, tente 'new PDFExport()'"); + + Relatorio.Prepare(); + Relatorio.Export(exportBase, arquivo); + } + + /// + /// Converte o DAMDFe para PDF e copia para o stream + /// + /// Variável do tipo Stream para output + /// Instancia do tipo de exportacao do FastReport + public void ExportarPdf(Stream outputStream, FastReport.Export.ExportBase exportBase) + { + if (exportBase == null) + throw new NullReferenceException("exportBase deve ter um objeto instanciado, tente 'new PDFExport()'"); + + Relatorio.Prepare(); + Relatorio.Export(exportBase, outputStream); + outputStream.Position = 0; + } + + /// + /// Converte o DAMDFe para HTML e salva-o no caminho/arquivo indicado + /// + public MemoryStream ExportarPdf() + { + Relatorio.DoublePass = true; + Relatorio.SmoothGraphics = false; + FastReport.Utils.Config.WebMode = true; + Relatorio.Prepare(); + + var pdfExport = new PDFExport(); + + var stream = new MemoryStream(); + Relatorio.Report.Export(pdfExport, stream); + //pdfExport.Export(Relatorio, stream); + Relatorio.Dispose(); + pdfExport.Dispose(); + + stream.Position = 0; + + return stream; + } + + /// + /// Converte o DAMDFe para HTML e salva-o no caminho/arquivo indicado + /// + public Stream ObterHTML() + { + Relatorio.DoublePass = true; + Relatorio.SmoothGraphics = false; + Relatorio.Prepare(); + + using (var html = new HTMLExport()) + { + html.EmbedPictures = true; + html.SinglePage = false; + html.SubFolder = false; + html.Layers = true; + html.Navigator = false; + html.Pictures = true; + html.EnableMargins = true; + html.SaveStreams = true; + html.Wysiwyg = true; + + var stream = new MemoryStream(); + Relatorio.Export(html, stream); + + return stream; + } + } + + /// + /// Converte o DAMDFe para HTML e salva-o no caminho/arquivo indicado + /// + /// Caminho/arquivo onde deve ser salvo o HTML do DAMDFe + public void ExportarHTML(string arquivo) + { + Relatorio.Prepare(); + + var html = new HTMLExport + { + EmbedPictures = true, + SinglePage = true, + EnableVectorObjects = true, + Wysiwyg = true, + SubFolder = false, + Layers = true, + Navigator = false, + Pictures = true, + EnableMargins = true + }; + + Relatorio.Export(html, arquivo); + } } } \ No newline at end of file diff --git a/MDFe.Damdfe.Fast/Dlls/FastReport.Bars.dll b/MDFe.Damdfe.Fast/Dlls/FastReport.Bars.dll index 35f504f5a..b87e4f0df 100755 Binary files a/MDFe.Damdfe.Fast/Dlls/FastReport.Bars.dll and b/MDFe.Damdfe.Fast/Dlls/FastReport.Bars.dll differ diff --git a/MDFe.Damdfe.Fast/Dlls/FastReport.Editor.dll b/MDFe.Damdfe.Fast/Dlls/FastReport.Editor.dll index 1b77c5f95..1f7146fb5 100755 Binary files a/MDFe.Damdfe.Fast/Dlls/FastReport.Editor.dll and b/MDFe.Damdfe.Fast/Dlls/FastReport.Editor.dll differ diff --git a/MDFe.Damdfe.Fast/Dlls/FastReport.dll b/MDFe.Damdfe.Fast/Dlls/FastReport.dll index a7982eb81..f73bc2fca 100755 Binary files a/MDFe.Damdfe.Fast/Dlls/FastReport.dll and b/MDFe.Damdfe.Fast/Dlls/FastReport.dll differ diff --git a/MDFe.Damdfe.Fast/MDFe.Damdfe.Fast.csproj b/MDFe.Damdfe.Fast/MDFe.Damdfe.Fast.csproj index 0efdc2e93..98fff2bf9 100755 --- a/MDFe.Damdfe.Fast/MDFe.Damdfe.Fast.csproj +++ b/MDFe.Damdfe.Fast/MDFe.Damdfe.Fast.csproj @@ -1,99 +1,20 @@ - - - - - Debug - AnyCPU - {730D4787-C8CF-4FA1-B9F5-DC814DBEAB7A} - Library - Properties - MDFe.Damdfe.Fast - MDFe.Damdfe.Fast - v4.5 - 512 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - False - Dlls\FastReport.dll - - - False - Dlls\FastReport.Bars.dll - - - False - Dlls\FastReport.Editor.dll - - - - - - - - - - - - - - - - True - True - Resources.resx - - - - - {9794CB98-4691-4218-A127-C573C2E7FF83} - MDFe.Classes - - - {2419900b-1e90-4181-9338-3e84237c3b00} - MDFe.Damdfe.Base - - - - - ResXFileCodeGenerator - Resources.Designer.cs - - - - - - - - - - - - - \ No newline at end of file + + + + net462 + + + + + + + + + + + + + + + + diff --git a/MDFe.Damdfe.Fast/MDFe.Damdfe.Fast.csproj.DotSettings b/MDFe.Damdfe.Fast/MDFe.Damdfe.Fast.csproj.DotSettings deleted file mode 100644 index 662f95686..000000000 --- a/MDFe.Damdfe.Fast/MDFe.Damdfe.Fast.csproj.DotSettings +++ /dev/null @@ -1,2 +0,0 @@ - - CSharp50 \ No newline at end of file diff --git a/MDFe.Damdfe.Fast/MDFeRetrato.frx b/MDFe.Damdfe.Fast/MDFeRetrato.frx deleted file mode 100755 index 05cfefbee..000000000 --- a/MDFe.Damdfe.Fast/MDFeRetrato.frx +++ /dev/null @@ -1,561 +0,0 @@ - - - using System; -using System.Collections; -using System.Collections.Generic; -using System.ComponentModel; -using System.Windows.Forms; -using System.Drawing; -using System.Data; - -using FastReport; -using FastReport.Data; -using FastReport.Dialog; -using FastReport.Barcode; -using FastReport.Table; -using FastReport.Utils; - -using DFe.Classes.Flags; -using MDFe.Classes.Informacoes; - - -namespace FastReport -{ - public class ReportScript - { - private string FormatarCampo(long valor, char format) - { - return FormatarCampo(valor.ToString(), format); - } - - private string FormatarCampo(string valor, char format) - { - switch (format) - { - case 'c': //CEP - if (valor.Length == 8) - valor = valor.Substring(0,2) + "." + valor.Substring(2,3) + "-" + valor.Substring(5,3); - break; - case 'f': //Telefone /celular - if (valor.Length == 10) - valor = "(" +valor.Substring(0,2) + ")" + valor.Substring(2,4) + "-" + valor.Substring(6,4); - else if (valor.Length == 11) - valor = "(" +valor.Substring(0,2) + ")" + valor.Substring(2,5) + "-" + valor.Substring(7,4); - break; - case 'd': //cpf / cnpj - if (valor.Length == 11) - valor = valor.Substring(0,3)+"."+valor.Substring(3,3)+"."+valor.Substring(6,3)+"-"+valor.Substring(9,2); - else if (valor.Length == 14) - valor = valor.Substring(0,2)+"."+valor.Substring(2,3)+"."+valor.Substring(5,3)+"/"+valor.Substring(8,4)+"-"+valor.Substring(12,2); - break; - case 'p': - if (valor.Length == 7) - valor = valor.Substring(0,3)+"-"+valor.Substring(3,4); - break; - } - return valor; - } - - private void txtChaveMDFe_BeforePrint(object sender, EventArgs e) - { - var chave = Substring( ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Id")) , 3); - if (!string.IsNullOrEmpty(chave) & chave.Length == 44) - { - var chaveFormatada = ""; - for (int i = 0; i < chave.Length; i += 4) - chaveFormatada = chaveFormatada + chave.Substring(i, 4) + " "; - txtChaveMDFe.Text = chaveFormatada; - } - } - - - private int? qtdeCTe = 0; - private int? qtdeNFe = 0; - private int? qtdeMDFe = 0; - - private void PageHeader1_BeforePrint(object sender, EventArgs e) - { - //Veiculos e Reboques - txtPlaca.Text = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicTracao.Placa")); - txtRntrc.Text = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicTracao.Prop.RNTRC")); - if ( string.IsNullOrEmpty(txtRntrc.Text) ) - txtRntrc.Text = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.RNTRC")); - - var veic = Report.GetDataSource("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicReboque"); - veic.Init(); - while (veic.HasMoreRows) - { - txtPlaca.Text += Environment.NewLine + ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicReboque.Placa")); - string rntrc = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicReboque.Prop.RNTRC")); - if ( string.IsNullOrEmpty(rntrc) ) - rntrc = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.RNTRC")); - txtRntrc.Text += Environment.NewLine + rntrc; - - veic.Next(); - } - - //Condutores - txtCpf.Text = ""; - txtNome.Text = ""; - var moto = Report.GetDataSource("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicTracao.Condutor"); - moto.Init(); - while (moto.HasMoreRows) - { - txtCpf.Text += FormatarCampo((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicTracao.Condutor.CPF"), 'd') + Environment.NewLine; - txtNome.Text += ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicTracao.Condutor.XNome")) + Environment.NewLine; - moto.Next(); - } - - //Vales Pedágio - txtCnpjResp.Text = ""; - txtCnpjFornec.Text = ""; - txtNumComprovante.Text = ""; - var vale = Report.GetDataSource("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.ValePed.Disp"); - vale.Init(); - while (vale.HasMoreRows) - { - txtCnpjResp.Text += FormatarCampo(((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.ValePed.Disp.CNPJPg")), 'd') + Environment.NewLine; - txtCnpjFornec.Text += FormatarCampo(((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.ValePed.Disp.CNPJForn")), 'd') + Environment.NewLine; - txtNumComprovante.Text += ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.ValePed.Disp.NCompra")) + Environment.NewLine; - vale.Next(); - } - - //Totais - qtdeCTe = ((Nullable<Int32>)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Tot.QCTe")); - qtdeCTe = qtdeCTe ?? 0; - Text38.Text = qtdeCTe.ToString(); - - qtdeNFe = ((Nullable<Int32>)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Tot.QNFe")); - qtdeNFe = qtdeNFe ?? 0; - Text39.Text = qtdeNFe.ToString(); - - qtdeMDFe = ((Nullable<Int32>)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Tot.QMDFe")); - qtdeMDFe = qtdeMDFe ?? 0; - Text40.Text = qtdeMDFe.ToString(); - - Subreport1.Visible = qtdeCTe > 0; - Subreport2.Visible = qtdeNFe > 0; - Subreport3.Visible = qtdeMDFe > 0; - - Child1.Visible = ((Boolean)Report.GetParameterValue("DoocumentoCancelado")) || ((Boolean)Report.GetParameterValue("DocumentoEncerrado")); - Text60.Text = ((Boolean)Report.GetParameterValue("DocumentoEncerrado")) ? "DOCUMENTO ENCERRADO" : "DOCUMENTO CANCELADO"; - Text61.Visible = ((TipoAmbiente)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Ide.TpAmb")) == TipoAmbiente.Homologacao; - } - - } -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MDFe.Damdfe.Fast/Properties/AssemblyInfo.cs b/MDFe.Damdfe.Fast/Properties/AssemblyInfo.cs deleted file mode 100755 index 381ebe186..000000000 --- a/MDFe.Damdfe.Fast/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("MDFe.Damdfe.Fast")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("MDFe.Damdfe.Fast")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("730d4787-c8cf-4fa1-b9f5-dc814dbeab7a")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/MDFe.Damdfe.Fast/Properties/Resources.Designer.cs b/MDFe.Damdfe.Fast/Properties/Resources.Designer.cs deleted file mode 100755 index ac5f97a1c..000000000 --- a/MDFe.Damdfe.Fast/Properties/Resources.Designer.cs +++ /dev/null @@ -1,73 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace MDFe.Damdfe.Fast.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MDFe.Damdfe.Fast.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] MDFeRetrato { - get { - object obj = ResourceManager.GetObject("MDFeRetrato", resourceCulture); - return ((byte[])(obj)); - } - } - } -} diff --git a/MDFe.Damdfe.Fast/Properties/Resources.resx b/MDFe.Damdfe.Fast/Properties/Resources.resx deleted file mode 100755 index 1a794fa42..000000000 --- a/MDFe.Damdfe.Fast/Properties/Resources.resx +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\MDFeRetrato.frx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - diff --git a/MDFe.Damdfe.OpenFast/DamdfeFrMDFe.cs b/MDFe.Damdfe.OpenFast/DamdfeFrMDFe.cs new file mode 100644 index 000000000..b4baec28d --- /dev/null +++ b/MDFe.Damdfe.OpenFast/DamdfeFrMDFe.cs @@ -0,0 +1,196 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System; +using System.IO; +using DFe.Utils; +using FastReport; +using FastReport.Export.Html; +using FastReport.Export.PdfSimple; +using MDFe.Classes.Retorno; +using MDFe.Damdfe.Base; + +namespace MDFe.Damdfe.OpenFast +{ + public class DamdfeFrMDFe + { + protected Report Relatorio; + + public DamdfeFrMDFe(MDFeProcMDFe proc, ConfiguracaoDamdfe config, string arquivoRelatorio = null) + { + Relatorio = new Report(); + RegisterData(proc); + + if (string.IsNullOrWhiteSpace(arquivoRelatorio)) + { + const string caminho = @"MDFe\MDFeRetrato.frx"; + var frx = FrxFileHelper.TryGetFrxFile(caminho); + Relatorio.Load(new MemoryStream(frx)); + } + else + { + Relatorio.Load(arquivoRelatorio); + } + + Configurar(config); + } + + public DamdfeFrMDFe() + { + Relatorio = new Report(); + } + + public void RegisterData(MDFeProcMDFe proc) + { + Relatorio.RegisterData(new[] { proc }, "MDFeProcMDFe", 20); + Relatorio.GetDataSource("MDFeProcMDFe").Enabled = true; + } + + public void Configurar(ConfiguracaoDamdfe config) + { + Relatorio.SetParameterValue("NewLine", Environment.NewLine); + Relatorio.SetParameterValue("Tabulation", "\t"); + Relatorio.SetParameterValue("DocumentoCancelado", config.DocumentoCancelado); + Relatorio.SetParameterValue("DocumentoEncerrado", config.DocumentoEncerrado); + Relatorio.SetParameterValue("Desenvolvedor", config.Desenvolvedor); + Relatorio.SetParameterValue("QuebrarLinhasObservacao", config.QuebrarLinhasObservacao); + ((PictureObject)Relatorio.FindObject("poEmitLogo")).Image = config.ObterLogo(); + ((ReportPage)Relatorio.FindObject("Page1")).LeftMargin = config.MargemEsquerda; + ((ReportPage)Relatorio.FindObject("Page1")).RightMargin = config.MargemDireita; + ((ReportPage)Relatorio.FindObject("Page1")).TopMargin = config.MargemSuperior; + ((ReportPage)Relatorio.FindObject("Page1")).BottomMargin = config.MargemInferior; + } + + /// + /// Converte o DAMDFe para PDF e salva-o no caminho/arquivo indicado + /// + /// Caminho/arquivo onde deve ser salvo o PDF do DAMDFe + public void ExportarPdf(string arquivo) + { + Relatorio.Prepare(); + Relatorio.Export(new PDFSimpleExport(), arquivo); + } + + /// + /// Converte o DAMDFe para PDF e copia para o stream + /// + /// Variável do tipo Stream para output + public void ExportarPdf(Stream outputStream) + { + Relatorio.Prepare(); + Relatorio.Export(new PDFSimpleExport(), outputStream); + outputStream.Position = 0; + } + + /// + /// Converte o DAMDFe para PDF e salva-o no caminho/arquivo indicado + /// + /// Caminho/arquivo onde deve ser salvo o PDF do DAMDFe + /// Instancia do tipo de exportacao do FastReport + public void ExportarPdf(string arquivo, FastReport.Export.ExportBase exportBase) + { + if (exportBase == null) + throw new NullReferenceException("exportBase deve ter um objeto instanciado, tente 'new PDFExport()'"); + + Relatorio.Prepare(); + Relatorio.Export(exportBase, arquivo); + } + + /// + /// Converte o DAMDFe para PDF e copia para o stream + /// + /// Variável do tipo Stream para output + /// Instancia do tipo de exportacao do FastReport + public void ExportarPdf(Stream outputStream, FastReport.Export.ExportBase exportBase) + { + if (exportBase == null) + throw new NullReferenceException("exportBase deve ter um objeto instanciado, tente 'new PDFExport()'"); + + Relatorio.Prepare(); + Relatorio.Export(exportBase, outputStream); + outputStream.Position = 0; + } + + /// + /// Converte o DAMDFe para HTML e salva-o no caminho/arquivo indicado + /// + public MemoryStream ExportarPdf() + { + Relatorio.DoublePass = true; + Relatorio.SmoothGraphics = false; + FastReport.Utils.Config.WebMode = true; + + Relatorio.Prepare(); + + var pdfExport = new PDFSimpleExport(); + + var stream = new MemoryStream(); + Relatorio.Report.Export(pdfExport, stream); + //pdfExport.Export(Relatorio, stream); + Relatorio.Dispose(); + pdfExport.Dispose(); + + stream.Position = 0; + + return stream; + } + + /// + /// Converte o DAMDFe para HTML e salva-o no caminho/arquivo indicado + /// + public Stream ObterHTML() + { + Relatorio.DoublePass = true; + Relatorio.SmoothGraphics = false; + Relatorio.Prepare(); + + using (var html = new HTMLExport()) + { + html.EmbedPictures = true; + html.SinglePage = false; + html.SubFolder = false; + html.Layers = true; + html.Navigator = false; + html.Pictures = true; + html.EnableMargins = true; + html.SaveStreams = true; + html.Wysiwyg = true; + + var stream = new MemoryStream(); + Relatorio.Export(html, stream); + + return stream; + } + } + } +} \ No newline at end of file diff --git a/MDFe.Damdfe.OpenFast/MDFe.Damdfe.OpenFast.csproj b/MDFe.Damdfe.OpenFast/MDFe.Damdfe.OpenFast.csproj new file mode 100644 index 000000000..ee560f9ba --- /dev/null +++ b/MDFe.Damdfe.OpenFast/MDFe.Damdfe.OpenFast.csproj @@ -0,0 +1,18 @@ + + + net462;netstandard2.0;net6.0 + openfastreport + + + + + + + + + + + + + + diff --git a/MDFe.Servicos/ConsultaNaoEncerradosMDFe/ServicoMDFeConsultaNaoEncerrados.cs b/MDFe.Servicos/ConsultaNaoEncerradosMDFe/ServicoMDFeConsultaNaoEncerrados.cs old mode 100755 new mode 100644 index 453f17264..ee8fbab58 --- a/MDFe.Servicos/ConsultaNaoEncerradosMDFe/ServicoMDFeConsultaNaoEncerrados.cs +++ b/MDFe.Servicos/ConsultaNaoEncerradosMDFe/ServicoMDFeConsultaNaoEncerrados.cs @@ -31,25 +31,26 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Classes.Retorno.MDFeConsultaNaoEncerrado; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; namespace MDFe.Servicos.ConsultaNaoEncerradosMDFe { public class ServicoMDFeConsultaNaoEncerrados { - public MDFeRetConsMDFeNao MDFeConsultaNaoEncerrados(string cnpj) + public MDFeRetConsMDFeNao MDFeConsultaNaoEncerrados(string cnpjCpf, MDFeConfiguracao cfgMdfe = null) { - var consMDFeNaoEnc = ClassesFactory.CriarConsMDFeNaoEnc(cnpj); - consMDFeNaoEnc.ValidarSchema(); - consMDFeNaoEnc.SalvarXmlEmDisco(); + var consMDFeNaoEnc = ClassesFactory.CriarConsMDFeNaoEnc(cnpjCpf, cfgMdfe); + consMDFeNaoEnc.ValidarSchema(cfgMdfe); + consMDFeNaoEnc.SalvarXmlEmDisco(cfgMdfe); - var webService = WsdlFactory.CriaWsdlMDFeConsNaoEnc(); + var webService = WsdlFactory.CriaWsdlMDFeConsNaoEnc(cfgMdfe); var retornoXml = webService.mdfeConsNaoEnc(consMDFeNaoEnc.CriaRequestWs()); var retorno = MDFeRetConsMDFeNao.LoadXmlString(retornoXml.OuterXml, consMDFeNaoEnc); - retorno.SalvarXmlEmDisco(cnpj); + retorno.SalvarXmlEmDisco(cnpjCpf, cfgMdfe); return retorno; } diff --git a/MDFe.Servicos/ConsultaProtocoloMDFe/ServicoMDFeConsultaProtocolo.cs b/MDFe.Servicos/ConsultaProtocoloMDFe/ServicoMDFeConsultaProtocolo.cs old mode 100755 new mode 100644 index fd0d579d0..8259c8d9c --- a/MDFe.Servicos/ConsultaProtocoloMDFe/ServicoMDFeConsultaProtocolo.cs +++ b/MDFe.Servicos/ConsultaProtocoloMDFe/ServicoMDFeConsultaProtocolo.cs @@ -31,25 +31,27 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Classes.Retorno.MDFeConsultaProtocolo; using MDFe.Servicos.Factory; +using MDFe.Servicos.Interfaces; +using MDFe.Utils.Configuracoes; namespace MDFe.Servicos.ConsultaProtocoloMDFe { - public class ServicoMDFeConsultaProtocolo + public class ServicoMDFeConsultaProtocolo : IServicoMDFeConsultaProtocolo { - public MDFeRetConsSitMDFe MDFeConsultaProtocolo(string chave) + public MDFeRetConsSitMDFe MDFeConsultaProtocolo(string chave, MDFeConfiguracao cfgMdfe = null) { - var consSitMdfe = ClassesFactory.CriarConsSitMDFe(chave); - consSitMdfe.ValidarSchema(); - consSitMdfe.SalvarXmlEmDisco(); + var consSitMdfe = ClassesFactory.CriarConsSitMDFe(chave, cfgMdfe); + consSitMdfe.ValidarSchema(cfgMdfe); + consSitMdfe.SalvarXmlEmDisco(cfgMdfe); - var webService = WsdlFactory.CriaWsdlMDFeConsulta(); + var webService = WsdlFactory.CriaWsdlMDFeConsulta(cfgMdfe); var retornoXml = webService.mdfeConsultaMDF(consSitMdfe.CriaRequestWs()); var retorno = MDFeRetConsSitMDFe.LoadXml(retornoXml.OuterXml, consSitMdfe); - retorno.SalvarXmlEmDisco(chave); + retorno.SalvarXmlEmDisco(chave, cfgMdfe); return retorno; } diff --git a/MDFe.Servicos/Enderecos/Helper/UrlHelper.cs b/MDFe.Servicos/Enderecos/Helper/UrlHelper.cs old mode 100755 new mode 100644 index 681a5c52b..da0aba437 --- a/MDFe.Servicos/Enderecos/Helper/UrlHelper.cs +++ b/MDFe.Servicos/Enderecos/Helper/UrlHelper.cs @@ -49,7 +49,8 @@ public static UrlMDFe ObterUrlServico(TipoAmbiente ambiente) MDFeRetRecepcao = "https://mdfe.svrs.rs.gov.br/ws/MDFeRetRecepcao/MDFeRetRecepcao.asmx", MDFeConsulta = "https://mdfe.svrs.rs.gov.br/ws/MDFeConsulta/MDFeConsulta.asmx", MDFeRecepcaoEvento = "https://mdfe.svrs.rs.gov.br/ws/MDFeRecepcaoEvento/MDFeRecepcaoEvento.asmx", - MDFeRecepcao = "https://mdfe.svrs.rs.gov.br/ws/MDFerecepcao/MDFeRecepcao.asmx" + MDFeRecepcao = "https://mdfe.svrs.rs.gov.br/ws/MDFerecepcao/MDFeRecepcao.asmx", + MDFeRecepcaoSinc = "https://mdfe.svrs.rs.gov.br/ws/MDFeRecepcaoSinc/MDFeRecepcaoSinc.asmx" }; case TipoAmbiente.Homologacao: return new UrlMDFe @@ -59,7 +60,8 @@ public static UrlMDFe ObterUrlServico(TipoAmbiente ambiente) MDFeRecepcao = "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFerecepcao/MDFeRecepcao.asmx", MDFeRecepcaoEvento = "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeRecepcaoEvento/MDFeRecepcaoEvento.asmx", MDFeRetRecepcao = "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeRetRecepcao/MDFeRetRecepcao.asmx", - MDFeStatusServico = "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeStatusServico/MDFeStatusServico.asmx" + MDFeStatusServico = "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeStatusServico/MDFeStatusServico.asmx", + MDFeRecepcaoSinc = "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeRecepcaoSinc/MDFeRecepcaoSinc.asmx" }; } diff --git a/MDFe.Servicos/Enderecos/UrlMDFe.cs b/MDFe.Servicos/Enderecos/UrlMDFe.cs old mode 100755 new mode 100644 index 2f456aa20..68864d448 --- a/MDFe.Servicos/Enderecos/UrlMDFe.cs +++ b/MDFe.Servicos/Enderecos/UrlMDFe.cs @@ -36,6 +36,7 @@ public class UrlMDFe { public string MDFeRecepcao { get; set; } public string MDFeRetRecepcao { get; set; } + public string MDFeRecepcaoSinc { get; set; } public string MDFeRecepcaoEvento { get; set; } public string MDFeConsulta { get; set; } public string MDFeStatusServico { get; set; } diff --git a/MDFe.Servicos/EventosMDFe/Contratos/IServicoController.cs b/MDFe.Servicos/EventosMDFe/Contratos/IServicoController.cs old mode 100755 new mode 100644 index d5be00246..161ea4685 --- a/MDFe.Servicos/EventosMDFe/Contratos/IServicoController.cs +++ b/MDFe.Servicos/EventosMDFe/Contratos/IServicoController.cs @@ -30,15 +30,17 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using MDFe.Classes.Informacoes.Evento; using MDFe.Classes.Informacoes.Evento.Flags; using MDFe.Classes.Retorno.MDFeEvento; +using MDFe.Utils.Configuracoes; using MDFeEletronico = MDFe.Classes.Informacoes.MDFe; namespace MDFe.Servicos.EventosMDFe.Contratos { public interface IServicoController { - MDFeRetEventoMDFe Executar(MDFeEletronico mdfe, byte sequenciaEvento, MDFeEventoContainer eventoContainer, MDFeTipoEvento tipoEvento); + MDFeRetEventoMDFe Executar(MDFeEletronico mdfe, byte sequenciaEvento, MDFeEventoContainer eventoContainer, MDFeTipoEvento tipoEvento, MDFeConfiguracao cfgMdfe = null); } } \ No newline at end of file diff --git a/MDFe.Servicos/EventosMDFe/EventoCancelar.cs b/MDFe.Servicos/EventosMDFe/EventoCancelar.cs old mode 100755 new mode 100644 index c2d395ffd..4a9f55e5c --- a/MDFe.Servicos/EventosMDFe/EventoCancelar.cs +++ b/MDFe.Servicos/EventosMDFe/EventoCancelar.cs @@ -34,17 +34,20 @@ using MDFe.Classes.Informacoes.Evento.Flags; using MDFe.Classes.Retorno.MDFeEvento; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; using MDFeEletronico = MDFe.Classes.Informacoes.MDFe; namespace MDFe.Servicos.EventosMDFe { public class EventoCancelar { - public MDFeRetEventoMDFe MDFeEventoCancelar(MDFeEletronico mdfe, byte sequenciaEvento, string protocolo, string justificativa) + public MDFeRetEventoMDFe MDFeEventoCancelar(MDFeEletronico mdfe, byte sequenciaEvento, string protocolo, string justificativa, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var cancelamento = ClassesFactory.CriaEvCancMDFe(protocolo, justificativa); - var retorno = new ServicoController().Executar(mdfe, sequenciaEvento, cancelamento, MDFeTipoEvento.Cancelamento); + var retorno = new ServicoController().Executar(mdfe, sequenciaEvento, cancelamento, MDFeTipoEvento.Cancelamento, config); return retorno; } diff --git a/MDFe.Servicos/EventosMDFe/EventoEncerramento.cs b/MDFe.Servicos/EventosMDFe/EventoEncerramento.cs old mode 100755 new mode 100644 index 92af2c082..e7de8b41c --- a/MDFe.Servicos/EventosMDFe/EventoEncerramento.cs +++ b/MDFe.Servicos/EventosMDFe/EventoEncerramento.cs @@ -31,20 +31,35 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using DFe.Classes.Entidades; using MDFe.Classes.Informacoes.Evento.Flags; using MDFe.Classes.Retorno.MDFeEvento; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; using MDFeEletronico = MDFe.Classes.Informacoes.MDFe; namespace MDFe.Servicos.EventosMDFe { public class EventoEncerramento { - public MDFeRetEventoMDFe MDFeEventoEncerramento(MDFeEletronico mdfe, byte sequenciaEvento, string protocolo) + public MDFeRetEventoMDFe MDFeEventoEncerramento(MDFeEletronico mdfe, byte sequenciaEvento, string protocolo, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var encerramento = ClassesFactory.CriaEvEncMDFe(mdfe, protocolo); - var retorno = new ServicoController().Executar(mdfe, sequenciaEvento, encerramento, MDFeTipoEvento.Encerramento); + var retorno = new ServicoController().Executar(mdfe, sequenciaEvento, encerramento, MDFeTipoEvento.Encerramento, config); + + return retorno; + } + + public MDFeRetEventoMDFe MDFeEventoEncerramento(MDFeEletronico mdfe, Estado estadoEncerramento, long codigoMunicipioEncerramento, byte sequenciaEvento, string protocolo, MDFeConfiguracao cfgMdfe = null) + { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var encerramento = ClassesFactory.CriaEvEncMDFe(estadoEncerramento, codigoMunicipioEncerramento, protocolo); + + var retorno = new ServicoController().Executar(mdfe, sequenciaEvento, encerramento, MDFeTipoEvento.Encerramento, config); return retorno; } diff --git a/MDFe.Servicos/EventosMDFe/EventoInclusaoCondutor.cs b/MDFe.Servicos/EventosMDFe/EventoInclusaoCondutor.cs old mode 100755 new mode 100644 index 9fd492106..32d640724 --- a/MDFe.Servicos/EventosMDFe/EventoInclusaoCondutor.cs +++ b/MDFe.Servicos/EventosMDFe/EventoInclusaoCondutor.cs @@ -34,17 +34,20 @@ using MDFe.Classes.Informacoes.Evento.Flags; using MDFe.Classes.Retorno.MDFeEvento; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; using MDFeEletronico = MDFe.Classes.Informacoes.MDFe; namespace MDFe.Servicos.EventosMDFe { public class EventoInclusaoCondutor { - public MDFeRetEventoMDFe MDFeEventoIncluirCondutor(MDFeEletronico mdfe, byte sequenciaEvento, string nome, string cpf) + public MDFeRetEventoMDFe MDFeEventoIncluirCondutor(MDFeEletronico mdfe, byte sequenciaEvento, string nome, string cpf, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var incluirCodutor = ClassesFactory.CriaEvIncCondutorMDFe(nome, cpf); - var retorno = new ServicoController().Executar(mdfe, sequenciaEvento, incluirCodutor, MDFeTipoEvento.InclusaoDeCondutor); + var retorno = new ServicoController().Executar(mdfe, sequenciaEvento, incluirCodutor, MDFeTipoEvento.InclusaoDeCondutor, config); return retorno; } diff --git a/MDFe.Servicos/EventosMDFe/EventoInclusaoDFe.cs b/MDFe.Servicos/EventosMDFe/EventoInclusaoDFe.cs new file mode 100644 index 000000000..9dd35c33c --- /dev/null +++ b/MDFe.Servicos/EventosMDFe/EventoInclusaoDFe.cs @@ -0,0 +1,56 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using MDFe.Classes.Informacoes.Evento.CorpoEvento; +using MDFe.Classes.Informacoes.Evento.Flags; +using MDFe.Classes.Retorno.MDFeEvento; +using MDFe.Servicos.Factory; +using System.Collections.Generic; +using MDFe.Utils.Configuracoes; +using MDFeEletronico = MDFe.Classes.Informacoes.MDFe; + +namespace MDFe.Servicos.EventosMDFe +{ + public class EventoInclusaoDFe + { + public MDFeRetEventoMDFe MDFeEventoIncluirDFe(MDFeEletronico mdfe, byte sequenciaEvento, string protocolo, + string codigoMunicipioCarregamento, string nomeMunicipioCarregamento, List informacoesDocumentos, MDFeConfiguracao cfgMdfe = null) + { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var inclusao = ClassesFactory.CriaEvIncDFeMDFe(protocolo, codigoMunicipioCarregamento, nomeMunicipioCarregamento, informacoesDocumentos); + + return new ServicoController().Executar(mdfe, sequenciaEvento, inclusao, MDFeTipoEvento.InclusaoDFe, config); + } + } +} \ No newline at end of file diff --git a/MDFe.Servicos/EventosMDFe/EventoPagamentoOperacao.cs b/MDFe.Servicos/EventosMDFe/EventoPagamentoOperacao.cs new file mode 100644 index 000000000..26e27ef71 --- /dev/null +++ b/MDFe.Servicos/EventosMDFe/EventoPagamentoOperacao.cs @@ -0,0 +1,61 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.gov.br/ */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco José da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.Collections.Generic; +using MDFe.Classes.Informacoes; +using MDFe.Classes.Informacoes.Evento.Flags; +using MDFe.Classes.Retorno.MDFeEvento; +using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; + +namespace MDFe.Servicos.EventosMDFe +{ + public class EventoPagamentoOperacao + { + public MDFeRetEventoMDFe MDFeEventoPagamentoOperacao(Classes.Informacoes.MDFe mdfe, byte sequencia, + string protocolo, MDFeInfViagens infViagens, List infPagamentos, MDFeConfiguracao cfgMdfe = null) + { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var eventoPagamento = ClassesFactory.CriaEvPagtoOperMDFe( + protocolo, + infViagens, + infPagamentos + ); + + var retorno = new ServicoController().Executar(mdfe, sequencia, eventoPagamento, MDFeTipoEvento.PagamentoOperacaoMDFe, config); + + return retorno; + } + } +} \ No newline at end of file diff --git a/MDFe.Servicos/EventosMDFe/FactoryEvento.cs b/MDFe.Servicos/EventosMDFe/FactoryEvento.cs old mode 100755 new mode 100644 index 793e491fb..f566c4bf0 --- a/MDFe.Servicos/EventosMDFe/FactoryEvento.cs +++ b/MDFe.Servicos/EventosMDFe/FactoryEvento.cs @@ -32,32 +32,32 @@ /********************************************************************************/ using System; -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Classes.Informacoes.Evento; using MDFe.Classes.Informacoes.Evento.Flags; using MDFe.Utils.Configuracoes; -using MDFe.Utils.Flags; using MDFeEletronico = MDFe.Classes.Informacoes.MDFe; namespace MDFe.Servicos.EventosMDFe { public static class FactoryEvento { - public static MDFeEventoMDFe CriaEvento(MDFeEletronico MDFe, MDFeTipoEvento tipoEvento, byte sequenciaEvento, MDFeEventoContainer evento) + public static MDFeEventoMDFe CriaEvento(MDFeEletronico MDFe, MDFeTipoEvento tipoEvento, byte sequenciaEvento, MDFeEventoContainer evento, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var eventoMDFe = new MDFeEventoMDFe { - Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout, - InfEvento = new MDFeInfEvento + Versao = config.VersaoWebService.VersaoLayout, + InfEvento = new MDFeInfEvento(config.VersaoWebService.VersaoLayout) { Id = "ID" + (long)tipoEvento + MDFe.Chave() + sequenciaEvento.ToString("D2"), - TpAmb = MDFeConfiguracao.VersaoWebService.TipoAmbiente, - CNPJ = MDFe.CNPJEmitente(), + TpAmb = config.VersaoWebService.TipoAmbiente, COrgao = MDFe.UFEmitente(), ChMDFe = MDFe.Chave(), DetEvento = new MDFeDetEvento { - VersaoServico = MDFeConfiguracao.VersaoWebService.VersaoLayout, + VersaoServico = config.VersaoWebService.VersaoLayout, EventoContainer = evento }, DhEvento = DateTime.Now, @@ -66,7 +66,15 @@ public static MDFeEventoMDFe CriaEvento(MDFeEletronico MDFe, MDFeTipoEvento tipo } }; - eventoMDFe.Assinar(); + eventoMDFe.InfEvento.CNPJ = MDFe.CNPJEmitente(); + + var cpfEmitente = MDFe.CPFEmitente(); + if (cpfEmitente != null) + { + eventoMDFe.InfEvento.CPF = cpfEmitente; + } + + eventoMDFe.Assinar(config); return eventoMDFe; } diff --git a/MDFe.Servicos/EventosMDFe/ServicoController.cs b/MDFe.Servicos/EventosMDFe/ServicoController.cs old mode 100755 new mode 100644 index dfc14eb3c..72bf4a0c7 --- a/MDFe.Servicos/EventosMDFe/ServicoController.cs +++ b/MDFe.Servicos/EventosMDFe/ServicoController.cs @@ -31,33 +31,39 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Classes.Informacoes.Evento; using MDFe.Classes.Informacoes.Evento.Flags; using MDFe.Classes.Retorno.MDFeEvento; using MDFe.Servicos.EventosMDFe.Contratos; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; using MDFeEletronico = MDFe.Classes.Informacoes.MDFe; namespace MDFe.Servicos.EventosMDFe { public class ServicoController : IServicoController { - public MDFeRetEventoMDFe Executar(MDFeEletronico mdfe, byte sequenciaEvento, MDFeEventoContainer eventoContainer, MDFeTipoEvento tipoEvento) + public MDFeRetEventoMDFe Executar(MDFeEletronico mdfe, byte sequenciaEvento, MDFeEventoContainer eventoContainer, MDFeTipoEvento tipoEvento, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var evento = FactoryEvento.CriaEvento(mdfe, tipoEvento, sequenciaEvento, - eventoContainer); + eventoContainer, + config); + + string chave = mdfe.Chave(); - evento.ValidarSchema(); - evento.SalvarXmlEmDisco(mdfe.Chave()); + evento.ValidarSchema(config); + evento.SalvarXmlEmDisco(chave, config); - var webService = WsdlFactory.CriaWsdlMDFeRecepcaoEvento(); + var webService = WsdlFactory.CriaWsdlMDFeRecepcaoEvento(config); var retornoXml = webService.mdfeRecepcaoEvento(evento.CriaXmlRequestWs()); var retorno = MDFeRetEventoMDFe.LoadXml(retornoXml.OuterXml, evento); - retorno.SalvarXmlEmDisco(mdfe.Chave()); + retorno.SalvarXmlEmDisco(chave, config); return retorno; } diff --git a/MDFe.Servicos/EventosMDFe/ServicoMDFeEvento.cs b/MDFe.Servicos/EventosMDFe/ServicoMDFeEvento.cs old mode 100755 new mode 100644 index 70bc6175c..653dae482 --- a/MDFe.Servicos/EventosMDFe/ServicoMDFeEvento.cs +++ b/MDFe.Servicos/EventosMDFe/ServicoMDFeEvento.cs @@ -28,9 +28,15 @@ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco José da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + +using MDFe.Classes.Informacoes.Evento.CorpoEvento; using MDFe.Classes.Retorno.MDFeEvento; +using System.Collections.Generic; +using DFe.Classes.Entidades; +using MDFe.Classes.Informacoes; +using MDFe.Utils.Configuracoes; using MDFeEletronica = MDFe.Classes.Informacoes.MDFe; namespace MDFe.Servicos.EventosMDFe @@ -39,26 +45,65 @@ public class ServicoMDFeEvento { public MDFeRetEventoMDFe MDFeEventoIncluirCondutor( MDFeEletronica mdfe, byte sequenciaEvento, string nome, - string cpf) + string cpf, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var eventoIncluirCondutor = new EventoInclusaoCondutor(); - return eventoIncluirCondutor.MDFeEventoIncluirCondutor(mdfe, sequenciaEvento, nome, cpf); + return eventoIncluirCondutor.MDFeEventoIncluirCondutor(mdfe, sequenciaEvento, nome, cpf, config); + } + + public MDFeRetEventoMDFe MDFeEventoIncluirDFe( + MDFeEletronica mdfe, byte sequenciaEvento, string protocolo, + string codigoMunicipioCarregamento, string nomeMunicipioCarregamento, List informacoesDocumentos, + MDFeConfiguracao cfgMdfe = null) + { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var eventoIncluirDFe = new EventoInclusaoDFe(); + + return eventoIncluirDFe.MDFeEventoIncluirDFe(mdfe, sequenciaEvento, protocolo, codigoMunicipioCarregamento, nomeMunicipioCarregamento, informacoesDocumentos, config); + } + + public MDFeRetEventoMDFe MDFeEventoEncerramentoMDFeEventoEncerramento(MDFeEletronica mdfe, byte sequenciaEvento, string protocolo, MDFeConfiguracao cfgMdfe = null) + { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var eventoEncerramento = new EventoEncerramento(); + + return eventoEncerramento.MDFeEventoEncerramento(mdfe, sequenciaEvento, protocolo, config); } - public MDFeRetEventoMDFe MDFeEventoEncerramentoMDFeEventoEncerramento(MDFeEletronica mdfe, byte sequenciaEvento, string protocolo) + public MDFeRetEventoMDFe MDFeEventoEncerramentoMDFeEventoEncerramento(MDFeEletronica mdfe, Estado estadoEncerramento, + long codigoMunicipioEncerramento, byte sequenciaEvento, string protocolo, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var eventoEncerramento = new EventoEncerramento(); - return eventoEncerramento.MDFeEventoEncerramento(mdfe, sequenciaEvento, protocolo); + return eventoEncerramento.MDFeEventoEncerramento(mdfe, estadoEncerramento, codigoMunicipioEncerramento, sequenciaEvento, protocolo, config); } public MDFeRetEventoMDFe MDFeEventoCancelar(MDFeEletronica mdfe, byte sequenciaEvento, string protocolo, - string justificativa) + string justificativa, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var eventoCancelamento = new EventoCancelar(); - return eventoCancelamento.MDFeEventoCancelar(mdfe, sequenciaEvento, protocolo, justificativa); + return eventoCancelamento.MDFeEventoCancelar(mdfe, sequenciaEvento, protocolo, justificativa, config); + } + + public MDFeRetEventoMDFe MDFeEventoPagamentoOperacaoTransporte(MDFeEletronica mdfe, byte sequenciaEvneto, + string protocolo, MDFeInfViagens infViagens, List infPagamentos, MDFeConfiguracao cfgMdfe = null) + { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var eventoPagamentoOperacao = new EventoPagamentoOperacao(); + + return eventoPagamentoOperacao.MDFeEventoPagamentoOperacao(mdfe, sequenciaEvneto, protocolo, + infViagens, infPagamentos, config); } } } \ No newline at end of file diff --git a/MDFe.Servicos/Factory/ClassesFactory.cs b/MDFe.Servicos/Factory/ClassesFactory.cs old mode 100755 new mode 100644 index 3e23c7b45..b395f7461 --- a/MDFe.Servicos/Factory/ClassesFactory.cs +++ b/MDFe.Servicos/Factory/ClassesFactory.cs @@ -30,8 +30,8 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using System; -using MDFe.Classes.Extencoes; + +using MDFe.Classes.Extensoes; using MDFe.Classes.Informacoes.ConsultaNaoEncerrados; using MDFe.Classes.Informacoes.ConsultaProtocolo; using MDFe.Classes.Informacoes.Evento.CorpoEvento; @@ -39,32 +39,59 @@ using MDFe.Classes.Informacoes.StatusServico; using MDFe.Classes.Servicos.Autorizacao; using MDFe.Utils.Configuracoes; -using MDFe.Utils.Flags; +using System; +using System.Collections.Generic; +using DFe.Classes.Entidades; +using MDFe.Classes.Informacoes; using MDFeEletronico = MDFe.Classes.Informacoes.MDFe; namespace MDFe.Servicos.Factory { public static class ClassesFactory { - public static MDFeCosMDFeNaoEnc CriarConsMDFeNaoEnc(string cnpj) + public static MDFeCosMDFeNaoEnc CriarConsMDFeNaoEnc(string documento, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var consMDFeNaoEnc = new MDFeCosMDFeNaoEnc { - CNPJ = cnpj, - TpAmb = MDFeConfiguracao.VersaoWebService.TipoAmbiente, - Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout, + TpAmb = config.VersaoWebService.TipoAmbiente, + Versao = config.VersaoWebService.VersaoLayout, XServ = "CONSULTAR NÃO ENCERRADOS" }; + if (documento.Length == 11) + { + consMDFeNaoEnc.CPF = documento; + } + + if (documento.Length == 14) + { + consMDFeNaoEnc.CNPJ = documento; + } + return consMDFeNaoEnc; } - public static MDFeConsSitMDFe CriarConsSitMDFe(string chave) + public static MDFeEvIncDFeMDFe CriaEvIncDFeMDFe(string protocolo, string codigoMunicipioCarregamento, string nomeMunicipioCarregamento, List informacoesDocumentos) { + return new MDFeEvIncDFeMDFe + { + NProt = protocolo, + CMunCarrega = codigoMunicipioCarregamento, + XMunCarrega = nomeMunicipioCarregamento, + InfDoc = informacoesDocumentos + }; + } + + public static MDFeConsSitMDFe CriarConsSitMDFe(string chave, MDFeConfiguracao cfgMdfe = null) + { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var consSitMdfe = new MDFeConsSitMDFe { - Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout, - TpAmb = MDFeConfiguracao.VersaoWebService.TipoAmbiente, + Versao = config.VersaoWebService.VersaoLayout, + TpAmb = config.VersaoWebService.TipoAmbiente, XServ = "CONSULTAR", ChMDFe = chave }; @@ -98,6 +125,20 @@ public static MDFeEvEncMDFe CriaEvEncMDFe(MDFeEletronico mdfe, string protocolo) return encerramento; } + public static MDFeEvEncMDFe CriaEvEncMDFe(Estado estadoEncerramento, long codigoMunicipioEncerramento, string protocolo) + { + var encerramento = new MDFeEvEncMDFe + { + CUF = estadoEncerramento, + DtEnc = DateTime.Now, + DescEvento = "Encerramento", + CMun = codigoMunicipioEncerramento, + NProt = protocolo + }; + + return encerramento; + } + public static MDFeEvIncCondutorMDFe CriaEvIncCondutorMDFe(string nome, string cpf) { var condutor = new MDFeCondutorIncluir @@ -115,38 +156,54 @@ public static MDFeEvIncCondutorMDFe CriaEvIncCondutorMDFe(string nome, string cp return incluirCodutor; } - public static MDFeEnviMDFe CriaEnviMDFe(long lote, MDFeEletronico mdfe) + public static MDFeEnviMDFe CriaEnviMDFe(long lote, MDFeEletronico mdfe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var enviMdfe = new MDFeEnviMDFe { MDFe = mdfe, IdLote = lote.ToString(), - Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout - }; + Versao = config.VersaoWebService.VersaoLayout + }; return enviMdfe; } - public static MDFeConsReciMDFe CriaConsReciMDFe(string numeroRecibo) + public static MDFeConsReciMDFe CriaConsReciMDFe(string numeroRecibo, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var consReciMDFe = new MDFeConsReciMDFe { - Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout, - TpAmb = MDFeConfiguracao.VersaoWebService.TipoAmbiente, + Versao = config.VersaoWebService.VersaoLayout, + TpAmb = config.VersaoWebService.TipoAmbiente, NRec = numeroRecibo }; return consReciMDFe; } - public static MDFeConsStatServMDFe CriaConsStatServMDFe() + public static MDFeConsStatServMDFe CriaConsStatServMDFe(MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + return new MDFeConsStatServMDFe { - TpAmb = MDFeConfiguracao.VersaoWebService.TipoAmbiente, - Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout, + TpAmb = config.VersaoWebService.TipoAmbiente, + Versao = config.VersaoWebService.VersaoLayout, XServ = "STATUS" - }; + }; + } + + public static MDFeEvPagtoOperMDFe CriaEvPagtoOperMDFe(string protocolo, MDFeInfViagens infViagens, List infPagamentos) + { + return new MDFeEvPagtoOperMDFe + { + InfViagens = infViagens, + NProt = protocolo, + InfPag = infPagamentos + }; } } } \ No newline at end of file diff --git a/MDFe.Servicos/Factory/WsdlFactory.cs b/MDFe.Servicos/Factory/WsdlFactory.cs old mode 100755 new mode 100644 index 610f6619d..8bb927104 --- a/MDFe.Servicos/Factory/WsdlFactory.cs +++ b/MDFe.Servicos/Factory/WsdlFactory.cs @@ -31,85 +31,113 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using CTe.CTeOSDocumento.Common; using DFe.Classes.Extensoes; -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Servicos.Enderecos.Helper; using MDFe.Utils.Configuracoes; -using MDFe.Wsdl.Configuracao; -using MDFe.Wsdl.Gerado.MDFeConsultaNaoEncerrados; -using MDFe.Wsdl.Gerado.MDFeConsultaProtoloco; -using MDFe.Wsdl.Gerado.MDFeRecepcao; -using MDFe.Wsdl.Gerado.MDFeRetRecepcao; using MDFe.Wsdl.Gerado.MDFeStatusServico; +using MDFe.Wsdl.MDFeConsultaNaoEncerrados; +using MDFe.Wsdl.MDFeConsultaProtoloco; +using MDFe.Wsdl.MDFeEventos; +using MDFe.Wsdl.MDFeRecepcao; +using MDFe.Wsdl.MDFeRecepcao.Sincrono; +using MDFe.Wsdl.MDFeRetRecepcao; namespace MDFe.Servicos.Factory { public static class WsdlFactory { - public static MDFeConsNaoEnc CriaWsdlMDFeConsNaoEnc() + public static MDFeConsNaoEnc CriaWsdlMDFeConsNaoEnc(MDFeConfiguracao cfgMdfe = null) { - var url = UrlHelper.ObterUrlServico(MDFeConfiguracao.VersaoWebService.TipoAmbiente).MDFeConsNaoEnc; - var versao = MDFeConfiguracao.VersaoWebService.VersaoLayout.GetVersaoString(); - var configuracaoWsdl = CriaConfiguracao(url, versao); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var url = UrlHelper.ObterUrlServico(config.VersaoWebService.TipoAmbiente).MDFeConsNaoEnc; + var versao = config.VersaoWebService.VersaoLayout.GetVersaoString(); + var configuracaoWsdl = CriaConfiguracao(url, versao, config); var ws = new MDFeConsNaoEnc(configuracaoWsdl); return ws; } - public static MDFeConsulta CriaWsdlMDFeConsulta() + public static MDFeConsulta CriaWsdlMDFeConsulta(MDFeConfiguracao cfgMdfe = null) { - var url = UrlHelper.ObterUrlServico(MDFeConfiguracao.VersaoWebService.TipoAmbiente).MDFeConsulta; - var versao = MDFeConfiguracao.VersaoWebService.VersaoLayout.GetVersaoString(); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var url = UrlHelper.ObterUrlServico(config.VersaoWebService.TipoAmbiente).MDFeConsulta; + var versao = config.VersaoWebService.VersaoLayout.GetVersaoString(); - var configuracaoWsdl = CriaConfiguracao(url, versao); + var configuracaoWsdl = CriaConfiguracao(url, versao, config); return new MDFeConsulta(configuracaoWsdl); } - public static MDFeRecepcaoEvento CriaWsdlMDFeRecepcaoEvento() + public static MDFeRecepcaoEvento CriaWsdlMDFeRecepcaoEvento(MDFeConfiguracao cfgMdfe = null) { - var url = UrlHelper.ObterUrlServico(MDFeConfiguracao.VersaoWebService.TipoAmbiente).MDFeRecepcaoEvento; - var versao = MDFeConfiguracao.VersaoWebService.VersaoLayout.GetVersaoString(); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var configuracaoWsdl = CriaConfiguracao(url, versao); + var url = UrlHelper.ObterUrlServico(config.VersaoWebService.TipoAmbiente).MDFeRecepcaoEvento; + var versao = config.VersaoWebService.VersaoLayout.GetVersaoString(); + + var configuracaoWsdl = CriaConfiguracao(url, versao, config); return new MDFeRecepcaoEvento(configuracaoWsdl); } - public static MDFeRecepcao CriaWsdlMDFeRecepcao() + public static MDFeRecepcao CriaWsdlMDFeRecepcao(MDFeConfiguracao cfgMdfe = null) { - var url = UrlHelper.ObterUrlServico(MDFeConfiguracao.VersaoWebService.TipoAmbiente).MDFeRecepcao; - var versaoServico = MDFeConfiguracao.VersaoWebService.VersaoLayout.GetVersaoString(); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var url = UrlHelper.ObterUrlServico(config.VersaoWebService.TipoAmbiente).MDFeRecepcao; + var versaoServico = config.VersaoWebService.VersaoLayout.GetVersaoString(); - var configuracaoWsdl = CriaConfiguracao(url, versaoServico); + var configuracaoWsdl = CriaConfiguracao(url, versaoServico, config); - return new MDFeRecepcao(configuracaoWsdl); ; + return new MDFeRecepcao(configuracaoWsdl); } - public static MDFeRetRecepcao CriaWsdlMDFeRetRecepcao() + public static MDFeRecepcaoSinc CriaWsdlMDFeRecepcaoSinc(MDFeConfiguracao cfgMdfe = null) { - var url = UrlHelper.ObterUrlServico(MDFeConfiguracao.VersaoWebService.TipoAmbiente).MDFeRetRecepcao; - var versao = MDFeConfiguracao.VersaoWebService.VersaoLayout.GetVersaoString(); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var configuracaoWsdl = CriaConfiguracao(url, versao); + var url = UrlHelper.ObterUrlServico(config.VersaoWebService.TipoAmbiente).MDFeRecepcaoSinc; + var versaoServico = config.VersaoWebService.VersaoLayout.GetVersaoString(); + + var configuracaoWsdl = CriaConfiguracao(url, versaoServico, config); + + return new MDFeRecepcaoSinc(configuracaoWsdl); + } + + public static MDFeRetRecepcao CriaWsdlMDFeRetRecepcao(MDFeConfiguracao cfgMdfe = null) + { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var url = UrlHelper.ObterUrlServico(config.VersaoWebService.TipoAmbiente).MDFeRetRecepcao; + var versao = config.VersaoWebService.VersaoLayout.GetVersaoString(); + + var configuracaoWsdl = CriaConfiguracao(url, versao, config); return new MDFeRetRecepcao(configuracaoWsdl); } - public static MDFeStatusServico CriaWsdlMDFeStatusServico() + public static MDFeStatusServico CriaWsdlMDFeStatusServico(MDFeConfiguracao cfgMdfe = null) { - var url = UrlHelper.ObterUrlServico(MDFeConfiguracao.VersaoWebService.TipoAmbiente).MDFeStatusServico; - var versao = MDFeConfiguracao.VersaoWebService.VersaoLayout.GetVersaoString(); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var url = UrlHelper.ObterUrlServico(config.VersaoWebService.TipoAmbiente).MDFeStatusServico; + var versao = config.VersaoWebService.VersaoLayout.GetVersaoString(); - var configuracaoWsdl = CriaConfiguracao(url, versao); + var configuracaoWsdl = CriaConfiguracao(url, versao, config); return new MDFeStatusServico(configuracaoWsdl); } - private static WsdlConfiguracao CriaConfiguracao(string url, string versao) + private static WsdlConfiguracao CriaConfiguracao(string url, string versao, MDFeConfiguracao cfgMdfe = null) { - var codigoEstado = MDFeConfiguracao.VersaoWebService.UfEmitente.GetCodigoIbgeEmString(); - var certificadoDigital = MDFeConfiguracao.X509Certificate2; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var codigoEstado = config.VersaoWebService.UfEmitente.GetCodigoIbgeEmString(); + var certificadoDigital = config.X509Certificate2; return new WsdlConfiguracao { @@ -117,7 +145,7 @@ private static WsdlConfiguracao CriaConfiguracao(string url, string versao) Versao = versao, CodigoIbgeEstado = codigoEstado, Url = url, - TimeOut = MDFeConfiguracao.VersaoWebService.TimeOut + TimeOut = config.VersaoWebService.TimeOut }; } } diff --git a/MDFe.Servicos/Interfaces/IServicoMDFeConsultaProtocolo.cs b/MDFe.Servicos/Interfaces/IServicoMDFeConsultaProtocolo.cs new file mode 100644 index 000000000..6347bf5da --- /dev/null +++ b/MDFe.Servicos/Interfaces/IServicoMDFeConsultaProtocolo.cs @@ -0,0 +1,10 @@ +using MDFe.Classes.Retorno.MDFeConsultaProtocolo; +using MDFe.Utils.Configuracoes; + +namespace MDFe.Servicos.Interfaces +{ + public interface IServicoMDFeConsultaProtocolo + { + MDFeRetConsSitMDFe MDFeConsultaProtocolo(string chave, MDFeConfiguracao cfgMdfe); + } +} diff --git a/MDFe.Servicos/MDFe.Servicos.csproj b/MDFe.Servicos/MDFe.Servicos.csproj index 61bbf07cf..28828422e 100755 --- a/MDFe.Servicos/MDFe.Servicos.csproj +++ b/MDFe.Servicos/MDFe.Servicos.csproj @@ -1,88 +1,13 @@ - - - + + - Debug - AnyCPU - {9587937A-A826-4785-9D1E-3A9F4A622B7C} - Library - Properties - MDFe.Servicos - MDFe.Servicos - v4.5 - 512 - + net462;netstandard2.0;net6.0 + - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - {9984ec15-18e1-4a87-b4db-18ac913dc4e8} - DFe.Classes - - - {9794cb98-4691-4218-a127-c573c2e7ff83} - MDFe.Classes - - - {9c0678eb-78f2-49c6-91bf-38148fc37fbb} - MDFe.Utils - - - {81b3bc65-a499-4e19-8ab4-09c6d874c540} - MDFe.Wsdl - + + - - - - \ No newline at end of file + + diff --git a/MDFe.Servicos/MDFe.Servicos.csproj.DotSettings b/MDFe.Servicos/MDFe.Servicos.csproj.DotSettings deleted file mode 100644 index 662f95686..000000000 --- a/MDFe.Servicos/MDFe.Servicos.csproj.DotSettings +++ /dev/null @@ -1,2 +0,0 @@ - - CSharp50 \ No newline at end of file diff --git a/MDFe.Servicos/Properties/AssemblyInfo.cs b/MDFe.Servicos/Properties/AssemblyInfo.cs deleted file mode 100755 index 8f5ae0e46..000000000 --- a/MDFe.Servicos/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("MDFe.Servicos")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("MDFe.Servicos")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("9587937a-a826-4785-9d1e-3a9f4a622b7c")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.0.0.8")] -[assembly: AssemblyFileVersion("0.0.0.8")] diff --git a/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs b/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs old mode 100755 new mode 100644 index b051e6448..26de0ff81 --- a/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs +++ b/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs @@ -28,13 +28,15 @@ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco José da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System; -using MDFe.Classes.Extencoes; +using DFe.Utils; +using MDFe.Classes.Extensoes; using MDFe.Classes.Flags; using MDFe.Classes.Retorno.MDFeRecepcao; +using MDFe.Classes.Retorno.MDFeRetRecepcao.Sincrono; using MDFe.Classes.Servicos.Autorizacao; using MDFe.Servicos.Factory; using MDFe.Utils.Configuracoes; @@ -45,38 +47,76 @@ namespace MDFe.Servicos.RecepcaoMDFe { public class ServicoMDFeRecepcao { - public event EventHandler AntesDeEnviar; + public event EventHandler AntesDeEnviar; + public event EventHandler GerouChave; - public MDFeRetEnviMDFe MDFeRecepcao(long lote, MDFeEletronico mdfe) + public MDFeRetEnviMDFe MDFeRecepcao(long lote, MDFeEletronico mdfe, MDFeConfiguracao cfgMdfe = null) { - var enviMDFe = ClassesFactory.CriaEnviMDFe(lote, mdfe); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + var enviMDFe = ClassesFactory.CriaEnviMDFe(lote, mdfe, config); + + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: mdfe.InfMDFe.InfModal.VersaoModal = MDFeVersaoModal.Versao100; + mdfe.InfMDFe.Ide.ProxyDhIniViagem = mdfe.InfMDFe.Ide.DhIniViagem.ParaDataHoraStringSemUtc(); break; case VersaoServico.Versao300: mdfe.InfMDFe.InfModal.VersaoModal = MDFeVersaoModal.Versao300; + mdfe.InfMDFe.Ide.ProxyDhIniViagem = mdfe.InfMDFe.Ide.DhIniViagem.ParaDataHoraStringUtc(); break; } - enviMDFe.MDFe.Assina(); - enviMDFe.Valida(); - enviMDFe.SalvarXmlEmDisco(); + enviMDFe.MDFe.Assina(GerouChave, this, config); + + if (config.IsAdicionaQrCode && config.VersaoWebService.VersaoLayout == VersaoServico.Versao300) + { + mdfe.InfMDFeSupl = mdfe.QrCode(config.X509Certificate2); + } + + enviMDFe.Valida(config); + enviMDFe.SalvarXmlEmDisco(config); - var webService = WsdlFactory.CriaWsdlMDFeRecepcao(); + var webService = WsdlFactory.CriaWsdlMDFeRecepcao(config); OnAntesDeEnviar(enviMDFe); var retornoXml = webService.mdfeRecepcaoLote(enviMDFe.CriaXmlRequestWs()); var retorno = MDFeRetEnviMDFe.LoadXml(retornoXml.OuterXml, enviMDFe); - retorno.SalvarXmlEmDisco(); + retorno.SalvarXmlEmDisco(config); return retorno; } + public MDFeRetMDFe MDFeRecepcaoSinc(MDFeEletronico mdfe, MDFeConfiguracao cfgMdfe = null) + { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + mdfe.InfMDFe.InfModal.VersaoModal = MDFeVersaoModal.Versao300; + mdfe.InfMDFe.Ide.ProxyDhIniViagem = mdfe.InfMDFe.Ide.DhIniViagem.ParaDataHoraStringUtc(); + mdfe.Assina(GerouChave, this, config); + + if (config.IsAdicionaQrCode) + { + mdfe.InfMDFeSupl = mdfe.QrCode(config.X509Certificate2); + } + + mdfe.Valida(config); + mdfe.SalvarXmlEmDisco(null, config); + + var webService = WsdlFactory.CriaWsdlMDFeRecepcaoSinc(config); + + var enviMDFe = ClassesFactory.CriaEnviMDFe(lote: 1, mdfe, config); + OnAntesDeEnviar(enviMDFe); + + var retornoXml = webService.mdfeRecepcao(mdfe.CriaXmlRequestWs()); + + var retorno = MDFeRetMDFe.LoadXml(retornoXml.OuterXml, mdfe); + return retorno; + } + protected virtual void OnAntesDeEnviar(MDFeEnviMDFe enviMdfe) { var handler = AntesDeEnviar; diff --git a/MDFe.Servicos/RetRecepcaoMDFe/ServicoMDFeRetRecepcao.cs b/MDFe.Servicos/RetRecepcaoMDFe/ServicoMDFeRetRecepcao.cs old mode 100755 new mode 100644 index 443da825d..744547f4f --- a/MDFe.Servicos/RetRecepcaoMDFe/ServicoMDFeRetRecepcao.cs +++ b/MDFe.Servicos/RetRecepcaoMDFe/ServicoMDFeRetRecepcao.cs @@ -28,28 +28,31 @@ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco José da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Classes.Retorno.MDFeRetRecepcao; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; namespace MDFe.Servicos.RetRecepcaoMDFe { public class ServicoMDFeRetRecepcao { - public MDFeRetConsReciMDFe MDFeRetRecepcao(string numeroRecibo) + public MDFeRetConsReciMDFe MDFeRetRecepcao(string numeroRecibo, MDFeConfiguracao cfgMdfe = null) { - var consReciMdfe = ClassesFactory.CriaConsReciMDFe(numeroRecibo); - consReciMdfe.ValidaSchema(); - consReciMdfe.SalvarXmlEmDisco(); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var webService = WsdlFactory.CriaWsdlMDFeRetRecepcao(); + var consReciMdfe = ClassesFactory.CriaConsReciMDFe(numeroRecibo, config); + consReciMdfe.ValidaSchema(config); + consReciMdfe.SalvarXmlEmDisco(config); + + var webService = WsdlFactory.CriaWsdlMDFeRetRecepcao(config); var retornoXml = webService.mdfeRetRecepcao(consReciMdfe.CriaRequestWs()); var retorno = MDFeRetConsReciMDFe.LoadXml(retornoXml.OuterXml, consReciMdfe); - retorno.SalvarXmlEmDisco(); + retorno.SalvarXmlEmDisco(config); return retorno; } diff --git a/MDFe.Servicos/StatusServicoMDFe/ServicoMDFeStatusServico.cs b/MDFe.Servicos/StatusServicoMDFe/ServicoMDFeStatusServico.cs old mode 100755 new mode 100644 index 7d73b02ce..9d50f7491 --- a/MDFe.Servicos/StatusServicoMDFe/ServicoMDFeStatusServico.cs +++ b/MDFe.Servicos/StatusServicoMDFe/ServicoMDFeStatusServico.cs @@ -28,28 +28,31 @@ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco José da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Classes.Retorno.MDFeStatusServico; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; namespace MDFe.Servicos.StatusServicoMDFe { public class ServicoMDFeStatusServico { - public MDFeRetConsStatServ MDFeStatusServico() + public MDFeRetConsStatServ MDFeStatusServico(MDFeConfiguracao cfgMdfe = null) { - var consStatServMDFe = ClassesFactory.CriaConsStatServMDFe(); - consStatServMDFe.ValidarSchema(); - consStatServMDFe.SalvarXmlEmDisco(); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var webService = WsdlFactory.CriaWsdlMDFeStatusServico(); + var consStatServMDFe = ClassesFactory.CriaConsStatServMDFe(config); + consStatServMDFe.ValidarSchema(config); + consStatServMDFe.SalvarXmlEmDisco(config); + + var webService = WsdlFactory.CriaWsdlMDFeStatusServico(config); var retornoXml = webService.mdfeStatusServicoMDF(consStatServMDFe.CriaRequestWs()); var retorno = MDFeRetConsStatServ.LoadXml(retornoXml.OuterXml, consStatServMDFe); - retorno.SalvarXmlEmDisco(); + retorno.SalvarXmlEmDisco(config); return retorno; diff --git a/MDFe.Utils/Configuracoes/MDFeConfiguracao.cs b/MDFe.Utils/Configuracoes/MDFeConfiguracao.cs old mode 100755 new mode 100644 index 608e4490a..cea76dd05 --- a/MDFe.Utils/Configuracoes/MDFeConfiguracao.cs +++ b/MDFe.Utils/Configuracoes/MDFeConfiguracao.cs @@ -32,91 +32,178 @@ /********************************************************************************/ using System.Security.Cryptography.X509Certificates; -using DFe.Classes.Entidades; -using DFe.Classes.Flags; using DFe.Utils; using DFe.Utils.Assinatura; -using MDFe.Utils.Flags; using System; +using System.ComponentModel; +using System.IO; +using System.Runtime.CompilerServices; +using NFe.Utils.Annotations; namespace MDFe.Utils.Configuracoes { - public class MDFeConfiguracao : IDisposable + public class MDFeConfiguracao : IDisposable, INotifyPropertyChanged { - private static MDFeVersaoWebService _versaoWebService; + private static volatile MDFeConfiguracao _instancia; + private static readonly object SyncRoot = new object(); + + private string _caminhoSchemas; + private bool _deveSalvarXmls; + private MDFeVersaoWebService _versaoWebService; + private X509Certificate2 _certificado; public MDFeConfiguracao() { VersaoWebService = new MDFeVersaoWebService(); + ConfiguracaoCertificado = new ConfiguracaoCertificado(); + } + + static MDFeConfiguracao() + { + } + + public ConfiguracaoCertificado ConfiguracaoCertificado { get; set; } + + /// + /// Informar se a biblioteca deve salvar o xml de envio e de retorno + /// + public bool IsSalvarXml + { + get { return _deveSalvarXmls; } + set + { + if (!value) + CaminhoSalvarXml = ""; + _deveSalvarXmls = value; + } + } + + /// + /// Diretório onde estão armazenados os schemas para validação + /// + public string CaminhoSchemas + { + get { return _caminhoSchemas; } + set + { + if (!string.IsNullOrEmpty(value) && !Directory.Exists(value)) + throw new Exception("Diretório " + value + " não encontrado!"); + _caminhoSchemas = value; + } } - public static ConfiguracaoCertificado ConfiguracaoCertificado { get; set; } + /// + /// Diretório onde os xmls de envio/retorno devem ser salvos + /// + public string CaminhoSalvarXml { get; set; } - public static bool IsSalvarXml { get; set; } - public static string CaminhoSchemas { get; set; } - public static string CaminhoSalvarXml { get; set; } + public bool IsAdicionaQrCode { get; set; } - public static MDFeVersaoWebService VersaoWebService + public MDFeVersaoWebService VersaoWebService { get { return GetMdfeVersaoWebService(); } set { _versaoWebService = value; } } - private static MDFeVersaoWebService GetMdfeVersaoWebService() + private MDFeVersaoWebService GetMdfeVersaoWebService() { - if(_versaoWebService == null) + if (_versaoWebService == null) _versaoWebService = new MDFeVersaoWebService(); return _versaoWebService; } - - private static X509Certificate2 _certificado = null; - public static X509Certificate2 X509Certificate2 + + public X509Certificate2 X509Certificate2 { get { - if (_certificado != null) - if (!ConfiguracaoCertificado.ManterDadosEmCache) - _certificado.Reset(); + if (_certificado != null && !DeveManterCertificadoEmCache()) + _certificado.Reset(); + _certificado = ObterCertificado(); return _certificado; } } - public static bool NaoSalvarXml() + public bool NaoSalvarXml() { return !IsSalvarXml; } - private static X509Certificate2 ObterCertificado() + private X509Certificate2 ObterCertificado() { return CertificadoDigital.ObterCertificado(ConfiguracaoCertificado); } - public void Dispose() + /// + /// Instância do Singleton de MDFeConfiguracao + /// + public static MDFeConfiguracao Instancia { - if (!ConfiguracaoCertificado.ManterDadosEmCache && _certificado != null) + get + { + if (_instancia != null) return _instancia; + lock (SyncRoot) + { + if (_instancia != null) return _instancia; + _instancia = new MDFeConfiguracao(); + } + + return _instancia; + } + set { - _certificado.Reset(); - _certificado = null; + lock (SyncRoot) + { + if (value != null) + _instancia = value; + } } } + /// + /// Limpa a instancia atual caso exista + /// + public static void LimparInstancia() + { + _instancia = null; + } + + public event PropertyChangedEventHandler PropertyChanged; + + [NotifyPropertyChangedInvocator] + private void OnPropertyChanged([CallerMemberName] string propertyName = null) + { + var handler = PropertyChanged; + if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); + } + + public void Dispose() + { + LimparCertificado(); + } + ~MDFeConfiguracao() { - if (!ConfiguracaoCertificado.ManterDadosEmCache && _certificado != null) - { - _certificado.Reset(); - _certificado = null; - } + LimparCertificado(); } - } - public class MDFeVersaoWebService - { - public int TimeOut { get; set; } - public Estado UfEmitente { get; set; } - public TipoAmbiente TipoAmbiente { get; set; } - public VersaoServico VersaoLayout { get; set; } + private void LimparCertificado() + { + if (DeveManterCertificadoEmCache()) + return; + + _certificado.Reset(); + _certificado = null; + } + + private bool DeveManterCertificadoEmCache() + { + var deveManterCertificadoEmCache = _certificado == null || + ConfiguracaoCertificado == null || + ConfiguracaoCertificado.ManterDadosEmCache; + + return deveManterCertificadoEmCache; + } } } diff --git a/MDFe.Utils/Configuracoes/MDFeVersaoWebService.cs b/MDFe.Utils/Configuracoes/MDFeVersaoWebService.cs new file mode 100644 index 000000000..7feabba9a --- /dev/null +++ b/MDFe.Utils/Configuracoes/MDFeVersaoWebService.cs @@ -0,0 +1,14 @@ +using DFe.Classes.Entidades; +using DFe.Classes.Flags; +using VersaoServico = MDFe.Utils.Flags.VersaoServico; + +namespace MDFe.Utils.Configuracoes +{ + public class MDFeVersaoWebService + { + public int TimeOut { get; set; } + public Estado UfEmitente { get; set; } + public TipoAmbiente TipoAmbiente { get; set; } + public VersaoServico VersaoLayout { get; set; } + } +} diff --git a/MDFe.Utils/MDFe.Utils.csproj b/MDFe.Utils/MDFe.Utils.csproj index 9c376d5ff..c75c15535 100755 --- a/MDFe.Utils/MDFe.Utils.csproj +++ b/MDFe.Utils/MDFe.Utils.csproj @@ -1,65 +1,15 @@ - - - + + - Debug - AnyCPU - {9C0678EB-78F2-49C6-91BF-38148FC37FBB} - Library - Properties - MDFe.Utils - MDFe.Utils - v4.5 - 512 - + net462;netstandard2.0;net6.0 + - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - - - - - - - - - + - - {9984ec15-18e1-4a87-b4db-18ac913dc4e8} - DFe.Classes - - - {b4e1a7a6-5d66-4326-8a8d-39338e6fc84c} - DFe.Utils - + + + + - - - - \ No newline at end of file + + diff --git a/MDFe.Utils/MDFe.Utils.csproj.DotSettings b/MDFe.Utils/MDFe.Utils.csproj.DotSettings deleted file mode 100644 index 662f95686..000000000 --- a/MDFe.Utils/MDFe.Utils.csproj.DotSettings +++ /dev/null @@ -1,2 +0,0 @@ - - CSharp50 \ No newline at end of file diff --git a/MDFe.Utils/Properties/AssemblyInfo.cs b/MDFe.Utils/Properties/AssemblyInfo.cs deleted file mode 100755 index a77d2d0a4..000000000 --- a/MDFe.Utils/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("MDFe.Utils")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("MDFe.Utils")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("9c0678eb-78f2-49c6-91bf-38148fc37fbb")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.0.0.8")] -[assembly: AssemblyFileVersion("0.0.0.8")] diff --git a/MDFe.Utils/Validacao/Validador.cs b/MDFe.Utils/Validacao/Validador.cs old mode 100755 new mode 100644 index b1ca4ea2c..07b0d4961 --- a/MDFe.Utils/Validacao/Validador.cs +++ b/MDFe.Utils/Validacao/Validador.cs @@ -28,39 +28,45 @@ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco José da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + +using MDFe.Utils.Configuracoes; using System; using System.IO; using System.Xml; using System.Xml.Schema; -using MDFe.Utils.Configuracoes; namespace MDFe.Utils.Validacao { public class Validador { - public static void Valida(string xml, string schema) + public static void Valida(string xml, string schema, MDFeConfiguracao cfgMdfe = null) { - var pathSchema = MDFeConfiguracao.CaminhoSchemas; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var pathSchema = config.CaminhoSchemas; if (!Directory.Exists(pathSchema)) throw new Exception("Diretório de Schemas não encontrado: \n" + pathSchema); - var arquivoSchema = pathSchema + @"\" + schema; + var arquivoSchema = Path.Combine(pathSchema, schema); // Define o tipo de validação var cfg = new XmlReaderSettings { ValidationType = ValidationType.Schema }; // Carrega o arquivo de esquema var schemas = new XmlSchemaSet(); + schemas.XmlResolver = new XmlUrlResolver(); cfg.Schemas = schemas; + // Quando carregar o eschema, especificar o namespace que ele valida // e a localização do arquivo schemas.Add(null, arquivoSchema); + // Especifica o tratamento de evento para os erros de validacao cfg.ValidationEventHandler += ValidationEventHandler; - // cria um leitor para validação + + // Cria um leitor para validação var validator = XmlReader.Create(new StringReader(xml), cfg); try { diff --git a/MDFe.Wsdl/Configuracao/WsdlConfiguracao.cs b/MDFe.Wsdl/Configuracao/WsdlConfiguracao.cs deleted file mode 100755 index c819c4996..000000000 --- a/MDFe.Wsdl/Configuracao/WsdlConfiguracao.cs +++ /dev/null @@ -1,45 +0,0 @@ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusMDFe */ -/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ -/* (https://mdfe-portal.sefaz.rs.gov.br/ */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Você pode obter a última versão desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ -/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ -/* qualquer versão posterior. */ -/* */ -/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ -/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ -/* */ -/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ -/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ -/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Você também pode obter uma copia da licença em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ -using System.Security.Cryptography.X509Certificates; - -namespace MDFe.Wsdl.Configuracao -{ - public class WsdlConfiguracao - { - public string Url { get; set; } - public string CodigoIbgeEstado { get; set; } - public string Versao { get; set; } - public X509Certificate2 CertificadoDigital { get; set; } - public int TimeOut { get; set; } - } -} \ No newline at end of file diff --git a/MDFe.Wsdl/Gerado/MDFeConsultaNaoEncerrados/MDFeConsNaoEnc.cs b/MDFe.Wsdl/Gerado/MDFeConsultaNaoEncerrados/MDFeConsNaoEnc.cs deleted file mode 100755 index 9a0b6745f..000000000 --- a/MDFe.Wsdl/Gerado/MDFeConsultaNaoEncerrados/MDFeConsNaoEnc.cs +++ /dev/null @@ -1,207 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusMDFe */ -/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ -/* (https://mdfe-portal.sefaz.rs.gov.br/ */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Você pode obter a última versão desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ -/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ -/* qualquer versão posterior. */ -/* */ -/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ -/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ -/* */ -/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ -/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ -/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Você também pode obter uma copia da licença em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ -using MDFe.Wsdl.Configuracao; - -namespace MDFe.Wsdl.Gerado.MDFeConsultaNaoEncerrados -{ // -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name="MDFeConsNaoEncSoap12", Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsNaoEnc")] - public partial class MDFeConsNaoEnc : System.Web.Services.Protocols.SoapHttpClientProtocol { - - private mdfeCabecMsg mdfeCabecMsgValueField; - - private System.Threading.SendOrPostCallback mdfeConsNaoEncOperationCompleted; - - /// - public MDFeConsNaoEnc(WsdlConfiguracao configuracao) { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = configuracao.Url; - this.mdfeCabecMsgValue = new mdfeCabecMsg - { - cUF = configuracao.CodigoIbgeEstado, - versaoDados = configuracao.Versao - }; - this.ClientCertificates.Add(configuracao.CertificadoDigital); - Timeout = configuracao.TimeOut; - } - - public mdfeCabecMsg mdfeCabecMsgValue { - get { - return this.mdfeCabecMsgValueField; - } - set { - this.mdfeCabecMsgValueField = value; - } - } - - /// - public event mdfeConsNaoEncCompletedEventHandler mdfeConsNaoEncCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("mdfeCabecMsgValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsNaoEnc/mdfeConsNaoEnc", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsNaoEnc")] - public System.Xml.XmlNode mdfeConsNaoEnc([System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsNaoEnc")] System.Xml.XmlNode mdfeDadosMsg) { - object[] results = this.Invoke("mdfeConsNaoEnc", new object[] { - mdfeDadosMsg}); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public System.IAsyncResult BeginmdfeConsNaoEnc(System.Xml.XmlNode mdfeDadosMsg, System.AsyncCallback callback, object asyncState) { - return this.BeginInvoke("mdfeConsNaoEnc", new object[] { - mdfeDadosMsg}, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndmdfeConsNaoEnc(System.IAsyncResult asyncResult) { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public void mdfeConsNaoEncAsync(System.Xml.XmlNode mdfeDadosMsg) { - this.mdfeConsNaoEncAsync(mdfeDadosMsg, null); - } - - /// - public void mdfeConsNaoEncAsync(System.Xml.XmlNode mdfeDadosMsg, object userState) { - if ((this.mdfeConsNaoEncOperationCompleted == null)) { - this.mdfeConsNaoEncOperationCompleted = new System.Threading.SendOrPostCallback(this.OnmdfeConsNaoEncOperationCompleted); - } - this.InvokeAsync("mdfeConsNaoEnc", new object[] { - mdfeDadosMsg}, this.mdfeConsNaoEncOperationCompleted, userState); - } - - private void OnmdfeConsNaoEncOperationCompleted(object arg) { - if ((this.mdfeConsNaoEncCompleted != null)) { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); - this.mdfeConsNaoEncCompleted(this, new mdfeConsNaoEncCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) { - base.CancelAsync(userState); - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsNaoEnc")] - [System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsNaoEnc", IsNullable=false)] - public partial class mdfeCabecMsg : System.Web.Services.Protocols.SoapHeader { - - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF { - get { - return this.cUFField; - } - set { - this.cUFField = value; - } - } - - /// - public string versaoDados { - get { - return this.versaoDadosField; - } - set { - this.versaoDadosField = value; - } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr { - get { - return this.anyAttrField; - } - set { - this.anyAttrField = value; - } - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - public delegate void mdfeConsNaoEncCompletedEventHandler(object sender, mdfeConsNaoEncCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class mdfeConsNaoEncCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { - - private object[] results; - - internal mdfeConsNaoEncCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) { - this.results = results; - } - - /// - public System.Xml.XmlNode Result { - get { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode)(this.results[0])); - } - } - } -} \ No newline at end of file diff --git a/MDFe.Wsdl/Gerado/MDFeConsultaProtoloco/MDFeConsulta.cs b/MDFe.Wsdl/Gerado/MDFeConsultaProtoloco/MDFeConsulta.cs deleted file mode 100755 index f13b89321..000000000 --- a/MDFe.Wsdl/Gerado/MDFeConsultaProtoloco/MDFeConsulta.cs +++ /dev/null @@ -1,207 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusMDFe */ -/* Biblioteca C# para emisso de Manifesto Eletrnico Fiscal de Documentos */ -/* (https://mdfe-portal.sefaz.rs.gov.br/ */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ -/* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ -/* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ -using MDFe.Wsdl.Configuracao; - -namespace MDFe.Wsdl.Gerado.MDFeConsultaProtoloco -{ // -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name="MDFeConsultaSoap12", Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsulta")] - public partial class MDFeConsulta : System.Web.Services.Protocols.SoapHttpClientProtocol { - - private mdfeCabecMsg mdfeCabecMsgValueField; - - private System.Threading.SendOrPostCallback mdfeConsultaMDFOperationCompleted; - - /// - public MDFeConsulta(WsdlConfiguracao configuracao) { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = configuracao.Url; - this.mdfeCabecMsgValue = new mdfeCabecMsg - { - cUF = configuracao.CodigoIbgeEstado, - versaoDados = configuracao.Versao - }; - this.ClientCertificates.Add(configuracao.CertificadoDigital); - this.Timeout = configuracao.TimeOut; - } - - public mdfeCabecMsg mdfeCabecMsgValue { - get { - return this.mdfeCabecMsgValueField; - } - set { - this.mdfeCabecMsgValueField = value; - } - } - - /// - public event mdfeConsultaMDFCompletedEventHandler mdfeConsultaMDFCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("mdfeCabecMsgValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsulta/mdfeConsultaMDF", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsulta")] - public System.Xml.XmlNode mdfeConsultaMDF([System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsulta")] System.Xml.XmlNode mdfeDadosMsg) { - object[] results = this.Invoke("mdfeConsultaMDF", new object[] { - mdfeDadosMsg}); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public System.IAsyncResult BeginmdfeConsultaMDF(System.Xml.XmlNode mdfeDadosMsg, System.AsyncCallback callback, object asyncState) { - return this.BeginInvoke("mdfeConsultaMDF", new object[] { - mdfeDadosMsg}, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndmdfeConsultaMDF(System.IAsyncResult asyncResult) { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public void mdfeConsultaMDFAsync(System.Xml.XmlNode mdfeDadosMsg) { - this.mdfeConsultaMDFAsync(mdfeDadosMsg, null); - } - - /// - public void mdfeConsultaMDFAsync(System.Xml.XmlNode mdfeDadosMsg, object userState) { - if ((this.mdfeConsultaMDFOperationCompleted == null)) { - this.mdfeConsultaMDFOperationCompleted = new System.Threading.SendOrPostCallback(this.OnmdfeConsultaMDFOperationCompleted); - } - this.InvokeAsync("mdfeConsultaMDF", new object[] { - mdfeDadosMsg}, this.mdfeConsultaMDFOperationCompleted, userState); - } - - private void OnmdfeConsultaMDFOperationCompleted(object arg) { - if ((this.mdfeConsultaMDFCompleted != null)) { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); - this.mdfeConsultaMDFCompleted(this, new mdfeConsultaMDFCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) { - base.CancelAsync(userState); - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsulta")] - [System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsulta", IsNullable=false)] - public partial class mdfeCabecMsg : System.Web.Services.Protocols.SoapHeader { - - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF { - get { - return this.cUFField; - } - set { - this.cUFField = value; - } - } - - /// - public string versaoDados { - get { - return this.versaoDadosField; - } - set { - this.versaoDadosField = value; - } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr { - get { - return this.anyAttrField; - } - set { - this.anyAttrField = value; - } - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - public delegate void mdfeConsultaMDFCompletedEventHandler(object sender, mdfeConsultaMDFCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class mdfeConsultaMDFCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { - - private object[] results; - - internal mdfeConsultaMDFCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) { - this.results = results; - } - - /// - public System.Xml.XmlNode Result { - get { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode)(this.results[0])); - } - } - } -} \ No newline at end of file diff --git a/MDFe.Wsdl/Gerado/MDFeEventos/MDFeRecepcaoEvento.cs b/MDFe.Wsdl/Gerado/MDFeEventos/MDFeRecepcaoEvento.cs deleted file mode 100755 index 8565d1cef..000000000 --- a/MDFe.Wsdl/Gerado/MDFeEventos/MDFeRecepcaoEvento.cs +++ /dev/null @@ -1,212 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusMDFe */ -/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ -/* (https://mdfe-portal.sefaz.rs.gov.br/ */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Você pode obter a última versão desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ -/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ -/* qualquer versão posterior. */ -/* */ -/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ -/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ -/* */ -/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ -/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ -/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Você também pode obter uma copia da licença em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ -using System; -using System.ComponentModel; -using System.Diagnostics; -using System.Security.Cryptography.X509Certificates; -using System.Web.Services; -using System.Web.Services.Protocols; -using System.Xml.Serialization; -using MDFe.Wsdl.Configuracao; - -// -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - - -/// -[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] -[System.Diagnostics.DebuggerStepThroughAttribute()] -[System.ComponentModel.DesignerCategoryAttribute("code")] -[System.Web.Services.WebServiceBindingAttribute(Name="MDFeRecepcaoEventoSoap12", Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcaoEvento")] -public partial class MDFeRecepcaoEvento : System.Web.Services.Protocols.SoapHttpClientProtocol { - - private mdfeCabecMsg mdfeCabecMsgValueField; - - private System.Threading.SendOrPostCallback mdfeRecepcaoEventoOperationCompleted; - - /// - public MDFeRecepcaoEvento(WsdlConfiguracao configuracao) { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = configuracao.Url; - this.mdfeCabecMsgValue = new mdfeCabecMsg - { - cUF = configuracao.CodigoIbgeEstado, - versaoDados = configuracao.Versao - }; - this.ClientCertificates.Add(configuracao.CertificadoDigital); - this.Timeout = configuracao.TimeOut; - } - - public mdfeCabecMsg mdfeCabecMsgValue { - get { - return this.mdfeCabecMsgValueField; - } - set { - this.mdfeCabecMsgValueField = value; - } - } - - /// - public event mdfeRecepcaoEventoCompletedEventHandler mdfeRecepcaoEventoCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("mdfeCabecMsgValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcaoEvento/mdfeRecepcaoEvento", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcaoEvento")] - public System.Xml.XmlNode mdfeRecepcaoEvento([System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcaoEvento")] System.Xml.XmlNode mdfeDadosMsg) { - object[] results = this.Invoke("mdfeRecepcaoEvento", new object[] { - mdfeDadosMsg}); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public System.IAsyncResult BeginmdfeRecepcaoEvento(System.Xml.XmlNode mdfeDadosMsg, System.AsyncCallback callback, object asyncState) { - return this.BeginInvoke("mdfeRecepcaoEvento", new object[] { - mdfeDadosMsg}, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndmdfeRecepcaoEvento(System.IAsyncResult asyncResult) { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public void mdfeRecepcaoEventoAsync(System.Xml.XmlNode mdfeDadosMsg) { - this.mdfeRecepcaoEventoAsync(mdfeDadosMsg, null); - } - - /// - public void mdfeRecepcaoEventoAsync(System.Xml.XmlNode mdfeDadosMsg, object userState) { - if ((this.mdfeRecepcaoEventoOperationCompleted == null)) { - this.mdfeRecepcaoEventoOperationCompleted = new System.Threading.SendOrPostCallback(this.OnmdfeRecepcaoEventoOperationCompleted); - } - this.InvokeAsync("mdfeRecepcaoEvento", new object[] { - mdfeDadosMsg}, this.mdfeRecepcaoEventoOperationCompleted, userState); - } - - private void OnmdfeRecepcaoEventoOperationCompleted(object arg) { - if ((this.mdfeRecepcaoEventoCompleted != null)) { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); - this.mdfeRecepcaoEventoCompleted(this, new mdfeRecepcaoEventoCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) { - base.CancelAsync(userState); - } -} - -/// -[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] -[System.SerializableAttribute()] -[System.Diagnostics.DebuggerStepThroughAttribute()] -[System.ComponentModel.DesignerCategoryAttribute("code")] -[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcaoEvento")] -[System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcaoEvento", IsNullable=false)] -public partial class mdfeCabecMsg : System.Web.Services.Protocols.SoapHeader { - - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF { - get { - return this.cUFField; - } - set { - this.cUFField = value; - } - } - - /// - public string versaoDados { - get { - return this.versaoDadosField; - } - set { - this.versaoDadosField = value; - } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr { - get { - return this.anyAttrField; - } - set { - this.anyAttrField = value; - } - } -} - -/// -[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] -public delegate void mdfeRecepcaoEventoCompletedEventHandler(object sender, mdfeRecepcaoEventoCompletedEventArgs e); - -/// -[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] -[System.Diagnostics.DebuggerStepThroughAttribute()] -[System.ComponentModel.DesignerCategoryAttribute("code")] -public partial class mdfeRecepcaoEventoCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { - - private object[] results; - - internal mdfeRecepcaoEventoCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) { - this.results = results; - } - - /// - public System.Xml.XmlNode Result { - get { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode)(this.results[0])); - } - } -} diff --git a/MDFe.Wsdl/Gerado/MDFeRecepcao/MDFeRecepcao.cs b/MDFe.Wsdl/Gerado/MDFeRecepcao/MDFeRecepcao.cs deleted file mode 100755 index 51507d49e..000000000 --- a/MDFe.Wsdl/Gerado/MDFeRecepcao/MDFeRecepcao.cs +++ /dev/null @@ -1,208 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusMDFe */ -/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ -/* (https://mdfe-portal.sefaz.rs.gov.br/ */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Você pode obter a última versão desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ -/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ -/* qualquer versão posterior. */ -/* */ -/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ -/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ -/* */ -/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ -/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ -/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Você também pode obter uma copia da licença em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ -using System.Security.Cryptography.X509Certificates; -using MDFe.Wsdl.Configuracao; - -namespace MDFe.Wsdl.Gerado.MDFeRecepcao -{ // -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name="MDFeRecepcaoSoap12", Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcao")] - public partial class MDFeRecepcao : System.Web.Services.Protocols.SoapHttpClientProtocol { - - private mdfeCabecMsg mdfeCabecMsgValueField; - - private System.Threading.SendOrPostCallback mdfeRecepcaoLoteOperationCompleted; - - /// - public MDFeRecepcao(WsdlConfiguracao configuracao) { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = configuracao.Url; - this.mdfeCabecMsgValue = new mdfeCabecMsg - { - cUF = configuracao.CodigoIbgeEstado, - versaoDados = configuracao.Versao - }; - this.ClientCertificates.Add(configuracao.CertificadoDigital); - this.Timeout = configuracao.TimeOut; - } - - public mdfeCabecMsg mdfeCabecMsgValue { - get { - return this.mdfeCabecMsgValueField; - } - set { - this.mdfeCabecMsgValueField = value; - } - } - - /// - public event mdfeRecepcaoLoteCompletedEventHandler mdfeRecepcaoLoteCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("mdfeCabecMsgValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcao/mdfeRecepcaoLote", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcao")] - public System.Xml.XmlNode mdfeRecepcaoLote([System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcao")] System.Xml.XmlNode mdfeDadosMsg) { - object[] results = this.Invoke("mdfeRecepcaoLote", new object[] { - mdfeDadosMsg}); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public System.IAsyncResult BeginmdfeRecepcaoLote(System.Xml.XmlNode mdfeDadosMsg, System.AsyncCallback callback, object asyncState) { - return this.BeginInvoke("mdfeRecepcaoLote", new object[] { - mdfeDadosMsg}, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndmdfeRecepcaoLote(System.IAsyncResult asyncResult) { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public void mdfeRecepcaoLoteAsync(System.Xml.XmlNode mdfeDadosMsg) { - this.mdfeRecepcaoLoteAsync(mdfeDadosMsg, null); - } - - /// - public void mdfeRecepcaoLoteAsync(System.Xml.XmlNode mdfeDadosMsg, object userState) { - if ((this.mdfeRecepcaoLoteOperationCompleted == null)) { - this.mdfeRecepcaoLoteOperationCompleted = new System.Threading.SendOrPostCallback(this.OnmdfeRecepcaoLoteOperationCompleted); - } - this.InvokeAsync("mdfeRecepcaoLote", new object[] { - mdfeDadosMsg}, this.mdfeRecepcaoLoteOperationCompleted, userState); - } - - private void OnmdfeRecepcaoLoteOperationCompleted(object arg) { - if ((this.mdfeRecepcaoLoteCompleted != null)) { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); - this.mdfeRecepcaoLoteCompleted(this, new mdfeRecepcaoLoteCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) { - base.CancelAsync(userState); - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcao")] - [System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcao", IsNullable=false)] - public partial class mdfeCabecMsg : System.Web.Services.Protocols.SoapHeader { - - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF { - get { - return this.cUFField; - } - set { - this.cUFField = value; - } - } - - /// - public string versaoDados { - get { - return this.versaoDadosField; - } - set { - this.versaoDadosField = value; - } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr { - get { - return this.anyAttrField; - } - set { - this.anyAttrField = value; - } - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - public delegate void mdfeRecepcaoLoteCompletedEventHandler(object sender, mdfeRecepcaoLoteCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class mdfeRecepcaoLoteCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { - - private object[] results; - - internal mdfeRecepcaoLoteCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) { - this.results = results; - } - - /// - public System.Xml.XmlNode Result { - get { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode)(this.results[0])); - } - } - } -} \ No newline at end of file diff --git a/MDFe.Wsdl/Gerado/MDFeRetRecepcao/MDFeRetRecepcao.cs b/MDFe.Wsdl/Gerado/MDFeRetRecepcao/MDFeRetRecepcao.cs deleted file mode 100755 index efb4d9607..000000000 --- a/MDFe.Wsdl/Gerado/MDFeRetRecepcao/MDFeRetRecepcao.cs +++ /dev/null @@ -1,208 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusMDFe */ -/* Biblioteca C# para emisso de Manifesto Eletrnico Fiscal de Documentos */ -/* (https://mdfe-portal.sefaz.rs.gov.br/ */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ -/* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ -/* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ -using System.Security.Cryptography.X509Certificates; -using MDFe.Wsdl.Configuracao; - -namespace MDFe.Wsdl.Gerado.MDFeRetRecepcao -{ // -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name="MDFeRetRecepcaoSoap12", Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRetRecepcao")] - public partial class MDFeRetRecepcao : System.Web.Services.Protocols.SoapHttpClientProtocol { - - private mdfeCabecMsg mdfeCabecMsgValueField; - - private System.Threading.SendOrPostCallback mdfeRetRecepcaoOperationCompleted; - - /// - public MDFeRetRecepcao(WsdlConfiguracao configuracao) { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = configuracao.Url; - mdfeCabecMsgValue = new mdfeCabecMsg - { - versaoDados = configuracao.Versao, - cUF = configuracao.CodigoIbgeEstado - }; - this.ClientCertificates.Add(configuracao.CertificadoDigital); - this.Timeout = configuracao.TimeOut; - } - - public mdfeCabecMsg mdfeCabecMsgValue { - get { - return this.mdfeCabecMsgValueField; - } - set { - this.mdfeCabecMsgValueField = value; - } - } - - /// - public event mdfeRetRecepcaoCompletedEventHandler mdfeRetRecepcaoCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("mdfeCabecMsgValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRetRecepcao/mdfeRetRecepcao", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRetRecepcao")] - public System.Xml.XmlNode mdfeRetRecepcao([System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRetRecepcao")] System.Xml.XmlNode mdfeDadosMsg) { - object[] results = this.Invoke("mdfeRetRecepcao", new object[] { - mdfeDadosMsg}); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public System.IAsyncResult BeginmdfeRetRecepcao(System.Xml.XmlNode mdfeDadosMsg, System.AsyncCallback callback, object asyncState) { - return this.BeginInvoke("mdfeRetRecepcao", new object[] { - mdfeDadosMsg}, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndmdfeRetRecepcao(System.IAsyncResult asyncResult) { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public void mdfeRetRecepcaoAsync(System.Xml.XmlNode mdfeDadosMsg) { - this.mdfeRetRecepcaoAsync(mdfeDadosMsg, null); - } - - /// - public void mdfeRetRecepcaoAsync(System.Xml.XmlNode mdfeDadosMsg, object userState) { - if ((this.mdfeRetRecepcaoOperationCompleted == null)) { - this.mdfeRetRecepcaoOperationCompleted = new System.Threading.SendOrPostCallback(this.OnmdfeRetRecepcaoOperationCompleted); - } - this.InvokeAsync("mdfeRetRecepcao", new object[] { - mdfeDadosMsg}, this.mdfeRetRecepcaoOperationCompleted, userState); - } - - private void OnmdfeRetRecepcaoOperationCompleted(object arg) { - if ((this.mdfeRetRecepcaoCompleted != null)) { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); - this.mdfeRetRecepcaoCompleted(this, new mdfeRetRecepcaoCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) { - base.CancelAsync(userState); - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRetRecepcao")] - [System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRetRecepcao", IsNullable=false)] - public partial class mdfeCabecMsg : System.Web.Services.Protocols.SoapHeader { - - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF { - get { - return this.cUFField; - } - set { - this.cUFField = value; - } - } - - /// - public string versaoDados { - get { - return this.versaoDadosField; - } - set { - this.versaoDadosField = value; - } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr { - get { - return this.anyAttrField; - } - set { - this.anyAttrField = value; - } - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - public delegate void mdfeRetRecepcaoCompletedEventHandler(object sender, mdfeRetRecepcaoCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class mdfeRetRecepcaoCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { - - private object[] results; - - internal mdfeRetRecepcaoCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) { - this.results = results; - } - - /// - public System.Xml.XmlNode Result { - get { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode)(this.results[0])); - } - } - } -} \ No newline at end of file diff --git a/MDFe.Wsdl/Gerado/MDFeStatusServico/MDFeStatusServico.cs b/MDFe.Wsdl/Gerado/MDFeStatusServico/MDFeStatusServico.cs deleted file mode 100755 index 1f4521842..000000000 --- a/MDFe.Wsdl/Gerado/MDFeStatusServico/MDFeStatusServico.cs +++ /dev/null @@ -1,208 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusMDFe */ -/* Biblioteca C# para emisso de Manifesto Eletrnico Fiscal de Documentos */ -/* (https://mdfe-portal.sefaz.rs.gov.br/ */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Voc pode obter a ltima verso desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca software livre; voc pode redistribu-la e/ou modific-la */ -/* sob os termos da Licena Pblica Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a verso 2.1 da Licena, ou (a seu critrio) */ -/* qualquer verso posterior. */ -/* */ -/* Esta biblioteca distribuda na expectativa de que seja til, porm, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implcita de COMERCIABILIDADE OU */ -/* ADEQUAO A UMA FINALIDADE ESPECFICA. Consulte a Licena Pblica Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENA.TXT ou LICENSE.TXT) */ -/* */ -/* Voc deve ter recebido uma cpia da Licena Pblica Geral Menor do GNU junto*/ -/* com esta biblioteca; se no, escreva para a Free Software Foundation, Inc., */ -/* no endereo 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Voc tambm pode obter uma copia da licena em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco jos da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ -using System.Security.Cryptography.X509Certificates; -using MDFe.Wsdl.Configuracao; - -namespace MDFe.Wsdl.Gerado.MDFeStatusServico -{ // -// This source code was auto-generated by wsdl, Version=4.6.1055.0. -// - - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name="MDFeStatusServicoSoap12", Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeStatusServico")] - public partial class MDFeStatusServico : System.Web.Services.Protocols.SoapHttpClientProtocol { - - private mdfeCabecMsg mdfeCabecMsgValueField; - - private System.Threading.SendOrPostCallback mdfeStatusServicoMDFOperationCompleted; - - /// - public MDFeStatusServico(WsdlConfiguracao configuracao) { - this.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12; - this.Url = configuracao.Url; - this.mdfeCabecMsgValue = new mdfeCabecMsg - { - cUF = configuracao.CodigoIbgeEstado, - versaoDados = configuracao.Versao - }; - this.ClientCertificates.Add(configuracao.CertificadoDigital); - this.Timeout = configuracao.TimeOut; - } - - public mdfeCabecMsg mdfeCabecMsgValue { - get { - return this.mdfeCabecMsgValueField; - } - set { - this.mdfeCabecMsgValueField = value; - } - } - - /// - public event mdfeStatusServicoMDFCompletedEventHandler mdfeStatusServicoMDFCompleted; - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("mdfeCabecMsgValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.InOut)] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeStatusServico/mdfeStatusServicoMDF", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)] - [return: System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeStatusServico")] - public System.Xml.XmlNode mdfeStatusServicoMDF([System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeStatusServico")] System.Xml.XmlNode mdfeDadosMsg) { - object[] results = this.Invoke("mdfeStatusServicoMDF", new object[] { - mdfeDadosMsg}); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public System.IAsyncResult BeginmdfeStatusServicoMDF(System.Xml.XmlNode mdfeDadosMsg, System.AsyncCallback callback, object asyncState) { - return this.BeginInvoke("mdfeStatusServicoMDF", new object[] { - mdfeDadosMsg}, callback, asyncState); - } - - /// - public System.Xml.XmlNode EndmdfeStatusServicoMDF(System.IAsyncResult asyncResult) { - object[] results = this.EndInvoke(asyncResult); - return ((System.Xml.XmlNode)(results[0])); - } - - /// - public void mdfeStatusServicoMDFAsync(System.Xml.XmlNode mdfeDadosMsg) { - this.mdfeStatusServicoMDFAsync(mdfeDadosMsg, null); - } - - /// - public void mdfeStatusServicoMDFAsync(System.Xml.XmlNode mdfeDadosMsg, object userState) { - if ((this.mdfeStatusServicoMDFOperationCompleted == null)) { - this.mdfeStatusServicoMDFOperationCompleted = new System.Threading.SendOrPostCallback(this.OnmdfeStatusServicoMDFOperationCompleted); - } - this.InvokeAsync("mdfeStatusServicoMDF", new object[] { - mdfeDadosMsg}, this.mdfeStatusServicoMDFOperationCompleted, userState); - } - - private void OnmdfeStatusServicoMDFOperationCompleted(object arg) { - if ((this.mdfeStatusServicoMDFCompleted != null)) { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); - this.mdfeStatusServicoMDFCompleted(this, new mdfeStatusServicoMDFCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); - } - } - - /// - public new void CancelAsync(object userState) { - base.CancelAsync(userState); - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeStatusServico")] - [System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeStatusServico", IsNullable=false)] - public partial class mdfeCabecMsg : System.Web.Services.Protocols.SoapHeader { - - private string cUFField; - - private string versaoDadosField; - - private System.Xml.XmlAttribute[] anyAttrField; - - /// - public string cUF { - get { - return this.cUFField; - } - set { - this.cUFField = value; - } - } - - /// - public string versaoDados { - get { - return this.versaoDadosField; - } - set { - this.versaoDadosField = value; - } - } - - /// - [System.Xml.Serialization.XmlAnyAttributeAttribute()] - public System.Xml.XmlAttribute[] AnyAttr { - get { - return this.anyAttrField; - } - set { - this.anyAttrField = value; - } - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - public delegate void mdfeStatusServicoMDFCompletedEventHandler(object sender, mdfeStatusServicoMDFCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class mdfeStatusServicoMDFCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { - - private object[] results; - - internal mdfeStatusServicoMDFCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) { - this.results = results; - } - - /// - public System.Xml.XmlNode Result { - get { - this.RaiseExceptionIfNecessary(); - return ((System.Xml.XmlNode)(this.results[0])); - } - } - } -} \ No newline at end of file diff --git a/MDFe.Wsdl/MDFe.Wsdl.csproj b/MDFe.Wsdl/MDFe.Wsdl.csproj index 150504771..2c60a1325 100755 --- a/MDFe.Wsdl/MDFe.Wsdl.csproj +++ b/MDFe.Wsdl/MDFe.Wsdl.csproj @@ -1,59 +1,12 @@ - - - + + - Debug - AnyCPU - {81B3BC65-A499-4E19-8AB4-09C6D874C540} - Library - Properties - MDFe.Wsdl - MDFe.Wsdl - v4.5 - 512 - + net462;netstandard2.0;net6.0 + - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - - - - + - - - - - - - - + - - - \ No newline at end of file + + diff --git a/MDFe.Wsdl/MDFe.Wsdl.csproj.DotSettings b/MDFe.Wsdl/MDFe.Wsdl.csproj.DotSettings deleted file mode 100644 index 662f95686..000000000 --- a/MDFe.Wsdl/MDFe.Wsdl.csproj.DotSettings +++ /dev/null @@ -1,2 +0,0 @@ - - CSharp50 \ No newline at end of file diff --git a/MDFe.Wsdl/MDFeConsultaNaoEncerrados/MDFeConsNaoEnc.cs b/MDFe.Wsdl/MDFeConsultaNaoEncerrados/MDFeConsNaoEnc.cs new file mode 100644 index 000000000..8cf05de12 --- /dev/null +++ b/MDFe.Wsdl/MDFeConsultaNaoEncerrados/MDFeConsNaoEnc.cs @@ -0,0 +1,90 @@ +using System; +using System.Net; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; + +namespace MDFe.Wsdl.MDFeConsultaNaoEncerrados +{ + public class MDFeConsNaoEnc + { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; + + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao WsdlConfiguracao; + + public MDFeConsNaoEnc(WsdlConfiguracao configuracao) + { + if (configuracao == null) + throw new ArgumentNullException(); + + WsdlConfiguracao = configuracao; + soapEnvelope = new SoapEnvelope + { + head = new ResponseHead + { + mdfeCabecMsg = new CTe.CTeOSDocumento.Common.mdfeCabecMsg + { + versaoDados = configuracao.Versao, + cUF = configuracao.CodigoIbgeEstado + } + } + }; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; + } + + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public async Task mdfeConsNaoEncAsync(XmlNode mdfeDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + mdfeDadosMsg = mdfeDadosMsg + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, WsdlConfiguracao, TipoEvento.MDFeNaoEncerrado, "retConsMDFeNaoEnc"); + } + + public XmlNode mdfeConsNaoEnc(XmlNode mdfeDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + mdfeDadosMsg = mdfeDadosMsg + }; + return RequestBuilderAndSender.Execute(soapEnvelope, WsdlConfiguracao, TipoEvento.MDFeNaoEncerrado, "retConsMDFeNaoEnc"); + } + + } + + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope + { + [XmlElement(ElementName = "Header", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseHead head { get; set; } + + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } + } + + public class ResponseHead : CommonResponseHead + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsNaoEnc")] + public T mdfeCabecMsg { get; set; } + } + + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsNaoEnc")] + public T mdfeDadosMsg { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Wsdl/MDFeConsultaProtoloco/MDFeConsulta.cs b/MDFe.Wsdl/MDFeConsultaProtoloco/MDFeConsulta.cs new file mode 100644 index 000000000..69cc2f93e --- /dev/null +++ b/MDFe.Wsdl/MDFeConsultaProtoloco/MDFeConsulta.cs @@ -0,0 +1,90 @@ +using System; +using System.Net; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; + +namespace MDFe.Wsdl.MDFeConsultaProtoloco +{ + public class MDFeConsulta + { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; + + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao WsdlConfiguracao; + + public MDFeConsulta(WsdlConfiguracao configuracao) + { + if (configuracao == null) + throw new ArgumentNullException(); + + WsdlConfiguracao = configuracao; + soapEnvelope = new SoapEnvelope + { + head = new ResponseHead + { + mdfeCabecMsg = new CTe.CTeOSDocumento.Common.mdfeCabecMsg + { + versaoDados = configuracao.Versao, + cUF = configuracao.CodigoIbgeEstado + } + } + }; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; + } + + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public async Task mdfeConsultaMDFAsync(XmlNode mdfeDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + mdfeDadosMsg = mdfeDadosMsg + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, WsdlConfiguracao, TipoEvento.MDFeConsulta, "retConsSitMDFe"); + } + + public XmlNode mdfeConsultaMDF(XmlNode mdfeDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + mdfeDadosMsg = mdfeDadosMsg + }; + return RequestBuilderAndSender.Execute(soapEnvelope, WsdlConfiguracao, TipoEvento.MDFeConsulta, "retConsSitMDFe"); + } + + } + + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope + { + [XmlElement(ElementName = "Header", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseHead head { get; set; } + + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } + } + + public class ResponseHead : CommonResponseHead + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsulta")] + public T mdfeCabecMsg { get; set; } + } + + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsulta")] + public T mdfeDadosMsg { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Wsdl/MDFeEventos/MDFeRecepcaoEvento.cs b/MDFe.Wsdl/MDFeEventos/MDFeRecepcaoEvento.cs new file mode 100644 index 000000000..ef6af2fa3 --- /dev/null +++ b/MDFe.Wsdl/MDFeEventos/MDFeRecepcaoEvento.cs @@ -0,0 +1,90 @@ +using System; +using System.Net; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; + +namespace MDFe.Wsdl.MDFeEventos +{ + public class MDFeRecepcaoEvento + { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; + + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao WsdlConfiguracao; + + public MDFeRecepcaoEvento(WsdlConfiguracao configuracao) + { + if (configuracao == null) + throw new ArgumentNullException(); + + WsdlConfiguracao = configuracao; + soapEnvelope = new SoapEnvelope + { + head = new ResponseHead + { + mdfeCabecMsg = new CTe.CTeOSDocumento.Common.mdfeCabecMsg + { + versaoDados = configuracao.Versao, + cUF = configuracao.CodigoIbgeEstado + } + } + }; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; + } + + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public async Task mdfeRecepcaoEventoAsync(XmlNode mdfeDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + mdfeDadosMsg = mdfeDadosMsg + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, WsdlConfiguracao, TipoEvento.MDFeEvento, "retEventoMDFe"); + } + + public XmlNode mdfeRecepcaoEvento(XmlNode mdfeDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + mdfeDadosMsg = mdfeDadosMsg + }; + return RequestBuilderAndSender.Execute(soapEnvelope, WsdlConfiguracao, TipoEvento.MDFeEvento, "retEventoMDFe"); + } + + } + + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope + { + [XmlElement(ElementName = "Header", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseHead head { get; set; } + + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } + } + + public class ResponseHead : CommonResponseHead + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcaoEvento")] + public T mdfeCabecMsg { get; set; } + } + + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcaoEvento")] + public T mdfeDadosMsg { get; set; } + } +} diff --git a/MDFe.Wsdl/MDFeRecepcao/MDFeRecepcao.cs b/MDFe.Wsdl/MDFeRecepcao/MDFeRecepcao.cs new file mode 100644 index 000000000..d92b4c221 --- /dev/null +++ b/MDFe.Wsdl/MDFeRecepcao/MDFeRecepcao.cs @@ -0,0 +1,90 @@ +using System; +using System.Net; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; + +namespace MDFe.Wsdl.MDFeRecepcao +{ + public class MDFeRecepcao + { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; + + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao configuracao; + + + public MDFeRecepcao(WsdlConfiguracao configuracao) + { + if (configuracao == null) + throw new ArgumentNullException(); + + this.configuracao = configuracao; + soapEnvelope = new SoapEnvelope + { + head = new ResponseHead + { + mdfeCabecMsg = new CTe.CTeOSDocumento.Common.mdfeCabecMsg + { + versaoDados = configuracao.Versao, + cUF = configuracao.CodigoIbgeEstado + } + } + }; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; + } + + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public XmlNode mdfeRecepcaoLote(XmlNode mdfeDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + mdfeDadosMsg = mdfeDadosMsg + }; + return RequestBuilderAndSender.Execute(soapEnvelope, configuracao, TipoEvento.MDFeRecepcao, "retEnviMDFe"); + } + + public async Task mdfeRecepcaoLoteAsync(XmlNode mdfeDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + mdfeDadosMsg = mdfeDadosMsg + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, configuracao, TipoEvento.MDFeRecepcao, "retEnviMDFe"); + } + } + + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope + { + [XmlElement(ElementName = "Header", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseHead head { get; set; } + + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } + } + + public class ResponseHead : CommonResponseHead + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcao")] + public T mdfeCabecMsg { get; set; } + } + + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcao")] + public T mdfeDadosMsg { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Wsdl/MDFeRecepcao/Sincrono/MDFeRecepcaoSinc.cs b/MDFe.Wsdl/MDFeRecepcao/Sincrono/MDFeRecepcaoSinc.cs new file mode 100644 index 000000000..a673160bc --- /dev/null +++ b/MDFe.Wsdl/MDFeRecepcao/Sincrono/MDFeRecepcaoSinc.cs @@ -0,0 +1,65 @@ +using CTe.CTeOSDocumento.Common; +using DFe.Utils; +using System; +using System.Net; +using System.Xml; +using System.Xml.Serialization; + +namespace MDFe.Wsdl.MDFeRecepcao.Sincrono +{ + public class MDFeRecepcaoSinc + { + private readonly SoapEnvelope soapEnvelope; + + //Configurações do WSDL para estabelecimento da comunicação + private readonly WsdlConfiguracao configuracao; + + /// + /// Cria o cabeçalho do envelope a ser enviado e atribui as configurações do WSDL. + /// + /// + public MDFeRecepcaoSinc(WsdlConfiguracao configuracao) + { + if (configuracao == null) + throw new ArgumentNullException(); + + this.configuracao = configuracao; + soapEnvelope = new SoapEnvelope(); + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; + } + + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public XmlNode mdfeRecepcao(XmlNode mdfeDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + mdfeDadosMsg = Convert.ToBase64String(Compressao.Zip(mdfeDadosMsg.OuterXml)) + }; + return RequestBuilderAndSender.Execute(soapEnvelope, configuracao, TipoEvento.MDFeRecepcaoSinc, "retMDFe"); + } + + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope + { + + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } + } + + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRecepcaoSinc")] + public T mdfeDadosMsg { get; set; } + } + } +} diff --git a/MDFe.Wsdl/MDFeRetRecepcao/MDFeRetRecepcao.cs b/MDFe.Wsdl/MDFeRetRecepcao/MDFeRetRecepcao.cs new file mode 100644 index 000000000..82d86cc53 --- /dev/null +++ b/MDFe.Wsdl/MDFeRetRecepcao/MDFeRetRecepcao.cs @@ -0,0 +1,89 @@ +using System; +using System.Net; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; + +namespace MDFe.Wsdl.MDFeRetRecepcao +{ + public class MDFeRetRecepcao + { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; + + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao WsdlConfiguracao; + + public MDFeRetRecepcao(WsdlConfiguracao configuracao) + { + if (configuracao == null) + throw new ArgumentNullException(); + + WsdlConfiguracao = configuracao; + soapEnvelope = new SoapEnvelope + { + head = new ResponseHead + { + mdfeCabecMsg = new CTe.CTeOSDocumento.Common.mdfeCabecMsg + { + versaoDados = configuracao.Versao, + cUF = configuracao.CodigoIbgeEstado + } + } + }; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; + } + + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public async Task mdfeRetRecepcaoAsync(XmlNode mdfeDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + mdfeDadosMsg = mdfeDadosMsg + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, WsdlConfiguracao, TipoEvento.MDFeRetRecepcao, "retConsReciMDFe"); + } + + public XmlNode mdfeRetRecepcao(XmlNode mdfeDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + mdfeDadosMsg = mdfeDadosMsg + }; + return RequestBuilderAndSender.Execute(soapEnvelope, WsdlConfiguracao, TipoEvento.MDFeRetRecepcao, "retConsReciMDFe"); + } + } + + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope + { + [XmlElement(ElementName = "Header", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseHead head { get; set; } + + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } + } + + public class ResponseHead : CommonResponseHead + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRetRecepcao")] + public T mdfeCabecMsg { get; set; } + } + + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeRetRecepcao")] + public T mdfeDadosMsg { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Wsdl/MDFeSatusServico/MDFeStatusServico.cs b/MDFe.Wsdl/MDFeSatusServico/MDFeStatusServico.cs new file mode 100644 index 000000000..f1f02f1ec --- /dev/null +++ b/MDFe.Wsdl/MDFeSatusServico/MDFeStatusServico.cs @@ -0,0 +1,90 @@ +using System; +using System.Net; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; +using CTe.CTeOSDocumento.Common; + +namespace MDFe.Wsdl.Gerado.MDFeStatusServico +{ + public class MDFeStatusServico + { + //Envelope SOAP para envio + private SoapEnvelope soapEnvelope; + + //Configurações do WSDL para estabelecimento da comunicação + private WsdlConfiguracao WsdlConfiguracao; + + public MDFeStatusServico(WsdlConfiguracao configuracao) + { + if (configuracao == null) + throw new ArgumentNullException(); + + WsdlConfiguracao = configuracao; + soapEnvelope = new SoapEnvelope + { + head = new ResponseHead + { + mdfeCabecMsg = new CTe.CTeOSDocumento.Common.mdfeCabecMsg + { + versaoDados = configuracao.Versao, + cUF = configuracao.CodigoIbgeEstado + } + } + }; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; + } + + /// + /// Encapsula os dados da requisição no envelope por meio da serialização das partes e realiza a requisção ao Web Service. + /// + /// + /// XmlNode + public async Task mdfeStatusServicoMDFAsync(XmlNode mdfeDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + mdfeDadosMsg = mdfeDadosMsg + }; + return await RequestBuilderAndSender.ExecuteAsync(soapEnvelope, WsdlConfiguracao, TipoEvento.MDFeStatusServico, "retConsStatServMDFe"); + } + + public XmlNode mdfeStatusServicoMDF(XmlNode mdfeDadosMsg) + { + soapEnvelope.body = new ResponseBody + { + mdfeDadosMsg = mdfeDadosMsg + }; + return RequestBuilderAndSender.Execute(soapEnvelope, WsdlConfiguracao, TipoEvento.MDFeStatusServico, "retConsStatServMDFe"); + } + + } + + /// + /// Classe base para a serialização no formato do envelope SOAP. + /// + [XmlRoot(ElementName = "Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class SoapEnvelope : CommonSoapEnvelope + { + [XmlElement(ElementName = "Header", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseHead head { get; set; } + + [XmlElement(ElementName = "Body", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public ResponseBody body { get; set; } + } + + public class ResponseHead : CommonResponseHead + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeStatusServico")] + public T mdfeCabecMsg { get; set; } + } + + /// + /// Classe para o corpo do Envelope SOAP + /// + public class ResponseBody : CommonResponseBody + { + [XmlElement(Namespace = "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeStatusServico")] + public T mdfeDadosMsg { get; set; } + } +} diff --git a/MDFe.Wsdl/Properties/AssemblyInfo.cs b/MDFe.Wsdl/Properties/AssemblyInfo.cs deleted file mode 100755 index 9ac719662..000000000 --- a/MDFe.Wsdl/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("MDFe.Wsdl")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("MDFe.Wsdl")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("81b3bc65-a499-4e19-8ab4-09c6d874c540")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.0.0.8")] -[assembly: AssemblyFileVersion("0.0.0.8")] diff --git a/NFe.AppTeste.NetCore/ConfiguracaoApp.cs b/NFe.AppTeste.NetCore/ConfiguracaoApp.cs new file mode 100644 index 000000000..71051584d --- /dev/null +++ b/NFe.AppTeste.NetCore/ConfiguracaoApp.cs @@ -0,0 +1,44 @@ +using DFe.Classes.Flags; +using DFe.Utils; +using NFe.Classes.Informacoes.Emitente; +using NFe.Classes.Informacoes.Identificacao.Tipos; +using NFe.Utils; +using NFe.Utils.Email; +using System.Net; + +namespace NFe.AppTeste.NetCore +{ + public class ConfiguracaoApp + { + private ConfiguracaoServico _cfgServico; + + public ConfiguracaoApp() + { + CfgServico = ConfiguracaoServico.Instancia; + CfgServico.tpAmb = TipoAmbiente.Homologacao; + CfgServico.tpEmis = TipoEmissao.teNormal; + CfgServico.ProtocoloDeSeguranca = ServicePointManager.SecurityProtocol; + Emitente = new emit { CPF = "", CRT = CRT.SimplesNacional }; + EnderecoEmitente = new enderEmit(); + ConfiguracaoEmail = new ConfiguracaoEmail("email@dominio.com", "senha", "Envio de NFE", Properties.Resources.MensagemHtml, "smtp.dominio.com", 587, true, true); + } + + public ConfiguracaoServico CfgServico + { + get + { + ConfiguracaoServico.Instancia.CopiarPropriedades(_cfgServico); + return _cfgServico; + } + set + { + _cfgServico = value; + ConfiguracaoServico.Instancia.CopiarPropriedades(value); + } + } + + public emit Emitente { get; set; } + public enderEmit EnderecoEmitente { get; set; } + public ConfiguracaoEmail ConfiguracaoEmail { get; set; } + } +} diff --git a/NFe.AppTeste.NetCore/NFe.AppTeste.NetCore.csproj b/NFe.AppTeste.NetCore/NFe.AppTeste.NetCore.csproj new file mode 100644 index 000000000..d332300a6 --- /dev/null +++ b/NFe.AppTeste.NetCore/NFe.AppTeste.NetCore.csproj @@ -0,0 +1,32 @@ + + + + Exe + net6.0 + + false + + + + + + + + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + diff --git a/NFe.AppTeste.NetCore/Program.cs b/NFe.AppTeste.NetCore/Program.cs new file mode 100644 index 000000000..31ee942e2 --- /dev/null +++ b/NFe.AppTeste.NetCore/Program.cs @@ -0,0 +1,1049 @@ +using DFe.Classes.Flags; +using DFe.Utils; +using DFe.Utils.Assinatura; +using DFe.Utils; +using NFe.Classes; +using NFe.Classes.Informacoes; +using NFe.Classes.Informacoes.Cobranca; +using NFe.Classes.Informacoes.Destinatario; +using NFe.Classes.Informacoes.Detalhe; +using NFe.Classes.Informacoes.Detalhe.Tributacao; +using NFe.Classes.Informacoes.Detalhe.Tributacao.Estadual; +using NFe.Classes.Informacoes.Detalhe.Tributacao.Estadual.Tipos; +using NFe.Classes.Informacoes.Detalhe.Tributacao.Federal; +using NFe.Classes.Informacoes.Detalhe.Tributacao.Federal.Tipos; +using NFe.Classes.Informacoes.Emitente; +using NFe.Classes.Informacoes.Identificacao; +using NFe.Classes.Informacoes.Identificacao.Tipos; +using NFe.Classes.Informacoes.Observacoes; +using NFe.Classes.Informacoes.Pagamento; +using NFe.Classes.Informacoes.Total; +using NFe.Classes.Informacoes.Transporte; +using NFe.Classes.Servicos.ConsultaCadastro; +using NFe.Classes.Servicos.Tipos; +using NFe.Servicos; +using NFe.Servicos.Retorno; +using NFe.Utils; +using NFe.Utils.Excecoes; +using NFe.Utils.NFe; +using NFe.Utils.Tributacao.Estadual; +using NFe.Utils.Tributacao.Federal; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; +using System.Xml.Linq; + +namespace NFe.AppTeste.NetCore +{ + internal class Program + { + #region Console + private const string ArquivoConfiguracao = @"\configuracao.xml"; + private static ConfiguracaoApp _configuracoes; + + private static void Main(string[] args) + { + Console.WriteLine("Bem vindo ao demo do projeto NF-e com suporte ao NetStandard 2.0!"); + Console.WriteLine("Este exemplo necessita do arquivo Configuração.xml já criado."); + Console.WriteLine("Caso necessite criar, utilize o app 'NFe.AppTeste'. e clique em 'Salvar Configuração para Arquivo'"); + Console.WriteLine("Em seguida copie o 'configuração.xml' para a pasta bin\\Debug\\net5 deste projeto.\n"); + Console.ReadKey(); + + //inicializa configuracoes bases (podem ser carregadas novas aqui posteriormente com a opção 99) + _configuracoes = new ConfiguracaoApp(); + + Menu(); + } + + private static async void Menu() + { + while (true) + { + try + { + Console.Clear(); + Console.WriteLine("Escolha uma das opções abaixo:"); + Console.WriteLine("0 - Sair"); + Console.WriteLine("1 - Consulta Status"); + Console.WriteLine("2 - Consulta Cadastro Contribuinte"); + Console.WriteLine("3 - Envia Nfe (assincrono)"); + Console.WriteLine("4 - Listar NSU"); //Util para mostrar as notas emitida contra o CNPJ da empresa + Console.WriteLine("5 - Manifestar ciência da operação"); + Console.WriteLine("6 - Download NFe"); + Console.WriteLine($"98 - Carrega certificado (.pfx) A1"); + Console.WriteLine($"99 - Carrega Configuracoes do arquivo {ArquivoConfiguracao}"); + + string option = Console.ReadLine(); + Console.WriteLine(); + Console.Clear(); + Console.WriteLine("Aguarde... "); + + switch (Convert.ToInt32(option)) + { + case 0: + return; + case 1: + await FuncaoStatusServico(); + break; + case 2: + await FuncaoConsultaCadastroContribuinte(); + break; + case 3: + await FuncaoEnviaNfeAssincrono(); + break; + case 4: + await CarregarNSUs(); + break; + case 5: + await ManifestarCienciaOperacao(); + break; + case 6: + await DownloadXml(); + break; + case 98: + await CarregaDadosCertificado(); + break; + case 99: + await CarregarConfiguracao(); + break; + } + } + catch (Exception e) + { + Console.Clear(); + Console.WriteLine(e); + Console.WriteLine("Digite algo para continuar..."); + Console.ReadKey(); + } + } + } + + private static async Task CarregarConfiguracao() + { + string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + + try + { + _configuracoes = !File.Exists(path + ArquivoConfiguracao) + ? new ConfiguracaoApp() + : FuncoesXml.ArquivoXmlParaClasse(path + ArquivoConfiguracao); + } + catch (Exception ex) + { + throw ex; + } + } + + private static async Task CarregaDadosCertificado() + { + try + { + Console.Clear(); + Console.WriteLine("Escreva o caminho do certificado com a extensão .pfx:"); + string caminho = Console.ReadLine(); + + Console.Clear(); + Console.WriteLine("Escreva a senha do certificado:"); + string password = Console.ReadLine(); + + Console.Clear(); + var cert = CertificadoDigitalUtils.ObterDoCaminho(caminho, password); + _configuracoes.CfgServico.Certificado.Serial = cert.SerialNumber; + Console.WriteLine("Certificado encontrado e carregado..."); + Console.WriteLine("Issuer: " + cert.IssuerName); + Console.WriteLine("Validade: " + cert.GetExpirationDateString()); + Console.WriteLine("\nPressione para voltar.."); + Console.ReadKey(); + } + catch (Exception ex) + { + throw ex; + } + } + + #endregion + + #region Funcoes + + private static async Task FuncaoStatusServico() + { + try + { + #region Status do serviço + using (ServicosNFe servicoNFe = new ServicosNFe(_configuracoes.CfgServico)) + { + var retornoStatus = servicoNFe.NfeStatusServico(); + OnSucessoSync(retornoStatus); + } + #endregion + } + catch (ComunicacaoException ex) + { + throw ex; + } + catch (ValidacaoSchemaException ex) + { + throw ex; + } + catch (Exception ex) + { + throw ex; + } + } + + private static async Task FuncaoConsultaCadastroContribuinte() + { + try + { + #region Consulta Cadastro + + Console.Clear(); + Console.WriteLine("UF do Documento a ser Consultado:"); + string uf = Console.ReadLine(); + if (string.IsNullOrEmpty(uf)) + { + throw new Exception("A UF deve ser informada!"); + } + + if (uf.Length != 2) + { + throw new Exception("UF deve conter 2 caracteres!"); + } + + Console.Clear(); + Console.WriteLine("Tipo de documento a ser consultado: (0 - IE; 1 - CNPJ; 2 - CPF):"); + string tipoDocumento = Console.ReadLine(); + if (string.IsNullOrEmpty(tipoDocumento)) + { + throw new Exception("O Tipo de documento deve ser informado!"); + } + + if (tipoDocumento.Length != 1) + { + throw new Exception("O Tipo de documento deve conter um apenas um número!"); + } + + if (!tipoDocumento.All(char.IsDigit)) + { + throw new Exception("O Tipo de documento deve ser um número inteiro"); + } + + int intTipoDocumento = int.Parse(tipoDocumento); + if (!(intTipoDocumento >= 0 && intTipoDocumento <= 2)) + { + throw new Exception("Tipos válidos: (0 - IE; 1 - CNPJ; 2 - CPF)"); + } + + Console.Clear(); + Console.WriteLine("Documento(IE/CNPJ/CPF):"); + string documento = Console.ReadLine(); + if (string.IsNullOrEmpty(documento)) + { + throw new Exception("O Documento(IE/CNPJ/CPF) deve ser informado!"); + } + + //efetua req de consulta + ServicosNFe servicoNFe = new ServicosNFe(_configuracoes.CfgServico); + var retornoConsulta = servicoNFe.NfeConsultaCadastro(uf, (ConsultaCadastroTipoDocumento)intTipoDocumento, documento); + OnSucessoSync(retornoConsulta); + + #endregion + } + catch (ComunicacaoException ex) + { + throw ex; + } + catch (ValidacaoSchemaException ex) + { + throw ex; + } + catch (Exception ex) + { + throw ex; + } + } + + private static async Task FuncaoEnviaNfeAssincrono() + { + try + { + #region Cria e Envia NFe + + /*var numero = Funcoes.InpuBox(this, "Criar e Enviar NFe", "Número da Nota:"); + if (string.IsNullOrEmpty(numero)) throw new Exception("O Número deve ser informado!"); + + var lote = Funcoes.InpuBox(this, "Criar e Enviar NFe", "Id do Lote:"); + if (string.IsNullOrEmpty(lote)) throw new Exception("A Id do lote deve ser informada!");*/ + + //parametros + string numero = "123"; + string lote = "321"; + var versaoServico = _configuracoes.CfgServico.VersaoNFeAutorizacao; + var modelo = _configuracoes.CfgServico.ModeloDocumento; + + //gera o objeto NFe + var nfe = GetNf(Convert.ToInt32(numero), modelo, versaoServico); + nfe.Assina(); + //apenas para nfce + /*if (nfe.infNFe.ide.mod == ModeloDocumento.NFCe) + { + nfe.infNFeSupl = new infNFeSupl(); + if (versaoServico == VersaoServico.Versao400) + nfe.infNFeSupl.urlChave = nfe.infNFeSupl.ObterUrlConsulta(nfe, _configuracoes.ConfiguracaoDanfeNfce.VersaoQrCode); + nfe.infNFeSupl.qrCode = nfe.infNFeSupl.ObterUrlQrCode(nfe, _configuracoes.ConfiguracaoDanfeNfce.VersaoQrCode, configuracaoCsc.CIdToken, configuracaoCsc.Csc); + }*/ + nfe.Valida(); + + //envia via req + ServicosNFe servicoNFe = new ServicosNFe(_configuracoes.CfgServico); + var retornoEnvio = servicoNFe.NFeAutorizacao(Convert.ToInt32(lote), IndicadorSincronizacao.Assincrono, new List { nfe }, false/*Envia a mensagem compactada para a SEFAZ*/); + + OnSucessoSync(retornoEnvio); + + #endregion + } + catch (ComunicacaoException ex) + { + //Faça o tratamento de contingência OffLine aqui. + throw ex; + } + catch (ValidacaoSchemaException ex) + { + throw ex; + } + catch (Exception ex) + { + throw ex; + } + } + + private static async Task CarregarNSUs() + { + try + { + Console.WriteLine("Informe o ultimo número de NSU que você tem. Se não tiver, informe 0 (zero):"); + string ultimoNsu = Console.ReadLine(); + + Console.WriteLine("Informe a UF do autor"); + string uf = Console.ReadLine(); + + do + { + RetornoNfeDistDFeInt retornoNFeDistDFe = null; + using (var _certificado = CertificadoDigital.ObterCertificado(_configuracoes.CfgServico.Certificado)) + using (var servicoNFe = new ServicosNFe(_configuracoes.CfgServico, _certificado)) + retornoNFeDistDFe = servicoNFe.NfeDistDFeInteresse(ufAutor: _configuracoes.Emitente.enderEmit.UF.ToString(), + documento: _configuracoes.Emitente.CNPJ, + ultNSU: ultimoNsu.ToString()); + + var lote = retornoNFeDistDFe.Retorno.loteDistDFeInt; + if (lote == null || !lote.Any()) + break; + + Console.WriteLine($"{"NSU".PadRight(44, ' ')} | Xml"); + + foreach (var item in lote) + { + string linha = string.Empty; + + string xmlStr = string.Empty; + + if (item.XmlNfe != null) + { + xmlStr = Compressao.Unzip(item.XmlNfe); + + Console.WriteLine($"{item.NSU.ToString().PadRight(44, ' ')} | {xmlStr}"); + } + } + + await Task.Delay(2000); //https://github.com/ZeusAutomacao/DFe.NET/issues/568#issuecomment-339862458 + + } while (true); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + } + + private static async Task ManifestarCienciaOperacao() + { + try + { + Console.WriteLine("Informe a chave da NFe para download:"); + string chave = Console.ReadLine(); + + using (var _certificado = CertificadoDigital.ObterCertificado(_configuracoes.CfgServico.Certificado)) + using (var servicoNFe = new ServicosNFe(_configuracoes.CfgServico, _certificado)) + { + var retornoManifestacao = servicoNFe.RecepcaoEventoManifestacaoDestinatario(idlote: 1, + sequenciaEvento: 1, + chavesNFe: new string[] { chave }, + nFeTipoEventoManifestacaoDestinatario: NFeTipoEvento.TeMdCienciaDaOperacao, + cpfcnpj: _configuracoes.Emitente.CNPJ, + justificativa: null); + + Console.WriteLine($"Retorno da manifestação: {retornoManifestacao.RetornoStr}"); + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + } + + private static async Task DownloadXml() + { + try + { + Console.WriteLine("Informe a chave da NFe para download:"); + string chave = Console.ReadLine(); + + Console.WriteLine("Deseja manifestar a NFe? (S/N)"); + bool manifestar = string.Equals(Console.ReadLine().Trim().ToLower(), "s"); + + + using (var _certificado = CertificadoDigital.ObterCertificado(_configuracoes.CfgServico.Certificado)) + using (var servicoNFe = new ServicosNFe(_configuracoes.CfgServico, _certificado)) + { + if (manifestar) + { + try + { + var retornoManifestacao = servicoNFe.RecepcaoEventoManifestacaoDestinatario(idlote: 1, + sequenciaEvento: 1, + chavesNFe: new string[] { chave }, + nFeTipoEventoManifestacaoDestinatario: NFeTipoEvento.TeMdCienciaDaOperacao, + cpfcnpj: _configuracoes.Emitente.CNPJ, + justificativa: null); + + Console.WriteLine($"Retorno da manifestação: {retornoManifestacao.RetornoStr}"); + } + catch (Exception ex) + { + Console.WriteLine($"Manifestação: {ex.Message}"); + } + } + + var retornoNFeDistDFe = servicoNFe.NfeDistDFeInteresse(ufAutor: _configuracoes.EnderecoEmitente.UF.ToString(), documento: _configuracoes.Emitente.CNPJ, chNFE: chave); + if (retornoNFeDistDFe.Retorno.loteDistDFeInt == null) + { + await Task.Delay(2000); //https://github.com/ZeusAutomacao/DFe.NET/issues/568#issuecomment-339862458 + + retornoNFeDistDFe = servicoNFe.NfeDistDFeInteresse(ufAutor: _configuracoes.EnderecoEmitente.UF.ToString(), documento: _configuracoes.Emitente.CNPJ, chNFE: chave); + + if (retornoNFeDistDFe.Retorno.loteDistDFeInt == null) + throw new Exception(retornoNFeDistDFe.Retorno.xMotivo); + } + + if ((retornoNFeDistDFe.Retorno.loteDistDFeInt.Count()) > 0) + { + var xmlBytes = retornoNFeDistDFe.Retorno.loteDistDFeInt[0].XmlNfe; + string xmlStr = Compressao.Unzip(xmlBytes); + + Console.WriteLine($"Xml: {xmlStr}"); + } + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + } + + #endregion + + #region Funcoes Auxiliares + + private static void OnSucessoSync(RetornoBasico e) + { + Console.Clear(); + if (!string.IsNullOrEmpty(e.EnvioStr)) + { + Console.WriteLine("Xml Envio:"); + Console.WriteLine(FormatXml(e.EnvioStr) + "\n"); + } + + if (!string.IsNullOrEmpty(e.RetornoStr)) + { + Console.WriteLine("Xml Retorno:"); + Console.WriteLine(FormatXml(e.RetornoStr) + "\n"); + } + + if (!string.IsNullOrEmpty(e.RetornoCompletoStr)) + { + Console.WriteLine("Xml Retorno Completo:"); + Console.WriteLine(FormatXml(e.RetornoCompletoStr) + "\n"); + } + Console.ReadKey(); + } + + private static string FormatXml(string xml) + { + try + { + XDocument doc = XDocument.Parse(xml); + return doc.ToString(); + } + catch (Exception) + { + return xml; + } + } + + #endregion + + #region Criar NFe + + private static Classes.NFe GetNf(int numero, ModeloDocumento modelo, VersaoServico versao) + { + Classes.NFe nf = new Classes.NFe { infNFe = GetInf(numero, modelo, versao) }; + return nf; + } + + private static infNFe GetInf(int numero, ModeloDocumento modelo, VersaoServico versao) + { + infNFe infNFe = new infNFe + { + versao = versao.VersaoServicoParaString(), + ide = GetIdentificacao(numero, modelo, versao), + emit = GetEmitente(), + dest = GetDestinatario(versao, modelo), + transp = GetTransporte() + }; + + for (int i = 0; i < 5; i++) + { + infNFe.det.Add(GetDetalhe(i, infNFe.emit.CRT, modelo)); + } + + infNFe.total = GetTotal(versao, infNFe.det); + + if (infNFe.ide.mod == ModeloDocumento.NFe & (versao == VersaoServico.Versao310 || versao == VersaoServico.Versao400)) + { + infNFe.cobr = GetCobranca(infNFe.total.ICMSTot); //V3.00 e 4.00 Somente + } + + if (infNFe.ide.mod == ModeloDocumento.NFCe || (infNFe.ide.mod == ModeloDocumento.NFe & versao == VersaoServico.Versao400)) + { + infNFe.pag = GetPagamento(infNFe.total.ICMSTot, versao); //NFCe Somente + } + + if (infNFe.ide.mod == ModeloDocumento.NFCe & versao != VersaoServico.Versao400) + { + infNFe.infAdic = new infAdic() { infCpl = "Troco: 10,00" }; //Susgestão para impressão do troco em NFCe + } + + return infNFe; + } + + private static ide GetIdentificacao(int numero, ModeloDocumento modelo, VersaoServico versao) + { + ide ide = new ide + { + cUF = _configuracoes.EnderecoEmitente.UF, + natOp = "VENDA", + mod = modelo, + serie = 1, + nNF = numero, + tpNF = TipoNFe.tnSaida, + cMunFG = _configuracoes.EnderecoEmitente.cMun, + tpEmis = _configuracoes.CfgServico.tpEmis, + tpImp = TipoImpressao.tiRetrato, + cNF = "1234", + tpAmb = _configuracoes.CfgServico.tpAmb, + finNFe = FinalidadeNFe.fnNormal, + verProc = "3.000" + }; + + if (ide.tpEmis != TipoEmissao.teNormal) + { + ide.dhCont = DateTime.Now; + ide.xJust = "TESTE DE CONTIGÊNCIA PARA NFe/NFCe"; + } + + #region V2.00 + + if (versao == VersaoServico.Versao200) + { + ide.dEmi = DateTime.Today; //Mude aqui para enviar a nfe vinculada ao EPEC, V2.00 + ide.dSaiEnt = DateTime.Today; + } + + #endregion + + #region V3.00 + + if (versao == VersaoServico.Versao200) + { + return ide; + } + + if (versao == VersaoServico.Versao310) + { + ide.indPag = IndicadorPagamento.ipVista; + } + + + ide.idDest = DestinoOperacao.doInterna; + ide.dhEmi = DateTime.Now; + //Mude aqui para enviar a nfe vinculada ao EPEC, V3.10 + if (ide.mod == ModeloDocumento.NFe) + { + ide.dhSaiEnt = DateTime.Now; + } + else + { + ide.tpImp = TipoImpressao.tiNFCe; + } + + ide.procEmi = ProcessoEmissao.peAplicativoContribuinte; + ide.indFinal = ConsumidorFinal.cfConsumidorFinal; //NFCe: Tem que ser consumidor Final + ide.indPres = PresencaComprador.pcPresencial; //NFCe: deve ser 1 ou 4 + + #endregion + + return ide; + } + + private static emit GetEmitente() + { + var emit = _configuracoes.Emitente; // new emit + //{ + // //CPF = "12345678912", + // CNPJ = "12345678000189", + // xNome = "RAZAO SOCIAL LTDA", + // xFant = "FANTASIA LTRA", + // IE = "123456789", + //}; + emit.enderEmit = GetEnderecoEmitente(); + return emit; + } + + private static enderEmit GetEnderecoEmitente() + { + var enderEmit = _configuracoes.EnderecoEmitente; // new enderEmit + //{ + // xLgr = "RUA TESTE DE ENREREÇO", + // nro = "123", + // xCpl = "1 ANDAR", + // xBairro = "CENTRO", + // cMun = 2802908, + // xMun = "ITABAIANA", + // UF = "SE", + // CEP = 49500000, + // fone = 79123456789 + //}; + enderEmit.cPais = 1058; + enderEmit.xPais = "BRASIL"; + return enderEmit; + } + + private static dest GetDestinatario(VersaoServico versao, ModeloDocumento modelo) + { + dest dest = new dest(versao) + { + CNPJ = "99999999000191", + //CPF = "99999999999", + }; + dest.xNome = "NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"; //Obrigatório para NFe e opcional para NFCe + dest.enderDest = GetEnderecoDestinatario(); //Obrigatório para NFe e opcional para NFCe + + //if (versao == VersaoServico.Versao200) + // dest.IE = "ISENTO"; + if (versao == VersaoServico.Versao200) + { + return dest; + } + + dest.indIEDest = indIEDest.NaoContribuinte; //NFCe: Tem que ser não contribuinte V3.00 Somente + dest.email = "teste@gmail.com"; //V3.00 Somente + return dest; + } + + private static enderDest GetEnderecoDestinatario() + { + enderDest enderDest = new enderDest + { + xLgr = "RUA ...", + nro = "S/N", + xBairro = "CENTRO", + cMun = 2802908, + xMun = "ITABAIANA", + UF = "SE", + CEP = "49500000", + cPais = 1058, + xPais = "BRASIL" + }; + return enderDest; + } + + private static det GetDetalhe(int i, CRT crt, ModeloDocumento modelo) + { + det det = new det + { + nItem = i + 1, + prod = GetProduto(i + 1), + imposto = new imposto + { + vTotTrib = 0.17m, + + ICMS = new ICMS + { + //Se você já tem os dados de toda a tributação persistida no banco em uma única tabela, utilize a linha comentada abaixo para preencher as tags do ICMS + //TipoICMS = ObterIcmsBasico(crt), + + //Caso você resolva utilizar método ObterIcmsBasico(), comente esta proxima linha + TipoICMS = + crt == CRT.SimplesNacional || crt == CRT.SimplesNacionalMei + ? InformarCSOSN(Csosnicms.Csosn102) + : InformarICMS(Csticms.Cst00, VersaoServico.Versao310) + }, + + //ICMSUFDest = new ICMSUFDest() + //{ + // pFCPUFDest = 0, + // pICMSInter = 12, + // pICMSInterPart = 0, + // pICMSUFDest = 0, + // vBCUFDest = 0, + // vFCPUFDest = 0, + // vICMSUFDest = 0, + // vICMSUFRemet = 0 + //}, + + COFINS = new COFINS + { + //Se você já tem os dados de toda a tributação persistida no banco em uma única tabela, utilize a linha comentada abaixo para preencher as tags do COFINS + //TipoCOFINS = ObterCofinsBasico(), + + //Caso você resolva utilizar método ObterCofinsBasico(), comente esta proxima linha + TipoCOFINS = new COFINSOutr { CST = CSTCOFINS.cofins99, pCOFINS = 0, vBC = 0, vCOFINS = 0 } + }, + + PIS = new PIS + { + //Se você já tem os dados de toda a tributação persistida no banco em uma única tabela, utilize a linha comentada abaixo para preencher as tags do PIS + //TipoPIS = ObterPisBasico(), + + //Caso você resolva utilizar método ObterPisBasico(), comente esta proxima linha + TipoPIS = new PISOutr { CST = CSTPIS.pis99, pPIS = 0, vBC = 0, vPIS = 0 } + } + } + }; + + if (modelo == ModeloDocumento.NFe) //NFCe não aceita grupo "IPI" + { + det.imposto.IPI = new IPI() + { + cEnq = 999, + + //Se você já tem os dados de toda a tributação persistida no banco em uma única tabela, utilize a linha comentada abaixo para preencher as tags do IPI + //TipoIPI = ObterIPIBasico(), + + //Caso você resolva utilizar método ObterIPIBasico(), comente esta proxima linha + TipoIPI = new IPITrib() { CST = CSTIPI.ipi00, pIPI = 5, vBC = 1, vIPI = 0.05m } + }; + } + + //det.impostoDevol = new impostoDevol() { IPI = new IPIDevolvido() { vIPIDevol = 10 }, pDevol = 100 }; + + return det; + } + + private static prod GetProduto(int i) + { + prod p = new prod + { + cProd = i.ToString().PadLeft(5, '0'), + cEAN = "7770000000012", + xProd = i == 1 ? "NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL" : "ABRACADEIRA NYLON 6.6 BRANCA 91X92 " + i, + NCM = "84159090", + CFOP = 5102, + uCom = "UNID", + qCom = 1, + vUnCom = 1.1m, + vProd = 1.1m, + vDesc = 0.10m, + cEANTrib = "7770000000012", + uTrib = "UNID", + qTrib = 1, + vUnTrib = 1.1m, + indTot = IndicadorTotal.ValorDoItemCompoeTotalNF, + //NVE = {"AA0001", "AB0002", "AC0002"}, + //CEST = ? + + //ProdutoEspecifico = new arma + //{ + // tpArma = TipoArma.UsoPermitido, + // nSerie = "123456", + // nCano = "123456", + // descr = "TESTE DE ARMA" + //} + }; + return p; + } + + private static ICMSBasico InformarICMS(Csticms CST, VersaoServico versao) + { + ICMS20 icms20 = new ICMS20 + { + orig = OrigemMercadoria.OmNacional, + CST = Csticms.Cst20, + modBC = DeterminacaoBaseIcms.DbiValorOperacao, + vBC = 1.1m, + pICMS = 18, + vICMS = 0.20m, + motDesICMS = MotivoDesoneracaoIcms.MdiTaxi + }; + if (versao == VersaoServico.Versao310) + { + icms20.vICMSDeson = 0.10m; //V3.00 ou maior Somente + } + + switch (CST) + { + case Csticms.Cst00: + return new ICMS00 + { + CST = Csticms.Cst00, + modBC = DeterminacaoBaseIcms.DbiValorOperacao, + orig = OrigemMercadoria.OmNacional, + pICMS = 18, + vBC = 1.1m, + vICMS = 0.20m + }; + case Csticms.Cst20: + return icms20; + //Outros casos aqui + } + + return new ICMS10(); + } + + private static ICMSBasico ObterIcmsBasico(CRT crt) + { + //Leia os dados de seu banco de dados e em seguida alimente o objeto ICMSGeral, como no exemplo abaixo. + ICMSGeral icmsGeral = new ICMSGeral + { + orig = OrigemMercadoria.OmNacional, + CST = Csticms.Cst00, + modBC = DeterminacaoBaseIcms.DbiValorOperacao, + vBC = 1.1m, + pICMS = 18, + vICMS = 0.20m, + motDesICMS = MotivoDesoneracaoIcms.MdiTaxi + }; + return icmsGeral.ObterICMSBasico(crt); + } + + private static PISBasico ObterPisBasico() + { + //Leia os dados de seu banco de dados e em seguida alimente o objeto PISGeral, como no exemplo abaixo. + PISGeral pisGeral = new PISGeral() + { + CST = CSTPIS.pis01, + vBC = 1.1m, + pPIS = 1.65m, + vPIS = 0.01m, + vAliqProd = 0 + }; + + return pisGeral.ObterPISBasico(); + } + + private static COFINSBasico ObterCofinsBasico() + { + //Leia os dados de seu banco de dados e em seguida alimente o objeto COFINSGeral, como no exemplo abaixo. + COFINSGeral cofinsGeral = new COFINSGeral() + { + CST = CSTCOFINS.cofins01, + vBC = 1.1m, + pCOFINS = 1.65m, + vCOFINS = 0.01m, + vAliqProd = 0 + }; + + return cofinsGeral.ObterCOFINSBasico(); + } + + private static IPIBasico ObterIPIBasico() + { + //Leia os dados de seu banco de dados e em seguida alimente o objeto IPIGeral, como no exemplo abaixo. + IPIGeral ipiGeral = new IPIGeral() + { + CST = CSTIPI.ipi01, + vBC = 1.1m, + pIPI = 5m, + vIPI = 0.05m + }; + + return ipiGeral.ObterIPIBasico(); + } + + private static ICMSBasico InformarCSOSN(Csosnicms CST) + { + switch (CST) + { + case Csosnicms.Csosn101: + return new ICMSSN101 + { + CSOSN = Csosnicms.Csosn101, + orig = OrigemMercadoria.OmNacional + }; + case Csosnicms.Csosn102: + return new ICMSSN102 + { + CSOSN = Csosnicms.Csosn102, + orig = OrigemMercadoria.OmNacional + }; + //Outros casos aqui + default: + return new ICMSSN201(); + } + } + + private static total GetTotal(VersaoServico versao, List produtos) + { + ICMSTot icmsTot = new ICMSTot + { + vProd = produtos.Sum(p => p.prod.vProd), + vDesc = produtos.Sum(p => p.prod.vDesc ?? 0), + vTotTrib = produtos.Sum(p => p.imposto.vTotTrib ?? 0), + }; + + if (versao == VersaoServico.Versao310 || versao == VersaoServico.Versao400) + { + icmsTot.vICMSDeson = 0; + } + + if (versao == VersaoServico.Versao400) + { + icmsTot.vFCPUFDest = 0; + icmsTot.vICMSUFDest = 0; + icmsTot.vICMSUFRemet = 0; + icmsTot.vFCP = 0; + icmsTot.vFCPST = 0; + icmsTot.vFCPSTRet = 0; + icmsTot.vIPIDevol = 0; + } + + foreach (var produto in produtos) + { + if (produto.imposto.IPI != null && produto.imposto.IPI.TipoIPI.GetType() == typeof(IPITrib)) + { + icmsTot.vIPI = icmsTot.vIPI + ((IPITrib)produto.imposto.IPI.TipoIPI).vIPI ?? 0; + } + + if (produto.imposto.ICMS.TipoICMS.GetType() == typeof(ICMS00)) + { + icmsTot.vBC = icmsTot.vBC + ((ICMS00)produto.imposto.ICMS.TipoICMS).vBC; + icmsTot.vICMS = icmsTot.vICMS + ((ICMS00)produto.imposto.ICMS.TipoICMS).vICMS; + } + if (produto.imposto.ICMS.TipoICMS.GetType() == typeof(ICMS20)) + { + icmsTot.vBC = icmsTot.vBC + ((ICMS20)produto.imposto.ICMS.TipoICMS).vBC; + icmsTot.vICMS = icmsTot.vICMS + ((ICMS20)produto.imposto.ICMS.TipoICMS).vICMS; + } + //Outros Ifs aqui, caso vá usar as classes ICMS00, ICMS10 para totalizar + } + + //** Regra de validação W16-10 que rege sobre o Total da NF **// + icmsTot.vNF = + icmsTot.vProd + - icmsTot.vDesc + - icmsTot.vICMSDeson.GetValueOrDefault() + + icmsTot.vST + + icmsTot.vFCPST.GetValueOrDefault() + + icmsTot.vFrete + + icmsTot.vSeg + + icmsTot.vOutro + + icmsTot.vII + + icmsTot.vIPI + + icmsTot.vIPIDevol.GetValueOrDefault(); + + total t = new total { ICMSTot = icmsTot }; + return t; + } + + private static transp GetTransporte() + { + //var volumes = new List {GetVolume(), GetVolume()}; + + transp t = new transp + { + modFrete = ModalidadeFrete.mfSemFrete //NFCe: Não pode ter frete + //vol = volumes + }; + + return t; + } + + private static vol GetVolume() + { + vol v = new vol + { + esp = "teste de espécie", + lacres = new List { new lacres { nLacre = "123456" } } + }; + + return v; + } + + private static cobr GetCobranca(ICMSTot icmsTot) + { + decimal valorParcela = (icmsTot.vNF / 2).Arredondar(2); + cobr c = new cobr + { + fat = new fat { nFat = "12345678910", vLiq = icmsTot.vNF, vOrig = icmsTot.vNF, vDesc = 0m }, + dup = new List + { + new dup {nDup = "001", dVenc = DateTime.Now.AddDays(30), vDup = valorParcela}, + new dup {nDup = "002", dVenc = DateTime.Now.AddDays(60), vDup = icmsTot.vNF - valorParcela} + } + }; + + return c; + } + + private static List GetPagamento(ICMSTot icmsTot, VersaoServico versao) + { + decimal valorPagto = (icmsTot.vNF / 2).Arredondar(2); + + if (versao != VersaoServico.Versao400) // difernte de versão 4 retorna isso + { + List p = new List + { + new pag {tPag = FormaPagamento.fpDinheiro, vPag = valorPagto}, + new pag {tPag = FormaPagamento.fpCheque, vPag = icmsTot.vNF - valorPagto} + }; + return p; + } + + + // igual a versão 4 retorna isso + List p4 = new List + { + //new pag {detPag = new detPag {tPag = FormaPagamento.fpDinheiro, vPag = valorPagto}}, + //new pag {detPag = new detPag {tPag = FormaPagamento.fpCheque, vPag = icmsTot.vNF - valorPagto}} + new pag + { + detPag = new List + { + new detPag {tPag = FormaPagamento.fpCreditoEmLoja, vPag = valorPagto}, + new detPag {tPag = FormaPagamento.fpCreditoEmLoja, vPag = icmsTot.vNF - valorPagto} + } + } + }; + + + return p4; + } + + + #endregion + } +} diff --git a/NFe.AppTeste.NetCore/Properties/Resources.Designer.cs b/NFe.AppTeste.NetCore/Properties/Resources.Designer.cs new file mode 100644 index 000000000..37fb9db42 --- /dev/null +++ b/NFe.AppTeste.NetCore/Properties/Resources.Designer.cs @@ -0,0 +1,82 @@ +//------------------------------------------------------------------------------ +// +// O código foi gerado por uma ferramenta. +// Versão de Tempo de Execução:4.0.30319.42000 +// +// As alterações ao arquivo poderão causar comportamento incorreto e serão perdidas se +// o código for gerado novamente. +// +//------------------------------------------------------------------------------ + +namespace NFe.AppTeste.NetCore.Properties { + using System; + + + /// + /// Uma classe de recurso de tipo de alta segurança, para pesquisar cadeias de caracteres localizadas etc. + /// + // Essa classe foi gerada automaticamente pela classe StronglyTypedResourceBuilder + // através de uma ferramenta como ResGen ou Visual Studio. + // Para adicionar ou remover um associado, edite o arquivo .ResX e execute ResGen novamente + // com a opção /str, ou recrie o projeto do VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Retorna a instância de ResourceManager armazenada em cache usada por essa classe. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("NFe.AppTeste.NetCore.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Substitui a propriedade CurrentUICulture do thread atual para todas as + /// pesquisas de recursos que usam essa classe de recurso de tipo de alta segurança. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Consulta uma cadeia de caracteres localizada semelhante a <html> + ///<h1>Nota Fiscal Eletrônica</h1> + ///<h2>Prezado Cliente,</h2> + ///<p>Segue anexo a Nota Fiscal eletrônica (xml e pdf), conforme pedido número 1234.</p> + ///<p> + ///<b>Chave de acesso:</b> 0123 4567 8901 2345 6789 0123 4567 8901 2345 6789 0123 + ///<br><b>Número:</b> 000123456 + ///<br><b>Valor Total:</b> 1.234,56 + ///</p> + ///<p>Consulte a autencidade de sua NFe acessando <a href="http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=">Consulta NFe Completa</a> </p> + ///ZEUS Automação [o restante da cadeia de caracteres foi truncado]";. + /// + internal static string MensagemHtml { + get { + return ResourceManager.GetString("MensagemHtml", resourceCulture); + } + } + } +} diff --git a/NFe.AppTeste.NetCore/Properties/Resources.resx b/NFe.AppTeste.NetCore/Properties/Resources.resx new file mode 100644 index 000000000..e80171c29 --- /dev/null +++ b/NFe.AppTeste.NetCore/Properties/Resources.resx @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + <html> +<h1>Nota Fiscal Eletrônica</h1> +<h2>Prezado Cliente,</h2> +<p>Segue anexo a Nota Fiscal eletrônica (xml e pdf), conforme pedido número 1234.</p> +<p> +<b>Chave de acesso:</b> 0123 4567 8901 2345 6789 0123 4567 8901 2345 6789 0123 +<br><b>Número:</b> 000123456 +<br><b>Valor Total:</b> 1.234,56 +</p> +<p>Consulte a autencidade de sua NFe acessando <a href="http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=">Consulta NFe Completa</a> </p> +ZEUS Automação +</html> + + \ No newline at end of file diff --git a/NFe.AppTeste/ConfiguracaoApp.cs b/NFe.AppTeste/ConfiguracaoApp.cs index f7ba3b3da..4871a1505 100644 --- a/NFe.AppTeste/ConfiguracaoApp.cs +++ b/NFe.AppTeste/ConfiguracaoApp.cs @@ -33,6 +33,7 @@ using System; using System.IO; using System.Net; +using DFe.Classes.Flags; using DFe.Utils; using NFe.AppTeste.Properties; using NFe.Classes.Informacoes.Emitente; @@ -51,7 +52,7 @@ public class ConfiguracaoApp public ConfiguracaoApp() { CfgServico = ConfiguracaoServico.Instancia; - CfgServico.tpAmb = TipoAmbiente.taHomologacao; + CfgServico.tpAmb = TipoAmbiente.Homologacao; CfgServico.tpEmis = TipoEmissao.teNormal; CfgServico.ProtocoloDeSeguranca = ServicePointManager.SecurityProtocol; Emitente = new emit {CPF = "", CRT = CRT.SimplesNacional}; @@ -59,6 +60,7 @@ public ConfiguracaoApp() ConfiguracaoEmail = new ConfiguracaoEmail("email@dominio.com", "senha", "Envio de NFE", Resources.MensagemHtml, "smtp.dominio.com", 587, true, true); ConfiguracaoCsc = new ConfiguracaoCsc("000001", ""); ConfiguracaoDanfeNfce = new ConfiguracaoDanfeNfce(NfceDetalheVendaNormal.UmaLinha, NfceDetalheVendaContigencia.UmaLinha); + // todo ConfiguracaoUrls.FactoryUrl = FactoryUrlCearaMudanca.CriaFactoryUrl(); } public ConfiguracaoServico CfgServico @@ -81,6 +83,8 @@ public ConfiguracaoServico CfgServico public ConfiguracaoCsc ConfiguracaoCsc { get; set; } public ConfiguracaoDanfeNfce ConfiguracaoDanfeNfce { get; set; } + public bool EnviarTributacaoIbsCbsIs { get; set; } + /// /// Salva os dados de CfgServico em um arquivo XML /// diff --git a/NFe.AppTeste/EnumBooleanConverter.cs b/NFe.AppTeste/Conversores/EnumBooleanConverter.cs similarity index 98% rename from NFe.AppTeste/EnumBooleanConverter.cs rename to NFe.AppTeste/Conversores/EnumBooleanConverter.cs index 0cea638b6..da6372959 100644 --- a/NFe.AppTeste/EnumBooleanConverter.cs +++ b/NFe.AppTeste/Conversores/EnumBooleanConverter.cs @@ -30,11 +30,12 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Globalization; using System.Windows.Data; -namespace NFe.AppTeste +namespace NFe.AppTeste.Conversores { public class EnumBooleanConverter : IValueConverter { diff --git a/NFe.AppTeste/EnumParaBool.cs b/NFe.AppTeste/Conversores/EnumParaBool.cs similarity index 98% rename from NFe.AppTeste/EnumParaBool.cs rename to NFe.AppTeste/Conversores/EnumParaBool.cs index c4d245101..f4e9045c4 100644 --- a/NFe.AppTeste/EnumParaBool.cs +++ b/NFe.AppTeste/Conversores/EnumParaBool.cs @@ -30,11 +30,12 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Globalization; using System.Windows.Data; -namespace NFe.AppTeste +namespace NFe.AppTeste.Conversores { public class EnumParaBool : IValueConverter { diff --git a/NFe.AppTeste/EnumParaInteger.cs b/NFe.AppTeste/Conversores/EnumParaInteger.cs similarity index 96% rename from NFe.AppTeste/EnumParaInteger.cs rename to NFe.AppTeste/Conversores/EnumParaInteger.cs index 921ba3aa6..2dd1d63d6 100644 --- a/NFe.AppTeste/EnumParaInteger.cs +++ b/NFe.AppTeste/Conversores/EnumParaInteger.cs @@ -2,7 +2,7 @@ using System.Globalization; using System.Windows.Data; -namespace NFe.AppTeste +namespace NFe.AppTeste.Conversores { public class EnumParaInteger : IValueConverter { diff --git a/NFe.AppTeste/Conversores/EnumParaString.cs b/NFe.AppTeste/Conversores/EnumParaString.cs new file mode 100644 index 000000000..cf8f7d1ab --- /dev/null +++ b/NFe.AppTeste/Conversores/EnumParaString.cs @@ -0,0 +1,30 @@ +using System; +using System.Globalization; +using System.Windows.Data; + +namespace NFe.AppTeste.Conversores +{ + public class EnumParaString : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value == null) throw new ArgumentNullException(); + + try + { + var enumString = Enum.GetName((value.GetType()), value); + return enumString; + } + catch + { + return string.Empty; + } + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value == null) throw new ArgumentNullException(); + return Enum.Parse(targetType, value.ToString(), true); + } + } +} diff --git a/NFe.AppTeste/Conversores/InverterBooleanConverter.cs b/NFe.AppTeste/Conversores/InverterBooleanConverter.cs new file mode 100644 index 000000000..7889de98b --- /dev/null +++ b/NFe.AppTeste/Conversores/InverterBooleanConverter.cs @@ -0,0 +1,17 @@ +using System; +using System.Windows.Data; + +namespace NFe.AppTeste.Conversores +{ + public class InverterBooleanConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + return value != null && !(bool)value; + } + public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + return value != null && !(bool)value; + } + } +} diff --git a/NFe.AppTeste/InputBoxWindow.xaml.cs b/NFe.AppTeste/InputBoxWindow.xaml.cs index 54546df1a..ea8bf5bf3 100644 --- a/NFe.AppTeste/InputBoxWindow.xaml.cs +++ b/NFe.AppTeste/InputBoxWindow.xaml.cs @@ -30,7 +30,6 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using System; using System.Windows; using System.Windows.Input; diff --git a/NFe.AppTeste/MainWindow.xaml b/NFe.AppTeste/MainWindow.xaml index b87d20b13..b7811b2dd 100644 --- a/NFe.AppTeste/MainWindow.xaml +++ b/NFe.AppTeste/MainWindow.xaml @@ -1,63 +1,59 @@  + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> - - - + + + + + + + + + + + - - - - - - - - - + + - - - - - - - - + - + @@ -66,98 +62,166 @@ - - - + + + + + + + diff --git a/NFe.Danfe.App.Teste.Html/MainWindow.xaml.cs b/NFe.Danfe.App.Teste.Html/MainWindow.xaml.cs new file mode 100644 index 000000000..7c6943721 --- /dev/null +++ b/NFe.Danfe.App.Teste.Html/MainWindow.xaml.cs @@ -0,0 +1,69 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Reflection; +using System.Windows; +using DFe.Classes.Flags; +using NFe.Classes; +using NFe.Danfe.Html; +using NFe.Danfe.Html.CrossCutting; +using NFe.Danfe.Html.Dominio; +using NFe.Danfe.Html.Interfaces; +using NFe.Utils.NFe; + +namespace NFe.Danfe.App.Teste.Html +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window + { + public MainWindow() + { + InitializeComponent(); + } + + + + private void DanfeA4_Click(object sender, RoutedEventArgs e) + { + try + { + var arquivoXml = Funcoes.BuscarArquivoXml(); + if (string.IsNullOrEmpty(arquivoXml)) + return; + + nfeProc proc = null; + + try + { + proc = new nfeProc().CarregarDeArquivoXml(arquivoXml); + } + catch //Carregar NFe ainda não transmitida à sefaz, como uma pré-visualização. + { + proc = new nfeProc() { NFe = new Classes.NFe().CarregarDeArquivoXml(arquivoXml), protNFe = new Classes.Protocolo.protNFe() }; + } + + if (proc.NFe.infNFe.ide.mod != ModeloDocumento.NFe) + throw new Exception("O XML informado não é um NFe!"); + + var danfe = new DanfeNFe(proc.NFe, Status.Autorizada, "55512121121211", "Emissor Fiscal DSBR Brasil - www.dsbrbrasil.com.br"); + IDanfeHtml2 d1 = new DanfeNfeHtml2(danfe); + var doc = d1.ObterDocHtmlAsync().Result; + + var nomeArquivo = $"danfe-{proc.NFe.infNFe.Id}.html"; + var dir = AppDomain.CurrentDomain.BaseDirectory; + + var caminhoCompleto = Path.Combine(dir, nomeArquivo); + + File.WriteAllText(caminhoCompleto, doc.Html); + Process.Start(caminhoCompleto); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.Message)) + Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK); + } + } + } +} diff --git a/NFe.Danfe.App.Teste.Html/NFe.Danfe.App.Teste.Html.csproj b/NFe.Danfe.App.Teste.Html/NFe.Danfe.App.Teste.Html.csproj new file mode 100644 index 000000000..e2d7fa06c --- /dev/null +++ b/NFe.Danfe.App.Teste.Html/NFe.Danfe.App.Teste.Html.csproj @@ -0,0 +1,18 @@ + + + + WinExe + net6.0-windows + enable + true + + + + + + + + + + + diff --git a/NFe.Danfe.AppTeste/App.xaml b/NFe.Danfe.AppTeste.Fast/App.xaml similarity index 100% rename from NFe.Danfe.AppTeste/App.xaml rename to NFe.Danfe.AppTeste.Fast/App.xaml diff --git a/NFe.Danfe.AppTeste/App.xaml.cs b/NFe.Danfe.AppTeste.Fast/App.xaml.cs similarity index 100% rename from NFe.Danfe.AppTeste/App.xaml.cs rename to NFe.Danfe.AppTeste.Fast/App.xaml.cs diff --git a/NFe.Danfe.AppTeste.Fast/ConfiguracaoApp.cs b/NFe.Danfe.AppTeste.Fast/ConfiguracaoApp.cs new file mode 100644 index 000000000..92eed01d0 --- /dev/null +++ b/NFe.Danfe.AppTeste.Fast/ConfiguracaoApp.cs @@ -0,0 +1,81 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.IO; +using DFe.Utils; +using NFe.Danfe.Base; +using NFe.Danfe.Base.NFCe; +using NFe.Danfe.Base.NFe; + +namespace NFe.Danfe.AppTeste +{ + public class ConfiguracaoApp + { + public ConfiguracaoApp() + { + ConfiguracaoDanfeNfce = new ConfiguracaoDanfeNfce(NfceDetalheVendaNormal.UmaLinha, NfceDetalheVendaContigencia.UmaLinha); + + ConfiguracaoDanfeNfe = new ConfiguracaoDanfeNfe(); + } + + public ConfiguracaoDanfeNfce ConfiguracaoDanfeNfce { get; set; } + + public ConfiguracaoDanfeNfe ConfiguracaoDanfeNfe { get; set; } + + + /// + /// Identificador do CSC – Código de Segurança do Contribuinte no Banco de Dados da SEFAZ + /// + public string CIdToken { get; set; } + + /// + /// Código de Segurança do Contribuinte(antigo Token) + /// + public string Csc { get; set; } + + /// + /// Salva os dados de CfgServico em um arquivo XML + /// + /// Arquivo XML onde será salvo os dados + public void SalvarParaAqruivo(string arquivo) + { + var dir = Path.GetDirectoryName(arquivo); + if (dir != null && !Directory.Exists(dir)) + { + throw new DirectoryNotFoundException("Diretório " + dir + " não encontrado!"); + } + + FuncoesXml.ClasseParaArquivoXml(this, arquivo); + } + } +} \ No newline at end of file diff --git a/NFe.Danfe.AppTeste/EnumParaBool.cs b/NFe.Danfe.AppTeste.Fast/EnumParaBool.cs similarity index 100% rename from NFe.Danfe.AppTeste/EnumParaBool.cs rename to NFe.Danfe.AppTeste.Fast/EnumParaBool.cs diff --git a/NFe.Danfe.AppTeste/Funcoes.cs b/NFe.Danfe.AppTeste.Fast/Funcoes.cs similarity index 100% rename from NFe.Danfe.AppTeste/Funcoes.cs rename to NFe.Danfe.AppTeste.Fast/Funcoes.cs diff --git a/NFe.Danfe.AppTeste.Fast/MainWindow.xaml b/NFe.Danfe.AppTeste.Fast/MainWindow.xaml new file mode 100644 index 000000000..cbd75fdf1 --- /dev/null +++ b/NFe.Danfe.AppTeste.Fast/MainWindow.xaml @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NFe.Danfe.AppTeste.PdfClown/MainWindow.xaml.cs b/NFe.Danfe.AppTeste.PdfClown/MainWindow.xaml.cs new file mode 100644 index 000000000..77e82fc8d --- /dev/null +++ b/NFe.Danfe.AppTeste.PdfClown/MainWindow.xaml.cs @@ -0,0 +1,177 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using Microsoft.Win32; +using NFe.Danfe.PdfClown; +using NFe.Danfe.PdfClown.Modelo; +using System.Diagnostics; +using System.IO; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media.Imaging; + +namespace NFe.Danfe.AppTeste.PdfClown +{ + public partial class MainWindow : Window + { + private byte[]? _logoMarcaBytes; + + public MainWindow() + { + InitializeComponent(); + } + + private void BtnCarregarLogo_Click(object sender, RoutedEventArgs e) + { + var caminhoImagem = SelecionarImagem(); + if (string.IsNullOrEmpty(caminhoImagem)) + return; + + try + { + var bitmap = CarregarImagem(caminhoImagem); + LogoEmitente.Source = bitmap; + _logoMarcaBytes = ConverterParaJpegBytes(bitmap); + } + catch (Exception ex) + { + MessageBox.Show($"Erro ao carregar logomarca: {ex.Message}", "Erro", MessageBoxButton.OK, MessageBoxImage.Error); + } + } + + private void BtnRemoverLogo_Click(object sender, RoutedEventArgs e) + { + _logoMarcaBytes = null; + LogoEmitente.Source = null; + } + + private void Btn_GerarDanfe_Click(object sender, RoutedEventArgs e) + { + var caminhoXml = SelecionarXml(); + if (string.IsNullOrEmpty(caminhoXml)) + return; + + try + { + var xml = File.ReadAllText(caminhoXml); + var pdfBytes = GerarDanfeZion(xml, _logoMarcaBytes); + AbrirPdfTemporario(pdfBytes); + } + catch (Exception ex) + { + MessageBox.Show($"Erro ao gerar DANFE: {ex.Message}", "Erro", MessageBoxButton.OK, MessageBoxImage.Error); + } + } + + private static string? SelecionarImagem() + { + var dialog = new OpenFileDialog + { + Filter = "Imagens (*.png;*.jpg;*.jpeg)|*.png;*.jpg;*.jpeg", + Title = "Selecione uma imagem para a logomarca" + }; + + var result = dialog.ShowDialog() == true ? dialog.FileName : null; + return result; + } + + private static string? SelecionarXml() + { + var dialog = new OpenFileDialog + { + Filter = "Arquivos XML (*.xml)|*.xml", + Title = "Selecione o XML da NF-e" + }; + + return dialog.ShowDialog() == true ? dialog.FileName : null; + } + + private static BitmapImage CarregarImagem(string caminho) + { + var bitmap = new BitmapImage(); + bitmap.BeginInit(); + bitmap.CacheOption = BitmapCacheOption.OnLoad; + bitmap.UriSource = new Uri(caminho); + bitmap.EndInit(); + return bitmap; + } + + private static byte[] ConverterParaJpegBytes(BitmapImage bitmap) + { + var imageControl = new Image + { + Source = bitmap, + Width = bitmap.PixelWidth, + Height = bitmap.PixelHeight + }; + + imageControl.Measure(new Size(bitmap.PixelWidth, bitmap.PixelHeight)); + imageControl.Arrange(new Rect(new Size(bitmap.PixelWidth, bitmap.PixelHeight))); + + var render = new RenderTargetBitmap(bitmap.PixelWidth, bitmap.PixelHeight, 96, 96, System.Windows.Media.PixelFormats.Pbgra32); + render.Render(imageControl); + + var encoder = new JpegBitmapEncoder { QualityLevel = 100 }; + encoder.Frames.Add(BitmapFrame.Create(render)); + + using var stream = new MemoryStream(); + encoder.Save(stream); + return stream.ToArray(); + } + + private static byte[] GerarDanfeZion(string xmlNfeProc, byte[]? logoMarca) + { + xmlNfeProc = xmlNfeProc.Replace("\u00a0", " "); + var model = DanfeViewModelCreator.CriarDeStringXml(xmlNfeProc); + + using var pdfStream = new MemoryStream(); + using var danfe = new DanfeDoc(model); + + if (logoMarca != null) + { + using var logo = new MemoryStream(logoMarca); + danfe.AdicionarLogoImagem(logo); + } + + danfe.Gerar(); + return danfe.ObterPdfBytes(pdfStream); + } + + private static void AbrirPdfTemporario(byte[] pdfBytes) + { + var caminhoTemporario = Path.Combine(Path.GetTempPath(), "danfe-nfe.pdf"); + File.WriteAllBytes(caminhoTemporario, pdfBytes); + Process.Start(new ProcessStartInfo(caminhoTemporario) { UseShellExecute = true }); + } + } +} diff --git a/NFe.Danfe.AppTeste.PdfClown/NFe.Danfe.AppTeste.PdfClown.csproj b/NFe.Danfe.AppTeste.PdfClown/NFe.Danfe.AppTeste.PdfClown.csproj new file mode 100644 index 000000000..6c8ded751 --- /dev/null +++ b/NFe.Danfe.AppTeste.PdfClown/NFe.Danfe.AppTeste.PdfClown.csproj @@ -0,0 +1,15 @@ + + + + WinExe + net6.0-windows + enable + enable + true + + + + + + + diff --git a/NFe.Danfe.AppTeste.QuestPdf/App.xaml b/NFe.Danfe.AppTeste.QuestPdf/App.xaml new file mode 100644 index 000000000..a87bffca9 --- /dev/null +++ b/NFe.Danfe.AppTeste.QuestPdf/App.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/NFe.Danfe.AppTeste.QuestPdf/App.xaml.cs b/NFe.Danfe.AppTeste.QuestPdf/App.xaml.cs new file mode 100644 index 000000000..adda853a1 --- /dev/null +++ b/NFe.Danfe.AppTeste.QuestPdf/App.xaml.cs @@ -0,0 +1,44 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.Windows; + +namespace NFe.Danfe.AppTeste.QuestPdf; + +/// +/// Interaction logic for App.xaml +/// +public partial class App : Application +{ +} + diff --git a/NFe.Danfe.AppTeste.QuestPdf/AssemblyInfo.cs b/NFe.Danfe.AppTeste.QuestPdf/AssemblyInfo.cs new file mode 100644 index 000000000..cc29e7f74 --- /dev/null +++ b/NFe.Danfe.AppTeste.QuestPdf/AssemblyInfo.cs @@ -0,0 +1,10 @@ +using System.Windows; + +[assembly:ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] diff --git a/NFe.Danfe.AppTeste.QuestPdf/MainWindow.xaml b/NFe.Danfe.AppTeste.QuestPdf/MainWindow.xaml new file mode 100644 index 000000000..50c1b71b8 --- /dev/null +++ b/NFe.Danfe.AppTeste.QuestPdf/MainWindow.xaml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NFe.Danfe.AppTeste.QuestPdf/MainWindow.xaml.cs b/NFe.Danfe.AppTeste.QuestPdf/MainWindow.xaml.cs new file mode 100644 index 000000000..c82ffc1d0 --- /dev/null +++ b/NFe.Danfe.AppTeste.QuestPdf/MainWindow.xaml.cs @@ -0,0 +1,165 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ +/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ +/* */ +/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using Microsoft.Win32; +using NFe.Danfe.QuestPdf.ImpressaoNfce; +using QuestPDF.Fluent; +using QuestPDF.Infrastructure; +using System.IO; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media.Imaging; + +namespace NFe.Danfe.AppTeste.QuestPdf +{ + public partial class MainWindow : Window + { + private byte[]? _logoMarcaBytes; + + public MainWindow() + { + InitializeComponent(); + QuestPDF.Settings.License = LicenseType.Community; + } + + private void Button_GerarDanfe_Click(object sender, RoutedEventArgs e) + { + var caminhoXml = SelecionarArquivoXml(); + if (string.IsNullOrEmpty(caminhoXml)) + return; + + var tamanho = ObterTamanhoImpressaoSelecionado(); + if (tamanho == null) + { + MessageBox.Show("Selecione um tamanho de impressão válido.", "Aviso", MessageBoxButton.OK, MessageBoxImage.Warning); + return; + } + + try + { + GerarDanfeNfce(caminhoXml, tamanho.Value); + } + catch (Exception ex) + { + MessageBox.Show($"Erro ao gerar DANFE NFC-e: {ex.Message}", "Erro", MessageBoxButton.OK, MessageBoxImage.Error); + } + } + + private void BtnCarregarLogo_Click(object sender, RoutedEventArgs e) + { + var caminhoImagem = SelecionarImagem(); + if (string.IsNullOrEmpty(caminhoImagem)) + return; + + try + { + var bitmap = CarregarImagem(caminhoImagem); + LogoEmitente.Source = bitmap; + _logoMarcaBytes = ConverterParaPngBytes(bitmap); + } + catch (Exception ex) + { + MessageBox.Show($"Erro ao carregar logomarca: {ex.Message}", "Erro", MessageBoxButton.OK, MessageBoxImage.Error); + } + } + + private void BtnRemoverLogo_Click(object sender, RoutedEventArgs e) + { + _logoMarcaBytes = null; + LogoEmitente.Source = null; + } + + private static string? SelecionarArquivoXml() + { + var dialog = new OpenFileDialog + { + Filter = "Arquivos XML (*.xml)|*.xml", + Title = "Selecione um arquivo XML da NFC-e" + }; + + var result = dialog.ShowDialog() == true ? dialog.FileName : null; + return result; + } + + private static string? SelecionarImagem() + { + var dialog = new OpenFileDialog + { + Filter = "Imagens (*.png;*.jpg;*.jpeg)|*.png;*.jpg;*.jpeg", + Title = "Selecione uma imagem para a logomarca" + }; + + return dialog.ShowDialog() == true ? dialog.FileName : null; + } + + private static BitmapImage CarregarImagem(string caminho) + { + var bitmap = new BitmapImage(); + bitmap.BeginInit(); + bitmap.CacheOption = BitmapCacheOption.OnLoad; + bitmap.UriSource = new Uri(caminho); + bitmap.EndInit(); + return bitmap; + } + + private static byte[] ConverterParaPngBytes(BitmapImage bitmap) + { + var encoder = new PngBitmapEncoder(); + encoder.Frames.Add(BitmapFrame.Create(bitmap)); + + using var stream = new MemoryStream(); + encoder.Save(stream); + return stream.ToArray(); + } + + private TamanhoImpressao? ObterTamanhoImpressaoSelecionado() + { + var selectedItem = ComboBox_TamanhoImpressao.SelectedItem as ComboBoxItem; + var tagValue = selectedItem?.Tag?.ToString(); + + if (int.TryParse(tagValue, out int enumValue)) + return (TamanhoImpressao)enumValue; + + return null; + } + + private void GerarDanfeNfce(string caminhoXml, TamanhoImpressao tamanho) + { + var xml = File.ReadAllText(caminhoXml); + + var documento = new DanfeNfceDocument(xml, _logoMarcaBytes); + documento.TamanhoImpressao(tamanho); + documento.GeneratePdfAndShow(); + } + } +} diff --git a/NFe.Danfe.AppTeste.QuestPdf/NFe.Danfe.AppTeste.QuestPdf.csproj b/NFe.Danfe.AppTeste.QuestPdf/NFe.Danfe.AppTeste.QuestPdf.csproj new file mode 100644 index 000000000..c0381140e --- /dev/null +++ b/NFe.Danfe.AppTeste.QuestPdf/NFe.Danfe.AppTeste.QuestPdf.csproj @@ -0,0 +1,15 @@ + + + + WinExe + net6.0-windows + enable + enable + true + + + + + + + diff --git a/NFe.Danfe.AppTeste/ConfiguracaoApp.cs b/NFe.Danfe.AppTeste/ConfiguracaoApp.cs deleted file mode 100644 index 4d3637021..000000000 --- a/NFe.Danfe.AppTeste/ConfiguracaoApp.cs +++ /dev/null @@ -1,76 +0,0 @@ -/********************************************************************************/ -/* Projeto: Biblioteca ZeusNFe */ -/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ -/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ -/* */ -/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ -/* Zeusdev Tecnologia LTDA ME */ -/* */ -/* Você pode obter a última versão desse arquivo no GitHub */ -/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ -/* */ -/* */ -/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ -/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ -/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ -/* qualquer versão posterior. */ -/* */ -/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ -/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ -/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ -/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ -/* */ -/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ -/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ -/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ -/* Você também pode obter uma copia da licença em: */ -/* http://www.opensource.org/licenses/lgpl-license.php */ -/* */ -/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ -/* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ -/********************************************************************************/ - -using System.IO; -using DFe.Utils; -using NFe.Danfe.Base; -using NFe.Danfe.Base.NFCe; - -namespace NFe.Danfe.AppTeste -{ - public class ConfiguracaoApp - { - public ConfiguracaoApp() - { - ConfiguracaoDanfeNfce = new ConfiguracaoDanfeNfce(NfceDetalheVendaNormal.UmaLinha, NfceDetalheVendaContigencia.UmaLinha); - } - - public ConfiguracaoDanfeNfce ConfiguracaoDanfeNfce { get; set; } - - - /// - /// Identificador do CSC – Código de Segurança do Contribuinte no Banco de Dados da SEFAZ - /// - public string CIdToken { get; set; } - - /// - /// Código de Segurança do Contribuinte(antigo Token) - /// - public string Csc { get; set; } - - /// - /// Salva os dados de CfgServico em um arquivo XML - /// - /// Arquivo XML onde será salvo os dados - public void SalvarParaAqruivo(string arquivo) - { - var dir = Path.GetDirectoryName(arquivo); - if (dir != null && !Directory.Exists(dir)) - { - throw new DirectoryNotFoundException("Diretório " + dir + " não encontrado!"); - } - - FuncoesXml.ClasseParaArquivoXml(this, arquivo); - } - } -} \ No newline at end of file diff --git a/NFe.Danfe.AppTeste/MainWindow.xaml b/NFe.Danfe.AppTeste/MainWindow.xaml deleted file mode 100644 index c45305358..000000000 --- a/NFe.Danfe.AppTeste/MainWindow.xaml +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -