From f8441820853e920563937df9a431382a3289623f Mon Sep 17 00:00:00 2001 From: leandro_ssilva Date: Wed, 6 Dec 2017 19:30:35 -0200 Subject: [PATCH 1/2] fix pdf convert on product invoice --- DanfeSharp/Graphics/Gfx.cs | 18 ++++++++-------- DanfeSharp/Modelo/DanfeViewModel.cs | 24 +++++++++++++++++++--- DanfeSharp/Modelo/DanfeViewModelCreator.cs | 8 ++++---- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/DanfeSharp/Graphics/Gfx.cs b/DanfeSharp/Graphics/Gfx.cs index 64422e87..27cb0a5b 100644 --- a/DanfeSharp/Graphics/Gfx.cs +++ b/DanfeSharp/Graphics/Gfx.cs @@ -7,14 +7,14 @@ namespace DanfeSharp.Graphics { - internal class Gfx + internal class Gfx { public PrimitiveComposer PrimitiveComposer { get; private set; } public Gfx(PrimitiveComposer primitiveComposer) { - PrimitiveComposer = primitiveComposer ?? throw new ArgumentNullException(nameof(primitiveComposer)); - } + PrimitiveComposer = primitiveComposer ?? throw new ArgumentNullException(nameof(primitiveComposer)); + } internal void DrawString(string str, RectangleF rect, Fonte fonte, AlinhamentoHorizontal ah = AlinhamentoHorizontal.Esquerda, AlinhamentoVertical av = AlinhamentoVertical.Topo) { @@ -27,7 +27,7 @@ internal void DrawString(string str, RectangleF rect, Fonte fonte, AlinhamentoHo if (av == AlinhamentoVertical.Base) p.Y = rect.Bottom - fonte.AlturaLinha; else if (av == AlinhamentoVertical.Centro) - p.Y += (rect.Height - fonte.AlturaLinha) / 2F ; + p.Y += (rect.Height - fonte.AlturaLinha) / 2F; if (ah == AlinhamentoHorizontal.Direita) p.X = rect.Right - fonte.MedirLarguraTexto(str); @@ -50,7 +50,7 @@ public void SetFont(Fonte fonte) public String ClearNonPrintableCharacters(String text) { var result = new string(text.Where(c => - !((int)c < 31 || ((int)c >= 127 && (int)c <= 160)) + !((int)c == 173 || (int)c < 31 || ((int)c >= 127 && (int)c <= 160)) ).ToArray()); return result; @@ -72,12 +72,12 @@ public void ShowXObject(XObject xobj, RectangleF r) SizeF s = new SizeF(); SizeF xs = xobj.Size.ToMm(); - if(r.Height >= r.Width) + if (r.Height >= r.Width) { - if(xs.Height >= xs.Width) + if (xs.Height >= xs.Width) { s.Height = r.Height; - s.Width = (s.Height * xs.Width) / xs.Height; + s.Width = (s.Height * xs.Width) / xs.Height; } else { @@ -141,4 +141,4 @@ private void CheckPoint(PointF p) } -} +} \ No newline at end of file diff --git a/DanfeSharp/Modelo/DanfeViewModel.cs b/DanfeSharp/Modelo/DanfeViewModel.cs index 7255ed50..5c078fd7 100644 --- a/DanfeSharp/Modelo/DanfeViewModel.cs +++ b/DanfeSharp/Modelo/DanfeViewModel.cs @@ -128,12 +128,12 @@ public float Margem /// /// Data e Hora da entrada em contingência - dhCont /// - public DateTimeOffset? DataHoraContingencia { get;set; } + public DateTimeOffset? DataHoraContingencia { get; set; } /// /// Justificativa da entrada em contingência - xJust /// - public String MotivoContingencia { get;set; } + public String MotivoContingencia { get; set; } /// /// Tipo Emissao @@ -287,6 +287,24 @@ public virtual String TextoReservadoFisco() sb.AppendChaveValor("Justificativa", MotivoContingencia); // just } + // 6 = Contingência SVC-AN + else if (TipoEmissao == 6) + { + sb.Append("CONTINGÊNCIA SVC-AN"); + + sb.AppendChaveValor("Entrada em contingência", DataHoraContingencia.Value.ToString("yyyy-MM-ddThh:mm:sszzz")); // data hora + + sb.AppendChaveValor("Justificativa", MotivoContingencia); // just + } + // 7 = Contingência SVC-RS + else if (TipoEmissao == 7) + { + sb.Append("CONTINGÊNCIA SVC-RS"); + + sb.AppendChaveValor("Entrada em contingência", DataHoraContingencia.Value.ToString("yyyy-MM-ddThh:mm:sszzz")); // data hora + + sb.AppendChaveValor("Justificativa", MotivoContingencia); // just + } return sb.ToString(); } @@ -345,4 +363,4 @@ public virtual String TextoAdicional() public Boolean IsPaisagem => Orientacao == Orientacao.Paisagem; } -} +} \ No newline at end of file diff --git a/DanfeSharp/Modelo/DanfeViewModelCreator.cs b/DanfeSharp/Modelo/DanfeViewModelCreator.cs index 81caa0b5..c2b8c959 100644 --- a/DanfeSharp/Modelo/DanfeViewModelCreator.cs +++ b/DanfeSharp/Modelo/DanfeViewModelCreator.cs @@ -85,7 +85,7 @@ public static DanfeViewModel CriarDeArquivoXml(String caminho) /// Modelo public static DanfeViewModel CriarDeArquivoXml(Stream stream) { - if (stream == null) throw new ArgumentNullException(nameof(stream)); + if (stream == null) throw new ArgumentNullException(nameof(stream)); using (StreamReader sr = new StreamReader(stream, true)) { @@ -194,7 +194,7 @@ public static DanfeViewModel CreateFromProcNFe(ProcNFe procNfe) throw new Exception("Somente o mod==55 está implementado."); } - if (ide.tpEmis != FormaEmissao.Normal && ide.tpEmis != FormaEmissao.ContingenciaDPEC) + if (ide.tpEmis != FormaEmissao.Normal && ide.tpEmis != FormaEmissao.ContingenciaDPEC && ide.tpEmis != FormaEmissao.ContingenciaSVCAN && ide.tpEmis != FormaEmissao.ContingenciaSVCRS) { throw new Exception("Somente o tpEmis==1 está implementado."); } @@ -241,7 +241,7 @@ public static DanfeViewModel CreateFromProcNFe(ProcNFe procNfe) produto.ValorUnitario = det.prod.vUnCom; produto.ValorTotal = det.prod.vProd; produto.InformacoesAdicionais = det.infAdProd; - + var imposto = det.imposto; if (imposto != null) @@ -354,4 +354,4 @@ public static DanfeViewModel CreateFromProcNFe(ProcNFe procNfe) } } -} +} \ No newline at end of file From 72c8eed2d00cf4ce9a1a499908abf023e27da43d Mon Sep 17 00:00:00 2001 From: leandro_ssilva Date: Mon, 11 Dec 2017 18:59:23 -0200 Subject: [PATCH 2/2] Implement contingency FSDA generate on pdf and deleting blank lines --- DanfeSharp/Graphics/Gfx.cs | 2 -- DanfeSharp/Modelo/DanfeViewModel.cs | 23 +++++++--------------- DanfeSharp/Modelo/DanfeViewModelCreator.cs | 5 +---- 3 files changed, 8 insertions(+), 22 deletions(-) diff --git a/DanfeSharp/Graphics/Gfx.cs b/DanfeSharp/Graphics/Gfx.cs index 27cb0a5b..9871a2ac 100644 --- a/DanfeSharp/Graphics/Gfx.cs +++ b/DanfeSharp/Graphics/Gfx.cs @@ -138,7 +138,5 @@ private void CheckPoint(PointF p) public void Flush() => PrimitiveComposer.Flush(); public void Fill() => PrimitiveComposer.Fill(); public void DrawRectangle(float x, float y, float w, float h) => DrawRectangle(new RectangleF(x, y, w, h)); - - } } \ No newline at end of file diff --git a/DanfeSharp/Modelo/DanfeViewModel.cs b/DanfeSharp/Modelo/DanfeViewModel.cs index 5c078fd7..5664855f 100644 --- a/DanfeSharp/Modelo/DanfeViewModel.cs +++ b/DanfeSharp/Modelo/DanfeViewModel.cs @@ -63,7 +63,6 @@ public float Margem /// public String ChaveAcesso { get; set; } - /// /// Descrição da Natureza da Operação /// Tag natOp @@ -171,7 +170,6 @@ public float Margem /// public CalculoIssqnViewModel CalculoIssqn { get; set; } - /// /// Tipo de Ambiente /// @@ -211,7 +209,6 @@ public float Margem #endregion - #region Opções de exibição /// @@ -244,10 +241,8 @@ public DanfeViewModel() ExibirPisConfins = true; } - public Boolean MostrarCalculoIssqn { get; set; } - /// /// Substitui o ponto e vírgula (;) por uma quebra de linha. /// @@ -282,30 +277,30 @@ public virtual String TextoReservadoFisco() if (TipoEmissao == 4) { sb.Append("CONTINGÊNCIA DPEC"); - sb.AppendChaveValor("Entrada em contingência", DataHoraContingencia.Value.ToString("yyyy-MM-ddThh:mm:sszzz")); // data hora - + sb.AppendChaveValor("Justificativa", MotivoContingencia); // just + } + // 5 = Contingência FSDA + if (TipoEmissao == 5) + { + sb.Append("CONTINGÊNCIA FSDA"); + sb.AppendChaveValor("Entrada em contingência", DataHoraContingencia.Value.ToString("yyyy-MM-ddThh:mm:sszzz")); // data hora sb.AppendChaveValor("Justificativa", MotivoContingencia); // just } // 6 = Contingência SVC-AN else if (TipoEmissao == 6) { sb.Append("CONTINGÊNCIA SVC-AN"); - sb.AppendChaveValor("Entrada em contingência", DataHoraContingencia.Value.ToString("yyyy-MM-ddThh:mm:sszzz")); // data hora - sb.AppendChaveValor("Justificativa", MotivoContingencia); // just } // 7 = Contingência SVC-RS else if (TipoEmissao == 7) { sb.Append("CONTINGÊNCIA SVC-RS"); - sb.AppendChaveValor("Entrada em contingência", DataHoraContingencia.Value.ToString("yyyy-MM-ddThh:mm:sszzz")); // data hora - sb.AppendChaveValor("Justificativa", MotivoContingencia); // just } - return sb.ToString(); } @@ -335,14 +330,12 @@ public virtual String TextoAdicional() if (!String.IsNullOrEmpty(NotaEmpenho)) sb.AppendChaveValor("Nota de Empenho", NotaEmpenho); - foreach (var nfref in NotasFiscaisReferenciadas) { if (sb.Length > 0) sb.Append(" "); sb.Append(nfref); } - #region NT 2013.003 Lei da Transparência if (CalculoImposto.ValorAproximadoTributos.HasValue && (String.IsNullOrEmpty(InformacoesComplementares) || @@ -355,12 +348,10 @@ public virtual String TextoAdicional() #endregion - return sb.ToString(); } public Boolean IsRetrato => Orientacao == Orientacao.Retrato; public Boolean IsPaisagem => Orientacao == Orientacao.Paisagem; - } } \ No newline at end of file diff --git a/DanfeSharp/Modelo/DanfeViewModelCreator.cs b/DanfeSharp/Modelo/DanfeViewModelCreator.cs index c2b8c959..03572944 100644 --- a/DanfeSharp/Modelo/DanfeViewModelCreator.cs +++ b/DanfeSharp/Modelo/DanfeViewModelCreator.cs @@ -106,7 +106,6 @@ public static DanfeViewModel CriarDeStringXml(string str) } } - private static DanfeViewModel CriarDeArquivoXmlInternal(TextReader reader) { ProcNFe nfe = null; @@ -152,7 +151,6 @@ internal static void ExtrairDatas(DanfeViewModel model, InfNFe infNfe) { model.HoraSaidaEntrada = TimeSpan.Parse(ide.hSaiEnt); } - } } @@ -194,7 +192,7 @@ public static DanfeViewModel CreateFromProcNFe(ProcNFe procNfe) throw new Exception("Somente o mod==55 está implementado."); } - if (ide.tpEmis != FormaEmissao.Normal && ide.tpEmis != FormaEmissao.ContingenciaDPEC && ide.tpEmis != FormaEmissao.ContingenciaSVCAN && ide.tpEmis != FormaEmissao.ContingenciaSVCRS) + if (ide.tpEmis != FormaEmissao.Normal && ide.tpEmis != FormaEmissao.ContingenciaDPEC && ide.tpEmis != FormaEmissao.ContingenciaFSDA && ide.tpEmis != FormaEmissao.ContingenciaSVCAN && ide.tpEmis != FormaEmissao.ContingenciaSVCRS) { throw new Exception("Somente o tpEmis==1 está implementado."); } @@ -352,6 +350,5 @@ public static DanfeViewModel CreateFromProcNFe(ProcNFe procNfe) return model; } - } } \ No newline at end of file