private void PAF_Preenche_D() { #region D1 var registroD1Rec = new ACBrPAFInterop.RegistroHD1Rec() { RAZAOSOCIAL = ToUTF8(PafD.RegistroD1.RazaoSocial), CNPJ = ToUTF8(PafD.RegistroD1.CNPJ), UF = ToUTF8(PafD.RegistroD1.UF), IE = ToUTF8(PafD.RegistroD1.IE), IM = ToUTF8(PafD.RegistroD1.IM) }; #endregion D1 #region D2 var registrosD2Rec = (from x in PafD.RegistroD2 select new ACBrPAFInterop.RegistroD2Rec { QTD_D3 = x.RegistroD3.Count, QTD_D4 = x.RegistroD4.Count, NUM_FAB = ToUTF8(x.NUM_FAB), MF_ADICIONAL = ToUTF8(x.MF_ADICIONAL), TIPO_ECF = ToUTF8(x.TIPO_ECF), MARCA_ECF = ToUTF8(x.MARCA_ECF), MODELO_ECF = ToUTF8(x.MODELO_ECF), COO = ToUTF8(x.COO), NUM_DAV = ToUTF8(x.NUM_DAV), DT_DAV = x.DT_DAV.ToOADate(), TIT_DAV = ToUTF8(x.TIT_DAV), VLT_DAV = Convert.ToDouble(x.VLT_DAV), COO_DFV = ToUTF8(x.COO_DFV), NUMERO_ECF = ToUTF8(x.NUMERO_ECF), NOME_CLIENTE = ToUTF8(x.NOME_CLIENTE), CPF_CNPJ = ToUTF8(x.CPF_CNPJ), RegistroValido = x.RegistroValido }).ToArray(); #endregion #region D3 var d3Count = PafD.RegistroD2.Sum(x => x.RegistroD3.Count); var registrosD3Rec = new ACBrPAFInterop.RegistroD3Rec[0]; if (d3Count > 0) { registrosD3Rec = (((from x in PafD.RegistroD2 where x.RegistroD3.Any() select x.RegistroD3.AsEnumerable()) .Aggregate((pafRegistroD3S, registroD3S) => { if (pafRegistroD3S != null && registroD3S != null) { return(pafRegistroD3S.Concat(registroD3S)); } return(new List <ACBrPAFRegistroD3>().AsEnumerable()); })).Select(s => new ACBrPAFInterop.RegistroD3Rec { DT_INCLUSAO = s.DT_INCLUSAO.ToOADate(), NUM_ITEM = s.NUM_ITEM, COD_ITEM = ToUTF8(s.COD_ITEM), DESC_ITEM = ToUTF8(s.DESC_ITEM), QTDE_ITEM = Convert.ToDouble(s.QTDE_ITEM), UNI_ITEM = ToUTF8(s.UNI_ITEM), VL_UNIT = Convert.ToDouble(s.VL_UNIT), VL_DESCTO = Convert.ToDouble(s.VL_DESCTO), VL_ACRES = Convert.ToDouble(s.VL_ACRES), VL_TOTAL = Convert.ToDouble(s.VL_TOTAL), DEC_VL_UNIT = s.DEC_VL_UNIT, DEC_QTDE_ITEM = s.DEC_QTDE_ITEM, SIT_TRIB = ToUTF8(s.SIT_TRIB), ALIQ = Convert.ToDouble(s.ALIQ), IND_CANC = ToUTF8(s.IND_CANC), RegistroValido = s.RegistroValido })).ToArray(); } #endregion D3 #region D4 var d4Count = PafD.RegistroD2.Sum(x => x.RegistroD4.Count); var registrosD4Rec = new ACBrPAFInterop.RegistroD4Rec[0]; if (d4Count > 0) { registrosD4Rec = (from s in ((from x in PafD.RegistroD2 where x.RegistroD4.Any() select x.RegistroD4.AsEnumerable()) .Where(i => i.Any()).Aggregate((i, j) => i.Concat(j))) select new ACBrPAFInterop.RegistroD4Rec { NumeroDAV = s.NumeroDAV, DataAlteracao = s.DataAlteracao.ToOADate(), CodigoProdutoServico = s.CodigoProdutoServico, Descricao = s.Descricao, Quantidade = (double)s.Quantidade, Unidade = s.Unidade, ValorUnitario = (double)s.ValorUnitario, DescontoSobreItem = (double)s.DescontoSobreItem, AcrescimoSobreItem = (double)s.AcrescimoSobreItem, ValorTotalLiquido = (double)s.ValorTotalLiquido, SituacaoTributaria = s.SituacaoTributaria, Aliquota = (double)s.Aliquota, IndicadorCancelamento = s.IndicadorCancelamento, CasasDecimaisQtd = s.CasasDecimaisQtd, CasasDecimaisVlUn = s.CasasDecimaisVlUn, TipoAlteracao = s.TipoAlteracao }).ToArray(); } #endregion D4 var ret = ACBrPAFInterop.PAF_Preenche_D(Handle, registroD1Rec, registrosD2Rec, PafD.RegistroD2.Count, registrosD3Rec, registrosD4Rec, registrosD4Rec.Count()); CheckResult(ret); }
private void PAF_Preenche_D() { #region D1 var registroD1Rec = new ACBrPAFInterop.RegistroHD1Rec() { RAZAOSOCIAL = ToUTF8(PafD.RegistroD1.RazaoSocial), CNPJ = ToUTF8(PafD.RegistroD1.CNPJ), UF = ToUTF8(PafD.RegistroD1.UF), IE = ToUTF8(PafD.RegistroD1.IE), IM = ToUTF8(PafD.RegistroD1.IM) }; #endregion D1 #region D2 var registrosD2Rec = (from x in PafD.RegistroD2 select new ACBrPAFInterop.RegistroD2Rec { QTD_D3 = x.RegistroD3.Count, QTD_D4 = x.RegistroD4.Count, NUM_FAB = ToUTF8(x.NUM_FAB), MF_ADICIONAL = ToUTF8(x.MF_ADICIONAL), TIPO_ECF = ToUTF8(x.TIPO_ECF), MARCA_ECF = ToUTF8(x.MARCA_ECF), MODELO_ECF = ToUTF8(x.MODELO_ECF), COO = ToUTF8(x.COO), NUM_DAV = ToUTF8(x.NUM_DAV), DT_DAV = x.DT_DAV.ToOADate(), TIT_DAV = ToUTF8(x.TIT_DAV), VLT_DAV = Convert.ToDouble(x.VLT_DAV), COO_DFV = ToUTF8(x.COO_DFV), NUMERO_ECF = ToUTF8(x.NUMERO_ECF), NOME_CLIENTE = ToUTF8(x.NOME_CLIENTE), CPF_CNPJ = ToUTF8(x.CPF_CNPJ), RegistroValido = x.RegistroValido }).ToArray(); #endregion #region D3 var d3Count = PafD.RegistroD2.Sum(x => x.RegistroD3.Count); var registrosD3Rec = new ACBrPAFInterop.RegistroD3Rec[0]; if (d3Count > 0) { registrosD3Rec = (((from x in PafD.RegistroD2 where x.RegistroD3.Any() select x.RegistroD3.AsEnumerable()) .Aggregate((pafRegistroD3S, registroD3S) => { if (pafRegistroD3S != null && registroD3S != null) return pafRegistroD3S.Concat(registroD3S); return new List<ACBrPAFRegistroD3>().AsEnumerable(); })).Select(s => new ACBrPAFInterop.RegistroD3Rec { DT_INCLUSAO = s.DT_INCLUSAO.ToOADate(), NUM_ITEM = s.NUM_ITEM, COD_ITEM = ToUTF8(s.COD_ITEM), DESC_ITEM = ToUTF8(s.DESC_ITEM), QTDE_ITEM = Convert.ToDouble(s.QTDE_ITEM), UNI_ITEM = ToUTF8(s.UNI_ITEM), VL_UNIT = Convert.ToDouble(s.VL_UNIT), VL_DESCTO = Convert.ToDouble(s.VL_DESCTO), VL_ACRES = Convert.ToDouble(s.VL_ACRES), VL_TOTAL = Convert.ToDouble(s.VL_TOTAL), DEC_VL_UNIT = s.DEC_VL_UNIT, DEC_QTDE_ITEM = s.DEC_QTDE_ITEM, SIT_TRIB = ToUTF8(s.SIT_TRIB), ALIQ = Convert.ToDouble(s.ALIQ), IND_CANC = ToUTF8(s.IND_CANC), RegistroValido = s.RegistroValido })).ToArray(); } #endregion D3 #region D4 var d4Count = PafD.RegistroD2.Sum(x => x.RegistroD4.Count); var registrosD4Rec = new ACBrPAFInterop.RegistroD4Rec[0]; if (d4Count > 0) { registrosD4Rec = (from s in ((from x in PafD.RegistroD2 where x.RegistroD4.Any() select x.RegistroD4.AsEnumerable()) .Where(i => i.Any()).Aggregate((i, j) => i.Concat(j))) select new ACBrPAFInterop.RegistroD4Rec { NumeroDAV = s.NumeroDAV, DataAlteracao = s.DataAlteracao.ToOADate(), CodigoProdutoServico = s.CodigoProdutoServico, Descricao = s.Descricao, Quantidade = (double) s.Quantidade, Unidade = s.Unidade, ValorUnitario = (double) s.ValorUnitario, DescontoSobreItem = (double) s.DescontoSobreItem, AcrescimoSobreItem = (double) s.AcrescimoSobreItem, ValorTotalLiquido = (double) s.ValorTotalLiquido, SituacaoTributaria = s.SituacaoTributaria, Aliquota = (double) s.Aliquota, IndicadorCancelamento = s.IndicadorCancelamento, CasasDecimaisQtd = s.CasasDecimaisQtd, CasasDecimaisVlUn = s.CasasDecimaisVlUn, TipoAlteracao = s.TipoAlteracao }).ToArray(); } #endregion D4 var ret = ACBrPAFInterop.PAF_Preenche_D(Handle, registroD1Rec, registrosD2Rec, PafD.RegistroD2.Count, registrosD3Rec, registrosD4Rec, registrosD4Rec.Count()); CheckResult(ret); }