コード例 #1
0
        private bool ValidaDI(belDI obj)
        {
            try
            {
                int icoun = 0;

                if (obj.nDI == null) { icoun++; }
                if (obj.DDI == null) { icoun++; }
                if (obj.xLocDesemb == null) { icoun++; }
                if (obj.UFDesemb == null) { icoun++; }
                if (obj.dDesemb == null) { icoun++; }
                if (obj.cExportador == null) { icoun++; }

                if (icoun > 0)
                {
                    KryptonMessageBox.Show(null, "Verifique os Campos em Vermelho da DI selecionada, pois são obrigatórios!!", "A T E N Ç Ã O", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return false;
                }
                else
                {
                    return true;
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
コード例 #2
0
ファイル: belGerarxml.cs プロジェクト: dramosti/GeraXml_2.0
        public List<belDet> BuscaItem(string sEmp,
                                   string sNF, belDest objdest)
        {
            List<belDet> dets = new List<belDet>();
            Globais LeRegWin = new Globais();
            string psNM_Banco = LeRegWin.LeRegConfig("BancoDados");
            List<CamposSelect> lCampos = new List<CamposSelect>();
            bool bAgrupaCampos = VerificaSeAgrupaItens(Conn);
            StringBuilder sCampos = new StringBuilder();
            StringBuilder sInnerJoin = new StringBuilder();
            StringBuilder sWhere = new StringBuilder();
            StringBuilder sGroup = new StringBuilder();

            try
            {

                #region Campos do Select

                //sSql.Append("Select ");
                lCampos.Add(new CamposSelect { sCampo = "coalesce(tpdoc.st_pauta,'N')", sAlias = "st_pauta" });//OS_25969
                lCampos.Add(new CamposSelect { sCampo = "coalesce(tpdoc.st_frete_entra_ipi_s,'N')", sAlias = "st_frete_entra_ipi_s" });//OS_26866
                lCampos.Add(new CamposSelect { sCampo = "coalesce(tpdoc.ST_FRETE_ENTRA_ICMS_S,'N')", sAlias = "ST_FRETE_ENTRA_ICMS_S" });//OS_26866
                lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.vl_baseicm,0)", sAlias = "vBC_Pauta" });//OS_25969
                lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.vl_icms,0)", sAlias = "vl_icms_Pauta" });//OS_25969
                lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.cd_pedcli,'')", sAlias = "xPed" });//OS_25977
                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.nr_item_ped_compra,'')", sAlias = "nItemPed" });//OS_25977
                lCampos.Add(new CamposSelect { sCampo = "coalesce(opereve.st_servico,'')", sAlias = "st_servico" });
                lCampos.Add(new CamposSelect { sCampo = "movitem.cd_oper", sAlias = "cd_oper" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(nf.st_soma_dev_tot_nf,'N')", sAlias = "st_soma_dev_tot_nf" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(produto.cd_orig_sittrib,0)", sAlias = "Orig" }); //os_26467
                lCampos.Add(new CamposSelect { sCampo = "coalesce(EMPRESA.ST_SUPERSIMPLES,'N')", sAlias = "ST_SUPERSIMPLES" }); //os_26817
                //ST_SUPERSIMPLES
                if (objdest.Uf.Equals("EX"))
                {
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.VL_BASEIPI,0)", sAlias = "VL_BASEIPI" }); //os_26467
                }

                if ((psNM_Banco.ToUpper().IndexOf("COMERCIOC") == -1) && (psNM_Banco.ToUpper().IndexOf("CERAMICAC") == -1)) //SE FOR INDUSTRIA
                {
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(tpdoc.st_compoe_vl_totprod_nf,'A')", sAlias = "st_compoe_vl_totprod_nf" });
                }

                if (objbelGeraXml.nm_Cliente != "MOGPLAST")
                {
                    lCampos.Add(new CamposSelect { sCampo = "case when empresa.st_codprodnfe = 'C' then produto.cd_prod else produto.cd_alter end", sAlias = "cProd" });
                }
                else
                {
                    lCampos.Add(new CamposSelect
                    {
                        sCampo = "case when empresa.nm_empresa containing 'MOGPLAST' then " +
                                 "produto.ds_detalhe " +
                                 "else " +
                                 "case when empresa.st_codprodnfe = 'C' then " +
                                 "movitem.cd_prod else " +
                                 "movitem.cd_alter end " +
                                 "End ",
                        sAlias = "cProd"
                    });
                }
                if (belStaticPastas.CBARRAS == "True")
                {
                    lCampos.Add(new CamposSelect { sCampo = "produto.cd_barras", sAlias = "cEAN" });
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "produto.cd_alter", sAlias = "cEAN" });
                }
                if (objbelGeraXml.nm_Cliente != "NAVE_THERM")
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.ds_prod", sAlias = "xProd" });
                }
                else
                {
                    lCampos.Add(new CamposSelect
                    {
                        sCampo = "case when produto.ds_prod_compl is not null then " +
                            "substring(produto.ds_prod_compl from 1 for 120) " +
                            "else " +
                            "produto.ds_prod end ",
                        sAlias = "xProd"
                    });
                }
                lCampos.Add(new CamposSelect { sCampo = "substring(clas_fis.ds_clasfis from 1 for 15)", sAlias = "NCM" });// Diego - 21/10 Lorenzon

                lCampos.Add(new CamposSelect { sCampo = "movitem.cd_cfop", sAlias = "CFOP" });
                lCampos.Add(new CamposSelect { sCampo = "unidades.cd_unfat", sAlias = "uCom" });//Diego - OS_ 25/08/10

                lCampos.Add(new CamposSelect { sCampo = "movitem.qt_prod", sAlias = "qCom", bAgrupa = bAgrupaCampos });


                if (objbelGeraXml.nm_Cliente.Equals("MAD_STA_RITA"))
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_comprimento", sAlias = "vl_comprimento", bAgrupa = bAgrupaCampos }); // Diego - OS_25550  
                }
                if (objbelGeraXml.nm_Cliente.Equals("ZINCOBRIL")) //os_25787                
                {
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(opereve.tp_industrializacao,'')", sAlias = "tp_industrializacao" });
                }

                lCampos.Add(new CamposSelect { sCampo = "coalesce(vl_uniprod_sem_desc,0)", sAlias = "vl_uniprod_sem_desc" });//cast -> OS_25771 // 6 casas decimais

                if (objdest.Uf != "EX")
                {
                    //cast(movitem.vl_uniprod as numeric (15,5))
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_uniprod", sAlias = "vUnCom" });//cast -> OS_25771 // 6 casas decimais
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "(case when movitem.vl_uniprod_ii = 0 then movitem.vl_uniprod else movitem.vl_uniprod_ii end)", sAlias = "vUnCom", bAgrupa = bAgrupaCampos });
                }
                if (objdest.Uf == "EX") //DIEGO - OS_24730
                {
                    lCampos.Add(new CamposSelect { sCampo = "(case when movitem.vl_uniprod_ii = 0 then movitem.vl_totbruto else (movitem.vl_uniprod_ii * movitem.qt_prod) end)", sAlias = "vProd", bAgrupa = bAgrupaCampos });
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_totbruto", sAlias = "vProd", bAgrupa = bAgrupaCampos }); //2 casas decimais
                }//DIEGO - OS_24730 - FIM         

                lCampos.Add(new CamposSelect { sCampo = "movitem.vl_totliq", sAlias = "vl_totliq", bAgrupa = bAgrupaCampos });// Diego 0S_24595                

                if (LeRegWin.LeRegConfig("CodBarrasXml") == "True")
                {
                    lCampos.Add(new CamposSelect { sCampo = "produto.cd_barras", sAlias = "cEANTrib" });
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "produto.cd_alter", sAlias = "cEANTrib" });
                }

                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_descsuframa,0) + coalesce(movitem.vl_desccofinssuframa,0) + coalesce(movitem.vl_descpissuframa,0)", sAlias = "vDescSuframa", bAgrupa = bAgrupaCampos });

                lCampos.Add(new CamposSelect { sCampo = "coalesce(nf.st_desc,'U')", sAlias = "st_desc" });
                lCampos.Add(new CamposSelect { sCampo = "movitem.cd_tpunid", sAlias = "uTrib" });
                lCampos.Add(new CamposSelect { sCampo = "movitem.qt_prod", sAlias = "qTrib", bAgrupa = bAgrupaCampos });


                if (objdest.Uf != "EX")
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_uniprod", sAlias = "vUnTrib" });
                }
                else
                {
                    // lCampos.Add(new CamposSelect { sCampo = "movitem.vl_uniprod_ii", sAlias = "vUnTrib" });
                    lCampos.Add(new CamposSelect { sCampo = "(case when movitem.vl_uniprod_ii = 0 then movitem.vl_uniprod else movitem.vl_uniprod_ii end)", sAlias = "vUnTrib", bAgrupa = bAgrupaCampos });
                }
                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_ii,0)", sAlias = "vl_ii" });
                lCampos.Add(new CamposSelect { sCampo = "movitem.cd_sittrib", sAlias = "CST" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(nf.st_ipi,'S')", sAlias = "st_ipi" }); //OS_25673
                lCampos.Add(new CamposSelect { sCampo = "movitem.vl_alicredicms", sAlias = "pCredSN" });//NFe_2.0
                lCampos.Add(new CamposSelect { sCampo = "movitem.vl_credicms", sAlias = "vCredICMSSN", bAgrupa = bAgrupaCampos }); // **

                #region BC_ICMS
                if (objdest.Uf != "EX")
                {
                    //if (objbelGeraXml.nm_Cliente != "TORCETEX") OS_27040
                    //{
                    lCampos.Add(new CamposSelect
                    {
                        sCampo = "case when coalesce(tpdoc.st_nfcompl, 'N') = 'N' then " +
                                 "case when coalesce(tpdoc.st_nfcompl, 'N') = 'N' then " +
                                 "case when coalesce(nf.st_ipi,'N') = 'N' then " +
                                 "CASE when (SELECT SUM(VL_TOTBRUTO) FROM movitem where ((movitem.cd_empresa = nf.cd_empresa) and (MOVITEM.cd_nfseq = NF.cd_nfseq))) > NF.vl_totprod then " +
                                 "((case when movitem.vl_redbase <> 0 then " +
                                 "case when  coalesce((select first 1 ST_ESTTERC from opereve where ((ST_ESTTERC = 'S') and ((TPDOC.cd_operval) containing cd_oper  ))),'N') = 'N' then " +
                                 "(movitem.vl_totliq - ((SELECT SUM(VL_TOTBRUTO) FROM movitem where ((movitem.cd_empresa = nf.cd_empresa) and (MOVITEM.cd_nfseq = NF.cd_nfseq))) - NF.vl_totprod) / ((SELECT COUNT(NR_LANC) FROM movitem where movitem.cd_empresa = nf.cd_empresa and MOVITEM.cd_nfseq = NF.cd_nfseq) )) - (((100-coalesce(movitem.vl_redbase, 100)) * (movitem.vl_totliq - ((SELECT SUM(VL_TOTBRUTO) FROM movitem where ((movitem.cd_empresa = nf.cd_empresa) and (MOVITEM.cd_nfseq = NF.cd_nfseq))) - NF.vl_totprod) / ((SELECT COUNT(NR_LANC) FROM movitem where movitem.cd_empresa = nf.cd_empresa and MOVITEM.cd_nfseq = NF.cd_nfseq) )))/ 100) " +
                                 "else " +
                                 "movitem.vl_totliq - (((100-coalesce(movitem.vl_redbase, 100)) * movitem.vl_totliq)/ 100) " +
                                 "end " +
                                 "else " +
                                 "movitem.vl_totliq " +
                                 "end +(case when (coalesce(tpdoc.ST_FRETE_ENTRA_ICMS_S,'N') <> 'N') AND (UF.VL_ALIICMSFRETE > 0) then  movitem.vl_frete else 0 end))) " +//OS 25385
                                 "else " +
                                 "((case when movitem.vl_redbase <> 0 then  " +
                                 "movitem.vl_totliq - (((100-coalesce(movitem.vl_redbase, 100)) * movitem.vl_totliq)/ 100) " +
                                 "else " +
                                 "movitem.vl_totliq " +
                                 "end + (case when (coalesce(tpdoc.ST_FRETE_ENTRA_ICMS_S,'N') <> 'N') AND (UF.VL_ALIICMSFRETE > 0) then  movitem.vl_frete else 0 end))) " +
                                 "end " +
                                 "else " +
                                 "(CASE when (SELECT SUM(VL_TOTBRUTO) FROM movitem where movitem.cd_empresa = nf.cd_empresa and MOVITEM.cd_nfseq = NF.cd_nfseq) > NF.vl_totprod then " +
                                 "((case when movitem.vl_redbase <> 0 then " +
                                 "(movitem.vl_totliq - ((SELECT SUM(VL_TOTBRUTO) FROM movitem where movitem.cd_empresa = nf.cd_empresa and MOVITEM.cd_nfseq = NF.cd_nfseq) - NF.vl_totprod) / ((SELECT COUNT(NR_LANC) FROM movitem where movitem.cd_empresa = nf.cd_empresa and MOVITEM.cd_nfseq = NF.cd_nfseq) )) - (((100-coalesce(movitem.vl_redbase, 100)) * (movitem.vl_totliq - ((SELECT SUM(VL_TOTBRUTO) FROM movitem where movitem.cd_empresa = nf.cd_empresa and MOVITEM.cd_nfseq = NF.cd_nfseq) - NF.vl_totprod) / ((SELECT COUNT(NR_LANC) FROM movitem where movitem.cd_EMPRESA = NF.CD_EMPRESA AND MOVITEM.cd_nfseq = NF.cd_nfseq) )))/ 100) " +
                                 "else " +
                                 "movitem.vl_totliq " +
                                 "end " +
                                 " + (case when (coalesce(tpdoc.ST_FRETE_ENTRA_ICMS_S,'N') <> 'N') AND (UF.VL_ALIICMSFRETE > 0) then  movitem.vl_frete else 0 end))) " +
                                 "else " +
                                 "((case when movitem.vl_redbase <> 0 then " +
                                 "movitem.vl_totliq - (((100-coalesce(movitem.vl_redbase, 100)) * movitem.vl_totliq)/ 100) " +
                                 "else " +
                                 "movitem.vl_totliq " +
                                 "end + (case when (coalesce(tpdoc.ST_FRETE_ENTRA_ICMS_S,'N') <> 'N') AND (UF.VL_ALIICMSFRETE > 0) then  movitem.vl_frete else 0 end))) " +
                                 "end) + movitem.vl_ipi " +
                                 " end " +
                                 " end " +
                                 " else " +
                                 " nf.vl_baseicm " +
                                 " end ",
                        sAlias = " vBC",
                        bAgrupa = bAgrupaCampos
                    });
                    //    }
                    //    else
                    //    {
                    //        lCampos.Add(new CamposSelect
                    //        {
                    //            sCampo =
                    //            "case when coalesce(tpdoc.st_nfcompl, 'N') = 'N' then " +
                    //            "case when coalesce(tpdoc.st_nfcompl, 'N') = 'N' then " +
                    //            "case when coalesce(nf.st_ipi,'N') = 'N' then" +
                    //            "((movitem.vl_totliq * movitem.vl_coefdesc) + (case when (coalesce(tpdoc.ST_FRETE_ENTRA_ICMS_S,'N') <> 'N') AND (UF.VL_ALIICMSFRETE > 0) then  movitem.vl_frete else 0 end)) " +
                    //            "else " +
                    //            "((movitem.vl_totliq * movitem.vl_coefdesc) + (case when (coalesce(tpdoc.ST_FRETE_ENTRA_ICMS_S,'N') <> 'N') AND (UF.VL_ALIICMSFRETE > 0) then  movitem.vl_frete else 0 end)) + movitem.vl_ipi " +
                    //            "end " +
                    //            "end " +
                    //            "else " +
                    //            "nf.vl_baseicm " +
                    //            "end ",
                    //            sAlias = "vBC",
                    //            bAgrupa = bAgrupaCampos
                    //        });
                    //    }
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_baseicm", sAlias = "vBC", bAgrupa = bAgrupaCampos });
                }
                #endregion

                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_bicmproprio_subst,0) ", sAlias = "vBCProp", bAgrupa = bAgrupaCampos });// Diego OS_25278
                lCampos.Add(new CamposSelect { sCampo = "movitem.vl_aliicms", sAlias = "pICMS" });//Diego - OS_24730


                //CODIGO COMENTADO OS_26817

                //if (objbelGeraXml.nm_Cliente == "PAVAX")
                //{
                //    if (objdest.Uf == "EX")
                //    {
                //        lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.vl_icms_ii,0)", sAlias = "vICMS" });
                //    }
                //    else
                //    {
                //        lCampos.Add(new CamposSelect { sCampo = "movitem.vl_icms", sAlias = "vICMS" });
                //    }
                //}
                //else if (objbelGeraXml.nm_Cliente == "EMEB")
                //{
                //    if (objdest.Uf == "EX")
                //    {
                //        lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.vl_icms_ii,0)", sAlias = "vICMS", bAgrupa = bAgrupaCampos });
                //    }
                //    else
                //    {
                //        lCampos.Add(new CamposSelect { sCampo = "(movitem.vl_icms + movitem.vl_icmproprio_subst)", sAlias = "vICMS", bAgrupa = bAgrupaCampos });
                //    }
                //}
                //else
                //{                
                //lCampos.Add(new CamposSelect { sCampo = "(movitem.vl_icms + movitem.vl_icmproprio_subst)", sAlias = "vICMS", bAgrupa = bAgrupaCampos });
                //} //Diego - OS_24730 - FIM     

                //os_26817 - inicio
                if (objdest.Uf == "EX")
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_icms", sAlias = "vICMS", bAgrupa = bAgrupaCampos });
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "(movitem.vl_icms + movitem.vl_icmproprio_subst)", sAlias = "vICMS", bAgrupa = bAgrupaCampos });
                }
                //os_26817 - FIM

                lCampos.Add(new CamposSelect
                {
                    sCampo = "case when tpdoc.st_nfcompl = 'N' then " +
                        "coalesce(movitem.vl_bicmssubst, 0) " +
                        "else " +
                        "nf.VL_BICMSSU " +
                        "end ",
                    sAlias = "vBCST",
                    bAgrupa = bAgrupaCampos
                });

                lCampos.Add(new CamposSelect { sCampo = "coalesce(icm.vl_aliinte, 0)", sAlias = "pICMSST" });

                lCampos.Add(new CamposSelect
                {
                    sCampo = "case when tpdoc.st_nfcompl = 'N' then "
                        + "coalesce(movitem.vl_icmretsubst, 0) "
                        + "else "
                        + "nf.VL_ICMSSUB "
                        + "end ",
                    sAlias = "vICMSST",
                    bAgrupa = bAgrupaCampos
                });

                lCampos.Add(new CamposSelect { sCampo = "(100-coalesce(movitem.vl_redbase, 0)) ", sAlias = "pRedBC", bAgrupa = bAgrupaCampos });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(icm.vl_alisubs, 0)", sAlias = "pMVAST" });
                lCampos.Add(new CamposSelect { sCampo = "(100-coalesce(movitem.vl_redbase, 0))", sAlias = "pRedBCST", bAgrupa = bAgrupaCampos });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_aliipi, 0)", sAlias = "pIPI" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_ipi, 0)", sAlias = "vIPI", bAgrupa = bAgrupaCampos });
                if (bAgrupaCampos == false)
                {
                    lCampos.Add(new CamposSelect { sCampo = "nf.ds_anota", sAlias = "infAdProd", });
                }

                lCampos.Add(new CamposSelect { sCampo = "coalesce(clas_fis.st_tributacao, '1')", sAlias = "Tributa_ipi" });
                lCampos.Add(new CamposSelect { sCampo = "tpdoc.tp_doc", sAlias = "tp_doc" });

                lCampos.Add(new CamposSelect
                {
                    sCampo = "case when tpdoc.tp_doc = 'NS' then "
                        + "opereve.ST_CALCIPI_FA "
                        + "else "
                        + "opereve.st_ipi "
                        + "end ",
                    sAlias = "Calcula_IPI"
                });

                lCampos.Add(new CamposSelect { sCampo = "coalesce(opereve.st_hefrete, 'N')", sAlias = "st_hefrete" });

                lCampos.Add(new CamposSelect { sCampo = "opereve.st_piscofins", sAlias = "st_piscofins" });

                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_frete, 0)", sAlias = "vFrete", bAgrupa = bAgrupaCampos });

                if (bAgrupaCampos == false)
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.nr_lanc", sAlias = "nr_lanc" });
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "0", sAlias = "nr_lanc", bAgrupa = bAgrupaCampos });
                }
                if (objdest.Uf.Equals("EX"))
                {
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_aliqcofins_cif , 0)", sAlias = "vl_aliqcofins_suframa", bAgrupa = bAgrupaCampos });//DIEGO - 24730 - 02/08
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.VL_ALIQPIS_CIF  , 0)", sAlias = "vl_aliqpis_suframa", bAgrupa = bAgrupaCampos });
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(empresa.vl_aliqcofins_suframa, 0)", sAlias = "vl_aliqcofins_suframa", bAgrupa = bAgrupaCampos });
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(empresa.vl_aliqpis_suframa, 0)", sAlias = "vl_aliqpis_suframa", bAgrupa = bAgrupaCampos });
                }
                lCampos.Add(new CamposSelect { sCampo = "endentr.ds_endent", sAlias = "xLgr" });
                lCampos.Add(new CamposSelect { sCampo = "endentr.ds_endent", sAlias = "xLgr" });
                lCampos.Add(new CamposSelect { sCampo = "endentr.nr_endent", sAlias = "nro" });
                lCampos.Add(new CamposSelect { sCampo = "endentr.nm_bairroent", sAlias = "xBairro" });
                lCampos.Add(new CamposSelect { sCampo = "endentr.nm_cident", sAlias = "cMun" });
                lCampos.Add(new CamposSelect { sCampo = "endentr.cd_ufent", sAlias = "UF" });
                lCampos.Add(new CamposSelect { sCampo = "listaserv.ds_codigo", sAlias = "cListserv" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_aliqserv, 0)", sAlias = "vAliqISS", bAgrupa = bAgrupaCampos });

                lCampos.Add(new CamposSelect { sCampo = "(movitem.vl_totliq * coalesce(movitem.vl_aliqserv, 0))/100", sAlias = "vIssqn", bAgrupa = bAgrupaCampos });

                lCampos.Add(new CamposSelect { sCampo = "movitem.vl_totliq", sAlias = "vBCISS", bAgrupa = bAgrupaCampos });

                lCampos.Add(new CamposSelect { sCampo = "cidades.cd_municipio", sAlias = "cMunFG" });


                //if (objbelGeraXml.nm_Cliente == "TORCETEX") OS_27040
                //{
                //    lCampos.Add(new CamposSelect { sCampo = "movitem.VL_COEFDESC", sAlias = "VL_COEFDESC" });
                //    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_cofins", sAlias = "vl_cofins" });
                //    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_pis", sAlias = "vl_pis" });
                //    lCampos.Add(new CamposSelect { sCampo = "((cast((cast((movitem.qt_prod * movitem.vl_uniprod) as numeric(15,4)) * movitem.vl_coefdesc) as numeric(15,2)) + movitem.vl_frete))", sAlias = "vl_basePisCofins", bAgrupa = bAgrupaCampos });
                //}
                //else
                //{
                lCampos.Add(new CamposSelect { sCampo = "movitem.VL_COEF", sAlias = "VL_COEF" });
                if (objdest.Uf.Equals("EX"))  //Diego - 02/08 - 24730
                {
                    //lCampos.Add(new CamposSelect { sCampo = "movitem.VL_COFINS_CIF", sAlias = "vl_cofins" });
                    //lCampos.Add(new CamposSelect { sCampo = "movitem.VL_PIS_CIF", sAlias = "vl_pis" });
                    lCampos.Add(new CamposSelect { sCampo = "movitem.VL_COFINS", sAlias = "vl_cofins", bAgrupa = bAgrupaCampos });
                    lCampos.Add(new CamposSelect { sCampo = "movitem.VL_PIS", sAlias = "vl_pis", bAgrupa = bAgrupaCampos });
                    //lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.VL_BASECOFINS_CIF, 0)", sAlias = "vl_basePisCofins" });
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_basecofins", sAlias = "vl_basecofins", bAgrupa = bAgrupaCampos });
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_basepis", sAlias = "vl_basepis", bAgrupa = bAgrupaCampos });
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_cofins", sAlias = "vl_cofins", bAgrupa = bAgrupaCampos });
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_pis", sAlias = "vl_pis", bAgrupa = bAgrupaCampos });
                    //lCampos.Add(new CamposSelect { sCampo = "((cast((cast((movitem.qt_prod * movitem.vl_uniprod) as numeric(15,2))*movitem.vl_coef) as numeric(15,2)) + movitem.vl_frete))", sAlias = "vl_basePisCofins", bAgrupa = bAgrupaCampos }); // Conceito alterado pela OS_26866, de acordo com Hamilton
                    lCampos.Add(new CamposSelect { sCampo = "(cast((movitem.qt_prod * movitem.vl_uniprod) as numeric(15,2)))", sAlias = "vl_basePisCofins", bAgrupa = bAgrupaCampos });

                }
                //}
                string sBanco = LeRegWin.LeRegConfig("BancoDados");
                if ((sBanco.ToUpper().IndexOf("COMERCIOC") == -1) && (sBanco.ToUpper().IndexOf("CERAMICAC") == -1)) //Claudinei - o.s. - 25/09/2009
                {
                    lCampos.Add(new CamposSelect
                    {
                        sCampo = "case when empresa.ST_RASTREABILIDADE = '1' " +
                            "then " +
                            "coalesce(movitem.nr_lote,'') " +
                            "else '' " +
                            "end",
                        sAlias = "nr_lote"
                    });
                    lCampos.Add(new CamposSelect { sCampo = "movitem.cd_prodcli", sAlias = "cd_prodcli" });
                }

                if (objbelGeraXml.nm_Cliente == "MARPA")
                {

                    lCampos.Add(new CamposSelect { sCampo = "nf.vl_desccomer ", sAlias = "Desconto_Valor" });
                    lCampos.Add(new CamposSelect { sCampo = "((nf.vl_desccomer / nf.vl_totnf)*100)", sAlias = "Desconto_Percentual" });
                }
                lCampos.Add(new CamposSelect { sCampo = "movitem.CD_SITTRIBCOF", sAlias = "CD_SITTRIBCOF" });
                lCampos.Add(new CamposSelect { sCampo = "movitem.CD_SITTRIBIPI", sAlias = "CD_SITTRIBIPI" });
                lCampos.Add(new CamposSelect { sCampo = "movitem.CD_SITTRIBPIS", sAlias = "CD_SITTRIBPIS" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_outras,'0') ", sAlias = "vOutro" });
                //lCampos.Add(new strucCamposSelect { sCampo = "", sAlias = "" });

                lCampos.Add(new CamposSelect { sCampo = "coalesce(opereve.st_tpoper,'0')", sAlias = "st_tpoper" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(opereve.ST_ESTTERC,'N')", sAlias = "ST_ESTTERC" });//NFe_2.0 OS_25346
                lCampos.Add(new CamposSelect { sCampo = "tpdoc.cd_operval", sAlias = "cd_operval" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(Empresa.st_imp_cdpedcli, 'N')", sAlias = "st_imp_cdpedcli" });
                lCampos.Add(new CamposSelect { sCampo = "transpor.nm_trans", sAlias = "Redespacho" });
                lCampos.Add(new CamposSelect { sCampo = "transpor.ds_endnor", sAlias = "xLgrRedes" });
                lCampos.Add(new CamposSelect { sCampo = "transpor.nr_endnor", sAlias = "nroRedes" });
                lCampos.Add(new CamposSelect { sCampo = "transpor.ds_bairronor", sAlias = "xBairroRedes" });
                lCampos.Add(new CamposSelect { sCampo = "transpor.nm_cidnor", sAlias = "cmunRedes" });
                lCampos.Add(new CamposSelect { sCampo = "transpor.cd_ufnor", sAlias = "UFRedes" });

                #endregion

                sCampos.Append(Environment.NewLine + "Select " + Environment.NewLine);
                lCampos = lCampos.OrderBy(c => c.bAgrupa).ToList();
                for (int i = 0; i < lCampos.Count; i++)
                {
                    CamposSelect camp = lCampos[i];
                    string sFormat = "Sum({0}) ";
                    sCampos.Append((camp.bAgrupa ? string.Format(sFormat, camp.sCampo) : camp.sCampo) + " " + camp.sAlias + ((i + 1) != lCampos.Count() ? "," : "") + Environment.NewLine);
                }


                #region Inner Join
                //Tabelas
                sInnerJoin.Append("From MOVITEM ");

                //Relacionamentos
                sInnerJoin.Append("inner join nf on (nf.cd_empresa = movitem.cd_empresa)");
                sInnerJoin.Append(" and ");
                sInnerJoin.Append("(nf.cd_nfseq = movitem.cd_nfseq) ");
                sInnerJoin.Append("inner join empresa on (empresa.cd_empresa = movitem.cd_empresa) ");
                sInnerJoin.Append("inner join unidades on (movitem.cd_tpunid = unidades.cd_tpunid) "); // Diego - OS_ 25/08/10
                sInnerJoin.Append("left join clas_fis on (clas_fis.cd_empresa = movitem.cd_empresa)");
                sInnerJoin.Append(" and ");
                sInnerJoin.Append("(clas_fis.cd_cf = movitem.cd_cf) ");
                sInnerJoin.Append("left join icm on (icm.cd_ufnor = nf.cd_ufnor) ");
                sInnerJoin.Append("And ");
                sInnerJoin.Append("(icm.cd_aliicms = movitem.cd_aliicms) ");
                sInnerJoin.Append("left join opereve on (opereve.cd_oper = movitem.cd_oper) ");
                sInnerJoin.Append("left join tpdoc on (tpdoc.cd_tipodoc = nf.cd_tipodoc) ");
                sInnerJoin.Append("left join produto ");
                sInnerJoin.Append("on (produto.cd_empresa = movitem.cd_empresa) ");
                sInnerJoin.Append("and ");
                sInnerJoin.Append("(produto.cd_prod = movitem.cd_prod) ");
                sInnerJoin.Append("left join linhapro ");
                sInnerJoin.Append("on (linhapro.cd_empresa = produto.cd_empresa) ");
                sInnerJoin.Append("and ");
                sInnerJoin.Append("(linhapro.cd_linha = produto.cd_linha) ");
                sInnerJoin.Append("left join listaserv ");
                sInnerJoin.Append("on (listaserv.nr_lanc = linhapro.nr_lanclistaserv) ");
                sInnerJoin.Append("inner join clifor ");
                sInnerJoin.Append("on (clifor.cd_clifor = nf.cd_clifor) ");
                sInnerJoin.Append("left join cidades ");
                sInnerJoin.Append("on (cidades.nm_cidnor = clifor.nm_cidnor) ");
                sInnerJoin.Append("and ");
                sInnerJoin.Append("(cidades.cd_ufnor = clifor.cd_ufnor) ");
                sInnerJoin.Append("inner join uf on (clifor.cd_ufnor = uf.cd_uf) ");//25385
                sInnerJoin.Append("left join endentr on (endentr.cd_cliente = nf.cd_clifor) ");
                sInnerJoin.Append("and ");
                sInnerJoin.Append(" (endentr.cd_endent = nf.cd_endent) ");
                if ((objbelGeraXml.nm_Cliente == "NAVE_THERM") || (objbelGeraXml.nm_Cliente == "MOGPLAST"))
                {
                    sInnerJoin.Append("left join produto on (produto.cd_empresa = movitem.cd_empresa) ");
                    sInnerJoin.Append("And ");
                    sInnerJoin.Append("(produto.cd_prod = movitem.cd_prod)");
                }
                sInnerJoin.Append("left join transpor on (transpor.cd_trans = nf.cd_redes) ");
                #endregion

                #region Where
                sWhere.Append("Where ");
                sWhere.Append("(movitem.cd_empresa ='");
                sWhere.Append(sEmp);
                sWhere.Append("')");
                sWhere.Append(" and ");
                sWhere.Append("(nf.cd_nfseq = '");
                sWhere.Append(sNF);
                sWhere.Append("') ");
                sWhere.Append((bAgrupaCampos == false ? "Order by movitem.nr_lanc" : ""));
                #endregion

                if (bAgrupaCampos)
                {
                    sGroup.Append(Environment.NewLine + " Group by " + Environment.NewLine);
                    lCampos = lCampos.Where(c => c.bAgrupa == false).ToList();
                    for (int i = 0; i < lCampos.Count; i++)
                    {
                        CamposSelect camp = lCampos[i];
                        sGroup.Append((camp.bAgrupa == false ? camp.sCampo + ((i + 1) < lCampos.Count() ? ", " : "") + Environment.NewLine : ""));
                    }
                }
                string sNr_Lanc;
                string sql = "select max(nr_lanc) from movitem where (movitem.cd_empresa ='" +
                                                     sEmp +
                                                     "') and " +
                                                     "(movitem.cd_nfseq = '" +
                                                     sNF +
                                                     "') ";
                using (FbCommand cmd = new FbCommand(sql, Conn))
                {
                    sNr_Lanc = cmd.ExecuteScalar().ToString();
                }
                System.Globalization.Calendar bla;

                string sQueryItens = sCampos.ToString() + sInnerJoin + sWhere + (bAgrupaCampos ? sGroup.ToString() : "");

                FbCommand cmdItem = new FbCommand(sQueryItens, Conn);
                cmdItem.ExecuteNonQuery();
                FbDataReader drIItem = cmdItem.ExecuteReader();
                int iSeqItem = 0;
                dTotPis = 0;
                dTotCofins = 0;

                //ITem
                while (drIItem.Read())
                {
                    int indTot = 1;
                    //indTot = (VerificaItemEntraTotalNf(drIItem["st_servico"].ToString(),
                    //                                  drIItem["cd_oper"].ToString(),
                    //                                  drIItem["st_soma_dev_tot_nf"].ToString(),
                    //                                  drIItem["st_compoe_vl_totprod_nf"].ToString(),
                    //                                  Conn) == true ? 1 : 0);

                    //OS_25346 INICIO



                    if ((psNM_Banco.ToUpper().IndexOf("COMERCIOC") == -1) && (psNM_Banco.ToUpper().IndexOf("CERAMICAC") == -1))
                    {
                        if (drIItem["st_compoe_vl_totprod_nf"].ToString().Equals("A")) //Verifica se ambos os produtos vão entrar no total da nota
                        {
                            indTot = 1;
                        }
                        else if (drIItem["st_compoe_vl_totprod_nf"].ToString().Equals("D")) // verifica se movimenta estoque terceiro!! S - SIM / N-NÃO
                        {
                            indTot = (drIItem["ST_ESTTERC"].ToString().Equals("S") ? 1 : 0);
                        }
                        else if (drIItem["st_compoe_vl_totprod_nf"].ToString().Equals("P"))
                        {
                            indTot = (drIItem["st_tpoper"].ToString().Equals("0") ? 1 : 0);  // verifica se representa faturamento!! 0- SIM - 1 -NÃO
                        }
                        //OS_25346 INICIO - FIM 
                    }
                    else
                    {
                        indTot = 1;
                    }

                    belDet objdet = new belDet();
                    belImposto objimp = new belImposto();
                    belProd objprod = new belProd();
                    iSeqItem++;
                    objdet.Nitem = Convert.ToDecimal(iSeqItem.ToString().Trim());
                    objprod.Cprod = belUtil.TiraSimbolo(drIItem["cProd"].ToString().Trim(), "");

                    if (objbelGeraXml.nm_Cliente == "ZINCOBRIL") // OS_25787
                    {
                        objdet.tp_industrializacao = drIItem["tp_industrializacao"].ToString();
                    }
                    if (objbelGeraXml.nm_Cliente == "ESTACAHC")
                    {
                        objprod.Xprod = drIItem["qCom"].ToString() + "  " + drIItem["xProd"].ToString().Trim();
                    }
                    else
                    {
                        objprod.Xprod = drIItem["xProd"].ToString().Trim();
                    }
                    if (drIItem["NCM"].ToString() != "")
                    {
                        objprod.Ncm = ((belUtil.TiraSimbolo(drIItem["NCM"].ToString(), "")).PadRight(8, '0')).Substring(0, 8);
                    }
                    objprod.Cean = (Util.Util.IsNumeric(drIItem["cEAN"].ToString()) ? (Util.Util.ValidacEAN(drIItem["cEAN"].ToString()) ? drIItem["cEAN"].ToString() : "") : "");

                    if (!belUtil.ValidaCean13(objprod.Cean))
                    {
                        throw new Exception(string.Format("Código de Barras inválido!!{3}{3}Produto: {1}{3}Codigo: {2}{3}Codigo de barras: {0}.{3}Favor acertar o cadastro.{3}",
                                    objprod.Xprod, objprod.Cprod, objprod.Cean, Environment.NewLine));
                    }

                    objprod.Cfop = drIItem["CFOP"].ToString();
                    objprod.Ucom = belUtil.TiraSimbolo(drIItem["uCom"].ToString(), "");
                    if (objbelGeraXml.nm_Cliente.Equals("ESTACAHC"))
                    {
                        decimal dqCom = Math.Round(Convert.ToDecimal(drIItem["qCom"].ToString()) * Convert.ToDecimal(drIItem["vl_coef"].ToString()), 4);
                        objprod.Qcom = dqCom;
                    }
                    else if (objbelGeraXml.nm_Cliente.Equals("MAD_STA_RITA"))
                    {
                        decimal dqCom = Math.Round(Convert.ToDecimal(drIItem["qCom"].ToString()), 4);
                        decimal dComprimento = Math.Round(Convert.ToDecimal(drIItem["vl_comprimento"].ToString()), 4);
                        if (dComprimento == 0)
                        {
                            objprod.Qcom = dqCom;
                        }
                        else
                        {
                            objprod.Qcom = dqCom * dComprimento;
                        }
                    }
                    else
                    {
                        decimal dqCom = Math.Round(Convert.ToDecimal(drIItem["qCom"].ToString()), 4); //Claudinei - o.s. 24248 - 26/03/2010
                        objprod.Qcom = dqCom;
                    }
                    string sCasasVlUnit = LeRegWin.LeRegConfig("QtdeCasasVlUnit");
                    sCasasVlUnit = (sCasasVlUnit == "" ? "1" : sCasasVlUnit);

                    decimal dvUnCom = Math.Round(Convert.ToDecimal(drIItem["vUnCom"].ToString()), Convert.ToInt32(sCasasVlUnit)); //Claudinei - o.s. 24248 - 26/03/2010
                    objprod.Vuncom = dvUnCom;
                    ///Campo vl_totliq
                    decimal dvProd = 0;
                    decimal vl_prodDesc = 0;
                    decimal vl_desconto = 0;
                    if (objbelGeraXml.nm_Cliente == "ESTACAHC") // Diego - OS_24595
                    {
                        dvProd = Math.Round(Convert.ToDecimal(drIItem["vl_totliq"].ToString()), 2);
                    }
                    else
                    {
                        dvProd = Math.Round(Convert.ToDecimal(drIItem["vProd"].ToString()), 2); //Claudinei - o.s. 24248 - 26/03/2010
                    }
                    //if (objbelGeraXml.nm_Cliente == "TORCETEX") os_27040
                    //{
                    //    vl_prodDesc = Math.Round(dvProd * Convert.ToDecimal(drIItem["VL_COEFDESC"].ToString()), 2); //OS_25339 - DIEGO
                    //}
                    //else
                    //{
                    if (drIItem["st_desc"].ToString().Equals("U")) //25368
                    {
                        vl_prodDesc = dvProd; // Math.Round(dvProd * Convert.ToDecimal(drIItem["VL_COEF"].ToString()), 2);
                    }
                    else
                    {
                        if (objbelGeraXml.nm_Cliente == "LORENZON")
                        {

                            decimal dValorProdSemDesc;

                            if (drIItem["vl_uniprod_sem_desc"].ToString() != "0")
                            {
                                dValorProdSemDesc = Convert.ToDecimal(drIItem["vl_uniprod_sem_desc"].ToString()) * objprod.Qcom;
                            }
                            else
                            {
                                dValorProdSemDesc = dvProd;
                            }
                            vl_prodDesc = Math.Round((dValorProdSemDesc) * Convert.ToDecimal(drIItem["VL_COEF"].ToString()), 2);
                        }
                        else
                        {
                            vl_prodDesc = Math.Round(dvProd * Convert.ToDecimal(drIItem["VL_COEF"].ToString()), 2);
                        }
                    }
                    // }
                    pbIndustri = bIndustrializacao(drIItem["cd_operval"].ToString(), Conn);

                    if (VerificaNotaComSuframa(sEmp, sNF, Conn)) //NFe_2.0
                    {
                        vl_desconto = Convert.ToDecimal(drIItem["vDescSuframa"].ToString());
                    }
                    else
                    {
                        vl_desconto = dvProd - vl_prodDesc;
                    }

                    if (vl_desconto == 0)
                    {
                        vl_desconto = BuscaDescTotal(sEmp, sNF, Conn);
                    }
                    if (drIItem["st_hefrete"].ToString() == "S")
                    {
                        dvProd = 0;
                    }
                    //if (objbelGeraXml.nm_Cliente == "TORCETEX")//OS_25339 - DIEGO
                    //{
                    //    objprod.Vprod = vl_prodDesc;
                    //}
                    //else
                    {
                        objprod.Vprod = dvProd;
                    }
                    objprod.Ceantrib = objprod.Cean;
                    objprod.Utrib = belUtil.TiraSimbolo(drIItem["uTrib"].ToString(), "");
                    objprod.VOutro = Convert.ToDecimal(drIItem["vOutro"].ToString()); // NFe_2.0



                    objprod.IndTot = indTot;//Convert.ToInt16(drIItem["indTot"].ToString()); // NFe_2.0
                    if (objbelGeraXml.nm_Cliente.Equals("ESTACAHC"))
                    {
                        decimal dvqCom = Math.Round(Convert.ToDecimal(drIItem["qCom"].ToString()) * Convert.ToDecimal(drIItem["vl_coef"].ToString()), 4);
                        objprod.Qtrib = dvqCom;
                    }
                    else if (objbelGeraXml.nm_Cliente.Equals("MAD_STA_RITA"))
                    {
                        objprod.Qtrib = objprod.Qcom;
                    }
                    else
                    {
                        decimal dvqCom = Math.Round(Convert.ToDecimal(drIItem["qCom"].ToString()), 4); // o.s. 24248 - 26/03/2010
                        objprod.Qtrib = dvqCom;
                    }
                    decimal dvUnTrib = Math.Round(Convert.ToDecimal(drIItem["vUnTrib"].ToString()), Convert.ToInt32(sCasasVlUnit)); //o.s. 24248 - 26/03/2010

                    objprod.Vuntrib = dvUnTrib;
                    if (drIItem["vFrete"].ToString() != "0")
                    {
                        decimal dvFrete = Math.Round(Convert.ToDecimal(drIItem["vFrete"].ToString()), 2); // o.s. 24248 - 26/03/2010
                        objprod.Vfrete = dvFrete;
                    }
                    if (vl_desconto > 0)
                    {
                        objprod.Vdesc = vl_desconto;
                    }

                    if (objdest.Uf.Equals("EX"))
                    {
                        objprod.belDI = new List<belDI>();
                        StringBuilder sQuery = new StringBuilder();
                        sQuery.Append("select ");
                        sQuery.Append("impdecla.nr_lanc, ");
                        sQuery.Append("impdecla.cd_empresa, ");
                        sQuery.Append("coalesce(impdecla.nr_di,'') nDI, ");
                        sQuery.Append("coalesce(impdecla.dt_di,'') dDI, ");
                        sQuery.Append("coalesce(impdecla.ds_localdesemb ,'') xLocDesemb, ");
                        sQuery.Append("coalesce(impdecla.uf_desemb,'') UFDesemb, ");
                        sQuery.Append("coalesce(impdecla.dt_desemb ,'')dDesemb, ");
                        sQuery.Append("coalesce(impdecla.cd_exportador,'') cExportador ");
                        sQuery.Append("from impdecla ");
                        sQuery.Append("where impdecla.nr_lancmovitem = '" + drIItem["nr_lanc"].ToString() + "' ");
                        sQuery.Append("and impdecla.cd_empresa = '" + sEmp + "' ");

                        using (FbCommand cmd = new FbCommand(sQuery.ToString(), Conn))
                        {
                            if (Conn.State == ConnectionState.Closed)
                            {
                                Conn.Open();
                            }
                            FbDataReader dr = cmd.ExecuteReader();

                            while (dr.Read())
                            {
                                belDI objDI = new belDI();
                                objDI.nDI = dr["nDI"].ToString();
                                objDI.DDI = (dr["dDI"].ToString() != "" ? Convert.ToDateTime(dr["dDI"].ToString()) : HLP.Util.Util.GetDateServidor().Date);
                                objDI.xLocDesemb = dr["xLocDesemb"].ToString();
                                objDI.UFDesemb = dr["UFDesemb"].ToString();
                                objDI.dDesemb = (dr["dDesemb"].ToString() != "" ? Convert.ToDateTime(dr["dDesemb"].ToString()) : HLP.Util.Util.GetDateServidor().Date);
                                objDI.cExportador = dr["cExportador"].ToString();

                                sQuery = new StringBuilder();
                                sQuery.Append("select ");
                                sQuery.Append("impadica.nr_lanc, ");
                                sQuery.Append("impadica.nr_lancimpdecla,");
                                sQuery.Append("coalesce(impadica.nr_adicao,'0') nAdicao, ");
                                sQuery.Append("coalesce(impadica.nr_lanc,'0') nSeqAdic, ");
                                sQuery.Append(" coalesce(impadica.cd_fabricante,'') cFabricante, ");
                                sQuery.Append(" coalesce(impadica.vl_descdi,'0') vDescDI ");
                                sQuery.Append("from impadica ");
                                sQuery.Append("where impadica.nr_lancimpdecla = '" + dr["nr_lanc"].ToString() + "' ");
                                sQuery.Append("and impadica.cd_empresa = '" + sEmp + "' ");

                                using (FbCommand cmd2 = new FbCommand(sQuery.ToString(), Conn))
                                {
                                    FbDataReader dr2 = cmd2.ExecuteReader();
                                    objDI.adi = new List<beladi>();
                                    while (dr2.Read())
                                    {
                                        beladi objadi = new beladi();

                                        objadi.cFabricante = dr2["cFabricante"].ToString();
                                        objadi.nAdicao = Convert.ToInt32(dr2["nAdicao"].ToString());
                                        objadi.nSeqAdic = Convert.ToInt32(dr2["nSeqAdic"].ToString().Replace("0", ""));
                                        objadi.vDescDI = Convert.ToDecimal(dr2["vDescDI"].ToString().Replace(".", ","));
                                        objDI.adi.Add(objadi);
                                    }
                                }
                                objprod.belDI.Add(objDI);
                            }

                        }
                    }
                    objprod.XPed = drIItem["xPed"].ToString();
                    objprod.NItemPed = drIItem["nItemPed"].ToString();

                    objdet.belProd = objprod;

                    //Impostos

                    #region ICMS
                    belIcms objicms = new belIcms();
                    string sCST = drIItem["CST"].ToString();
                    string sSimplesNac = VerificaEmpresaSimplesNac(sEmp, Conn); // Diego - OS 24918 - 14/09/2010
                    decimal dvBC = 0;
                    decimal dvBCProp = 0; //25278
                    if (sSimplesNac == "N" || sSimplesNac == "")
                    {
                        dvBC = Math.Round(Convert.ToDecimal(drIItem["vBC"].ToString()), 2);
                        if (drIItem["vBCProp"].ToString() != "0")
                        {
                            dvBCProp = Math.Round(Convert.ToDecimal(drIItem["vBCProp"].ToString().Replace(".", ",")), 2); //25278
                        }
                    }
                    bool bPauta = drIItem["st_pauta"].ToString().Equals("N") ? false : true; //OS_25969
                    decimal dvICMS = (bPauta == false ? (drIItem["vICMS"].ToString() != "" ? Math.Round(Convert.ToDecimal(drIItem["vICMS"].ToString()), 2) : 0) : Math.Round(Convert.ToDecimal(drIItem["vl_icms_Pauta"].ToString()), 2)); //o.s. 24248 - 26/03/2010  - //OS_25969
                    decimal dvBC_pauta = Convert.ToDecimal(drIItem["vBC_Pauta"].ToString()); //OS_25969


                    //cst novas - > SUPER SIMPLES

                    if (!Util.Util.VerificaNovaST(sCST))
                    {
                        #region CST_ANTIGAS
                        switch (sCST.Substring(1, 2))
                        {
                            case "00":
                                {
                                    #region 00
                                    belIcms00 obj00 = new belIcms00();
                                    obj00.Orig = sCST.ToString().Substring(0, 1);
                                    obj00.Cst = sCST.ToString().Substring(1, 2);
                                    obj00.Modbc = "3";
                                    obj00.Vbc = (bPauta ? dvBC_pauta : dvBC);
                                    decimal dpICMS = Math.Round(Convert.ToDecimal(drIItem["pICMS"].ToString()), 2); //o.s. 24248 - 26/03/2010
                                    obj00.Picms = dpICMS;
                                    obj00.Vicms = dvICMS;
                                    objicms.belIcms00 = obj00;
                                    #endregion

                                    break;
                                }
                            case "10":
                                {
                                    #region 010
                                    belIcms10 obj10 = new belIcms10();
                                    obj10.Orig = sCST.ToString().Substring(0, 1);
                                    obj10.Cst = sCST.ToString().Substring(1, 2);
                                    obj10.Modbc = "0";
                                    obj10.Vbc = (bPauta ? dvBC_pauta : (dvBCProp == 0 ? (dvICMS == 0 ? 0 : dvBC) : dvBCProp)); // 25278
                                    decimal dpICMS = Math.Round(Convert.ToDecimal(drIItem["pICMS"].ToString()), 2);
                                    obj10.Picms = dpICMS;
                                    //dvICMS = (dvBC * dpICMS) / 100;
                                    obj10.Vicms = dvICMS;
                                    obj10.Modbcst = 4;
                                    decimal dpMVAST = Math.Round(Convert.ToDecimal(drIItem["pMVAST"].ToString()), 2);
                                    obj10.Pmvast = dpMVAST;
                                    decimal dvBCST = Math.Round(Convert.ToDecimal(drIItem["vBCST"].ToString()), 2);
                                    obj10.Vbcst = dvBCST;
                                    decimal dpICMSST = Math.Round(Convert.ToDecimal(drIItem["pICMSST"].ToString()), 2);
                                    obj10.Picmsst = dpICMSST;
                                    decimal dvICMSST = Math.Round(Convert.ToDecimal(drIItem["vICMSST"].ToString()), 2);
                                    obj10.Vicmsst = dvICMSST;
                                    objicms.belIcms10 = obj10;
                                    break;
                                    #endregion
                                }
                            case "20":
                                {
                                    #region 020
                                    belIcms20 obj20 = new belIcms20();
                                    obj20.Orig = sCST.ToString().Substring(0, 1);
                                    obj20.Cst = sCST.ToString().Substring(1, 2);
                                    obj20.Modbc = "3";
                                    decimal dpRedBC = Math.Round(Convert.ToDecimal(drIItem["pRedBC"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                    if (dpRedBC == 100)
                                    {
                                        dpRedBC = 0;
                                    }
                                    obj20.Predbc = dpRedBC;
                                    obj20.Vbc = (bPauta ? dvBC_pauta : dvBC);
                                    decimal dpICMS = Math.Round(Convert.ToDecimal(drIItem["pICMS"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                    obj20.Picms = dpICMS;
                                    obj20.Vicms = dvICMS;
                                    objicms.belIcms20 = obj20;
                                    break;
                                    #endregion
                                }
                            case "30":
                                {
                                    #region 030
                                    belIcms30 obj30 = new belIcms30();
                                    obj30.Orig = sCST.ToString().Substring(0, 1);
                                    obj30.Cst = sCST.ToString().Substring(1, 2);
                                    obj30.Modbcst = 3;
                                    decimal dpMVAST = Math.Round(Convert.ToDecimal(drIItem["pMVAST"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                    obj30.Pmvast = dpMVAST;
                                    decimal dpRedBCST = Math.Round(Convert.ToDecimal(drIItem["pRedBCST"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                    obj30.Predbcst = dpRedBCST;
                                    decimal dvBCST = Math.Round(Convert.ToDecimal(drIItem["vBCST"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                    obj30.Vbcst = dvBCST;
                                    decimal dpICMSST = Math.Round(Convert.ToDecimal(drIItem["pICMSST"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                    obj30.Picmsst = dpICMSST;
                                    decimal dvICMSST = Math.Round(Convert.ToDecimal(drIItem["vICMSST"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                    obj30.Vicmsst = dvICMSST;
                                    objicms.belIcms30 = obj30;
                                    break;
                                    #endregion
                                }
                            case "40":
                                {
                                    #region 040
                                    belIcms40 obj40 = new belIcms40();
                                    obj40.Orig = sCST.ToString().Substring(0, 1);
                                    obj40.Cst = sCST.ToString().Substring(1, 2);
                                    obj40.Vicms = dvICMS; // NFe_2.0
                                    obj40.motDesICMS = (dvICMS > 0 ? (VerificaNotaComSuframa(sEmp, sNF, Conn) == false ? 9 : 7) : 0); // NFe_2.0
                                    dvBC = (bPauta ? dvBC_pauta : 0);
                                    objicms.belIcms40 = obj40;
                                    break;
                                    #endregion
                                }
                            case "41":
                                {
                                    #region 041
                                    belIcms40 obj40 = new belIcms40();
                                    obj40.Orig = sCST.ToString().Substring(0, 1);
                                    obj40.Cst = sCST.ToString().Substring(1, 2);
                                    obj40.Vicms = dvICMS; // NFe_2.0
                                    obj40.motDesICMS = (dvICMS > 0 ? (VerificaNotaComSuframa(sEmp, sNF, Conn) == false ? 9 : 7) : 0); // NFe_2.0
                                    dvBC = (bPauta ? dvBC_pauta : 0);
                                    objicms.belIcms40 = obj40;
                                    break;
                                    #endregion
                                }
                            case "50":
                                {
                                    #region 050
                                    belIcms40 obj40 = new belIcms40();
                                    obj40.Orig = sCST.ToString().Substring(0, 1);
                                    obj40.Cst = sCST.ToString().Substring(1, 2);
                                    obj40.Vicms = dvICMS; // NFe_2.0
                                    obj40.motDesICMS = (dvICMS > 0 ? (VerificaNotaComSuframa(sEmp, sNF, Conn) == false ? 9 : 7) : 0); // NFe_2.0
                                    dvBC = (bPauta ? dvBC_pauta : 0);
                                    objicms.belIcms40 = obj40;
                                    break;
                                    #endregion
                                }
                            case "51":
                                {
                                    #region 051
                                    belIcms51 obj51 = new belIcms51();
                                    obj51.Orig = sCST.ToString().Substring(0, 1);
                                    obj51.Cst = sCST.ToString().Substring(1, 2);
                                    obj51.Modbc = "3";
                                    decimal dpRedBC = Math.Round(Convert.ToDecimal(drIItem["pRedBC"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                    if (dpRedBC == 100)
                                    {
                                        dpRedBC = 0;
                                    }
                                    obj51.Predbc = dpRedBC;
                                    obj51.Vbc = (bPauta ? dvBC_pauta : 0);// Math.Round(Convert.ToDecimal(drIItem["vBC"].ToString()), 2); // DIEGO- OS_24591 - 26/06/2010 INICIO E FIM
                                    decimal dpICMS = Math.Round(Convert.ToDecimal(drIItem["pICMS"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                    obj51.Picms = dpICMS;
                                    obj51.Vicms = dvICMS;
                                    objicms.belIcms51 = obj51;
                                    break;
                                    #endregion
                                }
                            case "60":
                                {
                                    #region 060
                                    belIcms60 obj60 = new belIcms60();
                                    obj60.Orig = sCST.ToString().Substring(0, 1);
                                    obj60.Cst = sCST.ToString().Substring(1, 2);
                                    decimal dvBCST = Math.Round(Convert.ToDecimal(drIItem["vBCST"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                    obj60.Vbcst = dvBCST;
                                    decimal dvICMSST = Math.Round(Convert.ToDecimal(drIItem["vICMSST"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                    obj60.Vicmsst = dvICMSST;
                                    objicms.belIcms60 = obj60;
                                    break;
                                    #endregion
                                }

                            case "70":
                                {
                                    #region 070
                                    belIcms70 obj70 = new belIcms70();
                                    obj70.Orig = sCST.ToString().Substring(0, 1);
                                    obj70.Cst = sCST.ToString().Substring(1, 2);
                                    obj70.Modbc = "3";
                                    decimal dpRedBC = Math.Round(Convert.ToDecimal(drIItem["pRedBC"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                    if (dpRedBC == 100)
                                    {
                                        dpRedBC = 0;
                                    }
                                    obj70.Predbc = dpRedBC;
                                    obj70.Vbc = (bPauta ? dvBC_pauta : dvBC);
                                    decimal dpICMS = Math.Round(Convert.ToDecimal(drIItem["pICMS"].ToString()), 2); // o.s. 24248 - 26/03/20103
                                    obj70.Picms = dpICMS;
                                    //dvICMS = (dvBC * dpICMS) / 100; //OS_25856

                                    obj70.Vicms = dvICMS;
                                    obj70.Modbcst = 0;
                                    decimal dpMVAST = Math.Round(Convert.ToDecimal(drIItem["pMVAST"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                    obj70.Pmvast = dpMVAST;
                                    decimal dpRedBCST = Math.Round(Convert.ToDecimal(drIItem["pRedBCST"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                    if (dpRedBCST == 100)
                                    {
                                        dpRedBCST = 0;
                                    }
                                    obj70.Predbcst = dpRedBCST;
                                    if (!drIItem["vBCST"].Equals(string.Empty))
                                    {
                                        decimal dvBCST = Math.Round(Convert.ToDecimal(drIItem["vBCST"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                        obj70.Vbcst = dvBCST;
                                    }
                                    if (!drIItem["pICMSST"].Equals(string.Empty))
                                    {
                                        decimal dpICMSST = Math.Round(Convert.ToDecimal(drIItem["pICMSST"].ToString()), 2); // o.s. 24248 - 26/03/2010
                                        obj70.Picmsst = dpICMSST;
                                    }
                                    if (!drIItem["vICMSST"].Equals(string.Empty))
                                    {
                                        decimal dvICMSST = Math.Round(Convert.ToDecimal(drIItem["vICMSST"].ToString()), 2); ;
                                        obj70.Vicmsst = dvICMSST;
                                    }
                                    objicms.belIcms70 = obj70;
                                    break;
                                    #endregion
                                }

                            case "90":
                                {
                                    #region 090
                                    belIcms90 obj90 = new belIcms90();
                                    obj90.Orig = sCST.ToString().Substring(0, 1);
                                    obj90.Cst = sCST.ToString().Substring(1, 2);
                                    obj90.Modbc = "3";
                                    dvBC = 0;
                                    obj90.Vbc = (bPauta ? dvBC_pauta : dvBC);
                                    decimal dpRedBC = Math.Round(Convert.ToDecimal(drIItem["pRedBC"].ToString()), 2); //Claudinei - o.s. 24248 - 26/03/2010
                                    dpRedBC = 0;
                                    if (dpRedBC != 0)
                                    {
                                        obj90.Predbc = dpRedBC;
                                    }
                                    decimal dpICMS = Math.Round(Convert.ToDecimal(drIItem["pICMS"].ToString()), 2); //Claudinei - o.s. 24248 - 26/03/2010
                                    dpICMS = 0;
                                    obj90.Picms = dpICMS;

                                    dvICMS = 0;
                                    obj90.Vicms = dvICMS;
                                    obj90.Modbcst = 3;
                                    if (drIItem["pMVAST"].ToString() != "0")
                                    {
                                        decimal dpMVAST = Math.Round(Convert.ToDecimal(drIItem["pMVAST"].ToString()), 2); //Claudinei - o.s. 24248 - 26/03/2010
                                        dpMVAST = 0;
                                        obj90.Pmvast = dpMVAST;
                                    }
                                    decimal dpRedBCST = Math.Round(Convert.ToDecimal(drIItem["pRedBCST"].ToString()), 2); //Claudinei - o.s. 24248 - 26/03/2010
                                    dpRedBCST = 0;
                                    if (dpRedBCST != 0)
                                    {
                                        obj90.Predbcst = dpRedBCST;
                                    }
                                    decimal dvBCST = Math.Round(Convert.ToDecimal(drIItem["vBCST"].ToString()), 2); //Claudinei - o.s. 24248 - 26/03/2010
                                    dvBCST = 0;
                                    obj90.Vbcst = dvICMS;
                                    decimal dpICMSST = Math.Round(Convert.ToDecimal(drIItem["pICMSST"].ToString()), 2); //Claudinei - o.s. 24248 - 26/03/2010
                                    dpICMSST = 0;
                                    obj90.Picmsst = dpICMSST;
                                    decimal dvICMSST = Math.Round(Convert.ToDecimal(drIItem["vICMSST"].ToString()), 2);
                                    dvICMSST = 0;
                                    obj90.Vicmsst = dvICMSST;
                                    objicms.belIcms90 = obj90;
                                    break;
                                    #endregion
                                }
                        }

                        #endregion
                    }
                    else
                    {
                        string sOrig = drIItem["Orig"].ToString();

                        #region CTS_NOVAS
                        switch ((Util.Util.RetornaSTnovaAserUsada(sCST)))
                        {
                            case "101":
                                {
                                    #region 101
                                    belICMSSN101 obj101 = new belICMSSN101();
                                    obj101.orig = sOrig;//(objdest.Uf.Equals("EX") ? "1" : "0");
                                    obj101.CSOSN = sCST.ToString();
                                    obj101.pCredSN = Math.Round(Convert.ToDecimal(drIItem["pCredSN"].ToString()), 2);//NFe_2.0
                                    obj101.vCredICMSSN = Math.Round(Convert.ToDecimal(drIItem["vCredICMSSN"].ToString()), 2); //NFe_2.0
                                    objicms.belICMSSN101 = obj101;
                                    #endregion
                                }
                                break;

                            case "102":
                                {
                                    #region 102
                                    belICMSSN102 obj102 = new belICMSSN102();
                                    obj102.orig = sOrig; //(objdest.Uf.Equals("EX") ? "1" : "0");
                                    obj102.CSOSN = sCST.ToString();
                                    objicms.belICMSSN102 = obj102;
                                    #endregion

                                }
                                break;
                            case "201":
                                {
                                    #region 201
                                    belICMSSN201 obj201 = new belICMSSN201();
                                    decimal dpRedBCST = Math.Round(Convert.ToDecimal(drIItem["pRedBCST"].ToString()), 2);
                                    decimal dpICMSST = Math.Round(Convert.ToDecimal(drIItem["pICMSST"].ToString()), 2);
                                    decimal dvICMSST = Math.Round(Convert.ToDecimal(drIItem["vICMSST"].ToString()), 2);

                                    obj201.orig = sOrig; //(objdest.Uf.Equals("EX") ? "1" : "0");
                                    obj201.CSOSN = sCST.ToString();
                                    obj201.modBCST = 3;
                                    obj201.pMVAST = Math.Round(Convert.ToDecimal(drIItem["pMVAST"].ToString()), 2);
                                    obj201.vBCST = Math.Round(Convert.ToDecimal(drIItem["vBCST"].ToString()), 2);
                                    obj201.pICMSST = dpICMSST;
                                    obj201.vICMSST = dvICMSST;
                                    obj201.pCredSN = Math.Round(Convert.ToDecimal(drIItem["pCredSN"].ToString()), 2);//NFe_2.0
                                    obj201.vCredICMSSN = Math.Round(Convert.ToDecimal(drIItem["vCredICMSSN"].ToString()), 2); //NFe_2.0                                   
                                    if (dpRedBCST != 0)
                                    {
                                        obj201.pRedBCST = dpRedBCST;
                                    }
                                    objicms.belICMSSN201 = obj201;
                                    #endregion
                                }
                                break;
                            case "500":
                                {
                                    #region 500
                                    belICMSSN500 obj500 = new belICMSSN500();
                                    obj500.orig = sOrig; //(objdest.Uf.Equals("EX") ? "1" : "0");
                                    obj500.CSOSN = sCST.ToString();
                                    decimal dvBCSTRet = Math.Round(Convert.ToDecimal(drIItem["vBCST"].ToString()), 2);
                                    decimal dvICMSSTRet = Math.Round(Convert.ToDecimal(drIItem["vICMSST"].ToString()), 2);
                                    obj500.vBCSTRet = dvBCSTRet;
                                    obj500.vICMSSTRet = dvICMSSTRet;
                                    objicms.belICMSSN500 = obj500;
                                    #endregion
                                }
                                break;
                            case "900":
                                {
                                    #region 900
                                    belICMSSN900 obj900 = new belICMSSN900();
                                    decimal dpRedBCST = Math.Round(Convert.ToDecimal(drIItem["pRedBCST"].ToString()), 2);
                                    decimal dpICMSST = Math.Round(Convert.ToDecimal(drIItem["pICMSST"].ToString()), 2);
                                    decimal dvICMSST = Math.Round(Convert.ToDecimal(drIItem["vICMSST"].ToString()), 2);
                                    decimal dvBCSTRet = Math.Round(Convert.ToDecimal(drIItem["vBCST"].ToString()), 2);
                                    decimal dvICMSSTRet = Math.Round(Convert.ToDecimal(drIItem["vICMSST"].ToString()), 2);

                                    obj900.orig = sOrig; //(objdest.Uf.Equals("EX") ? "1" : "0");
                                    obj900.CSOSN = sCST.ToString();
                                    obj900.modBC = 3;
                                    obj900.vBC = (bPauta ? dvBC_pauta : dvBC);
                                    decimal dpRedBC = Math.Round(Convert.ToDecimal(drIItem["pRedBC"].ToString()), 2);
                                    if (dpRedBC != 0)
                                    {
                                        obj900.pRedBC = dpRedBC;
                                    }
                                    obj900.vICMS = dvICMS;
                                    obj900.modBCST = 3;
                                    obj900.pMVAST = Math.Round(Convert.ToDecimal(drIItem["pMVAST"].ToString()), 2);
                                    if (dpRedBCST != 0)
                                    {
                                        obj900.pRedBCST = dpRedBCST;
                                    }
                                    decimal dvBCST = Math.Round(Convert.ToDecimal(drIItem["vBCST"].ToString()), 2);
                                    obj900.vBCST = dvBCST;
                                    obj900.pICMSST = dpICMSST;
                                    obj900.vICMSST = dvICMSST;
                                    obj900.vBCSTRet = dvBCSTRet;
                                    obj900.vICMSSTRet = dvICMSSTRet;
                                    obj900.pCredSN = Math.Round(Convert.ToDecimal(drIItem["pCredSN"].ToString()), 2);//NFe_2.0
                                    obj900.vCredICMSSN = Math.Round(Convert.ToDecimal(drIItem["vCredICMSSN"].ToString()), 2); //NFe_2.0                                    

                                    // Alteração feita por motivo de NFe para a Lorenzon

                                    obj900.modBC = null;
                                    obj900.vBC = null;
                                    obj900.pRedBC = null;
                                    obj900.pICMS = null;
                                    obj900.vICMS = null;
                                    obj900.modBCST = null;
                                    obj900.pMVAST = null;
                                    obj900.pRedBCST = null;
                                    obj900.vBCST = null;
                                    obj900.pICMSST = null;
                                    obj900.vICMSST = null;
                                    obj900.vBCSTRet = null;
                                    obj900.vICMSSTRet = null;
                                    obj900.pCredSN = null;//NFe_2.0
                                    obj900.vCredICMSSN = null; //NFe_2.0                                    

                                    objicms.belICMSSN900 = obj900;
                                    #endregion
                                }
                                break;
                        }
                        #endregion
                    }

                    if ((dvBC != 0) && (Convert.ToDecimal(drIItem["pICMS"].ToString()) != 0))
                    {
                        dTotbaseICMS += dvBC;
                        dTotValorICMS += dvICMS;
                    }
                    objimp.belIcms = objicms;
                    #endregion

                    #region IPI
                    belIpi objipi = new belIpi();
                    if (drIItem["CD_SITTRIBIPI"].ToString() == "")
                        throw new Exception("Situação Tributária do IPI está vazia na NF");

                    string sTributaIPI = drIItem["cd_sittribipi"].ToString().PadLeft(2, '0');
                    if ((sTributaIPI == "49") || (sTributaIPI == "00") || (sTributaIPI == "50") || (sTributaIPI == "99"))
                    {
                        belIpitrib objipitrib = new belIpitrib();
                        objipi.Cenq = "999";
                        objipitrib.Cst = sTributaIPI;
                        if (drIItem["ST_SUPERSIMPLES"].ToString() == "N")
                        {
                            if (!drIItem["vBC"].Equals(string.Empty))
                            {
                                if (objdest.Uf.Equals("EX"))
                                {
                                    //decimal ddvBC = Math.Round((Convert.ToDecimal(drIItem["vUnCom"]) + Convert.ToDecimal(drIItem["pIPI"])) * (Convert.ToDecimal(drIItem["qCom"])), 2);  // Diego - 24730 - 02/08/10
                                    //VL_BASEIPI
                                    decimal ddvBC = Convert.ToDecimal(drIItem["VL_BASEIPI"].ToString());
                                    objipitrib.Vbc = ddvBC;
                                }
                                else
                                {
                                    decimal ddvBC = Math.Round(Convert.ToDecimal(drIItem["vBC"].ToString()), 2); //Claudinei - o.s. 24248 - 26/03/2010

                                    if (drIItem["st_frete_entra_ipi_s"].ToString().Equals("S") && drIItem["ST_FRETE_ENTRA_ICMS_S"].ToString().Equals("N")) //OS_26866
                                    {
                                        ddvBC = ddvBC + objprod.Vfrete;
                                    }
                                    else if (drIItem["st_frete_entra_ipi_s"].ToString().Equals("N") && drIItem["ST_FRETE_ENTRA_ICMS_S"].ToString().Equals("S")) //OS_26866
                                    {
                                        ddvBC = ddvBC - objprod.Vfrete;
                                    }

                                    objipitrib.Vbc = ddvBC;
                                }
                            }
                            if (!drIItem["pIPI"].Equals(string.Empty))
                            {
                                decimal dpIPI = Math.Round(Convert.ToDecimal(drIItem["pIPI"].ToString()), 2); //Claudinei - o.s. 24248 - 26/03/2010
                                objipitrib.Pipi = dpIPI;
                            }
                            if (!drIItem["vIPI"].Equals(string.Empty))
                            {
                                decimal dvIPI = Math.Round(Convert.ToDecimal(drIItem["vIPI"].ToString()), 2); //Claudinei - o.s. 24248 - 26/03/2010
                                objipitrib.Vipi = dvIPI;
                            }

                            if ((objbelGeraXml.nm_Cliente.Equals("EMBALATEC")) && (drIItem["st_ipi"].ToString().Equals("S")))//OS_25673
                            {
                                objipitrib.Vbc = objipitrib.Vbc - objipitrib.Vipi;
                            }
                        }
                        objipi.belIpitrib = objipitrib;
                    }
                    else
                    {
                        belIpint objipint = new belIpint();
                        objipi.Cenq = "999";
                        objipint.Cst = sTributaIPI;
                        objipi.belIpint = objipint;
                    }
                    objimp.belIpi = objipi;
                    #endregion

                    #region II
                    //Imposto de importação
                    belIi objii = new belIi();
                    objii.Vbc = (objdest.Uf == "EX" ? Convert.ToDecimal(drIItem["vUnTrib"].ToString()) : 0);
                    objii.Vdespadu = 0;
                    objii.Vii = (objdest.Uf == "EX" ? Convert.ToDecimal(drIItem["VL_II"].ToString()) : 0); ;
                    objii.Viof = 0;
                    objimp.belIi = objii;
                    //Fim - II                    
                    #endregion

                    #region PIS

                    if (drIItem["CD_SITTRIBPIS"].ToString() == "")
                    {
                        throw new Exception("Situação Tributária do PIS está vazia na NF");
                    }
                    string sCst = drIItem["CD_SITTRIBPIS"].ToString().PadLeft(2, '0'); //o.s. 23672 - 10/09/2009
                    //PIS
                    belPis objpis = new belPis();
                    //opereve.st_piscofins
                    if ((drIItem["st_piscofins"].ToString() == "S") && (Convert.ToInt16(sCst) < 4))
                    {
                        belPisaliq objpisaliq = new belPisaliq();
                        objpisaliq.Cst = sCst;
                        decimal dvlBasepis = (objdest.Uf != "EX" ? Math.Round(Convert.ToDecimal(drIItem["vl_basePisCofins"].ToString()), 2) : Math.Round(Convert.ToDecimal(drIItem["vl_basepis"].ToString()), 2));
                        objpisaliq.Vbc = (objpisaliq.Cst.ToString().Equals("99") ? 0 : dvlBasepis); //24872
                        decimal dpPis = Math.Round(Convert.ToDecimal(drIItem["vl_aliqpis_suframa"].ToString()), 2);
                        objpisaliq.Ppis = (objpisaliq.Cst.ToString().Equals("99") ? 0 : dpPis);
                        decimal dvPIS = Math.Round(Convert.ToDecimal(drIItem["vl_pis"].ToString()), 2);
                        dTotPis += dvPIS;
                        objpisaliq.Vpis = (objpisaliq.Cst.ToString().Equals("99") ? 0 : dvPIS);
                        objpis.belPisaliq = objpisaliq;
                    }
                    else if (Convert.ToInt16(sCst) == 99)
                    {
                        // Diego - OS_24585 - 25/06/2010
                        sSimplesNac = VerificaEmpresaSimplesNac(sEmp, Conn);
                        belPisoutr objpisoutr = new belPisoutr();
                        objpisoutr.Cst = sCst;
                        objpisoutr.Vbc = 0;
                        objpisoutr.Ppis = 0;
                        dTotPis += 0;
                        objpisoutr.Vpis = 0;
                        objpis.belPisoutr = objpisoutr;
                        // Diego - OS_24585 - 25/06/2010 - FIM
                    }
                    else
                    {
                        belPisnt objpisnt = new belPisnt();
                        objpisnt.Cst = sCst;
                        objpis.belPisnt = objpisnt;
                    }
                    objimp.belPis = objpis;
                    //Fim PIS

                    #endregion

                    #region Cofins
                    //Cofins
                    if (drIItem["cd_sittribcof"].ToString() == "")
                    {
                        throw new Exception("Situação Tributária do COFINS está vazia na NF");
                    }
                    belCofins objcofins = new belCofins();
                    if ((drIItem["st_piscofins"].ToString() == "S") && (Convert.ToInt16(drIItem["cd_sittribcof"].ToString()) < 4))
                    {
                        belCofinsaliq objcofinsaliq = new belCofinsaliq();
                        objcofinsaliq.Cst = drIItem["cd_sittribcof"].ToString().PadLeft(2, '0');
                        decimal dvlBaseCofins = (objdest.Uf != "EX" ? Math.Round(Convert.ToDecimal(drIItem["vl_basePisCofins"].ToString()), 2) : Math.Round(Convert.ToDecimal(drIItem["vl_basecofins"].ToString()), 2)); //o.s. 24248 - 26/03/2010
                        objcofinsaliq.Vbc = dvlBaseCofins;
                        decimal dpCofins = Math.Round(Convert.ToDecimal(drIItem["vl_aliqcofins_suframa"].ToString()), 2); //o.s. 24248 - 26/03/2010
                        objcofinsaliq.Pcofins = dpCofins;
                        decimal dvCofins = Math.Round(Convert.ToDecimal(drIItem["vl_cofins"].ToString()), 2); //o.s. 24248 - 26/03/2010
                        objcofinsaliq.Vcofins = dvCofins;
                        objcofins.belCofinsaliq = objcofinsaliq;
                    }
                    else if ((drIItem["cd_sittribcof"].ToString()) == "04"
                        || (drIItem["cd_sittribcof"].ToString()) == "06"
                        || (drIItem["cd_sittribcof"].ToString()) == "07"
                        || (drIItem["cd_sittribcof"].ToString()) == "08"
                        || (drIItem["cd_sittribcof"].ToString()) == "09")
                    {
                        belCofinsnt objcofinsnt = new belCofinsnt();
                        objcofinsnt.Cst = drIItem["cd_sittribcof"].ToString().PadLeft(2, '0');
                        objcofins.belCofinsnt = objcofinsnt;
                    }
                    else //if (Convert.ToInt16(drIItem["cd_sittribcof"].ToString()) == 99)
                    {
                        belCofinsoutr objcofinsoutr = new belCofinsoutr();
                        objcofinsoutr.Cst = drIItem["cd_sittribcof"].ToString().PadLeft(2, '0');
                        objcofinsoutr.Vbc = 0;
                        objcofinsoutr.Pcofins = 0;
                        dTotCofins += 0;
                        objcofinsoutr.Vcofins = dTotCofins;
                        objcofins.belCofinsoutr = objcofinsoutr;
                    } // Diego - OS_24585 - 25/06/2010 - FIM
                    objimp.belCofins = objcofins;
                    //Fim - Cofins                    
                    #endregion

                    #region ISS
                    if ((drIItem["vAliqISS"].ToString() != "") && (drIItem["vAliqISS"].ToString() != "0"))
                    {
                        belIss objiss = new belIss();
                        decimal dvBCISS = Math.Round(Convert.ToDecimal(drIItem["vBCISS"].ToString()), 2); //o.s. 24248 - 26/03/2010
                        dTotServ += dvBCISS;
                        dTotBCISS = dTotServ;
                        objiss.Vbc = dvBCISS;
                        decimal dvAliqISS = Math.Round(Convert.ToDecimal(drIItem["vAliqISS"].ToString()), 2); //o.s. 24248 - 26/03/2010
                        objiss.Valiq = dvAliqISS;
                        decimal dvISSQN = Convert.ToDecimal(drIItem["vIssqn"].ToString());
                        dTotISS += dvISSQN;
                        dTotPisISS += Math.Round(Convert.ToDecimal(drIItem["vl_pis"].ToString()), 2); //o.s. 24248 - 26/03/2010
                        dTotCofinsISS += Math.Round(Convert.ToDecimal(drIItem["vl_cofins"].ToString()), 2);  //o.s. 24248 - 26/03/2010
                        objiss.Vissqn = dvISSQN;
                        objiss.Cmunfg = drIItem["cMunFG"].ToString();
                        if (drIItem["cListserv"].ToString() != "")
                        {
                            Int64 icListServ = Convert.ToInt64(drIItem["cListserv"].ToString());
                            objiss.Clistserv = icListServ;
                        }
                        objimp.belIss = objiss;
                    }
                    #endregion

                    #region Obs
                    //Obs
                    belInfadprod objinf = new belInfadprod();
                    string sObsItem = "";
                    if (objbelGeraXml.nm_Cliente == "HELENGE")
                    {
                        sObsItem += (BuscaContratoOBS(sEmp, drIItem["nr_lanc"].ToString(), Conn)).Replace(Environment.NewLine, "-");
                    }
                    if (objbelGeraXml.nm_Cliente == "FORMINGP")                    //Diego - O.S 24028 - 22/01/2010
                    {
                        sObsItem += BuscaSerieProd(sEmp, drIItem["nr_lanc"].ToString(), Conn);
                    }//Fim - Diego - O.S 24028 - 22/01/2010

                    if (objbelGeraXml.nm_Cliente == "JAMAICA")
                    {
                        sObsItem += BuscaInformacoesLote(drIItem["nr_lanc"].ToString(), Conn);
                    }
                    sObsItem = BuscaObsItemSimples(sEmp, drIItem["nr_lanc"].ToString(), Conn) + sObsItem; //17/11/2010

                    //if ((sBanco.ToUpper().IndexOf("COMERCIOC") == -1) && (sBanco.ToUpper().IndexOf("CERAMICAC") == -1))
                    //{
                    if (drIItem["st_imp_cdpedcli"].ToString() != "N") //Claudinei - o.s. sem - 21/12/2009
                    {

                        if (drIItem["xPed"].ToString() != "")
                        {
                            sObsItem += string.Format("SEU PEDIDO.: {0}",
                                                          drIItem["xPed"].ToString().Trim());
                        }
                        if (drIItem["nItemPed"].ToString() != "")
                        {
                            sObsItem += string.Format("ITEM NUMERO.: {0}",
                                                          drIItem["nItemPed"].ToString().Trim());
                        }

                        if ((sBanco.ToUpper().IndexOf("COMERCIOC") == -1) && (sBanco.ToUpper().IndexOf("CERAMICAC") == -1)) //Claudinei - o.s. - 25/09/2009
                        {
                            if (drIItem["nr_lote"].ToString() != "")
                            {
                                sObsItem += " " + string.Format("Lote: {0}", drIItem["nr_lote"].ToString());
                            }

                            if (drIItem["cd_prodcli"].ToString() != "")
                            {
                                if (sObsItem == "")
                                {
                                    sObsItem += string.Format("PRD_CLI.: {0}",
                                                              drIItem["cd_prodcli"].ToString().Trim());

                                }
                                else
                                {
                                    sObsItem += string.Format(" PRD_CLI.: {0}",
                                                              drIItem["cd_prodcli"].ToString().Trim());
                                }
                            }
                        }
                    }
                    // }

                    if (objbelGeraXml.nm_Cliente == "MARPA")
                    {
                        sObsItem = MontaObsItem(sEmp, drIItem["nr_lanc"].ToString(), Conn);
                        if (sObsItem != "")
                        {
                            if (drIItem["nr_lanc"].ToString() == sNr_Lanc)
                            {
                                if (drIItem["xLgr"].ToString().Trim() != "")
                                {
                                    sObsItem += string.Format(" - Endereco de Entrega.: {0} {1} - Bairro.: {2} - Cidade.: {3} - UF.: {4} ",
                                                              belUtil.TiraSimbolo(drIItem["xLgr"].ToString().Trim(), ""),
                                                              belUtil.TiraSimbolo(drIItem["nro"].ToString().Trim(), ""),
                                                              belUtil.TiraSimbolo(drIItem["xBairro"].ToString().Trim(), ""),
                                                              RetiraCaracterEsquerda(belUtil.TiraSimbolo(drIItem["cMun"].ToString().Trim(), ""), '0'),
                                                              belUtil.TiraSimbolo(drIItem["UF"].ToString().Trim(), ""));
                                }
                                if (drIItem["Desconto_Valor"].ToString() != "0")
                                {
                                    decimal dDesconto_Valor = Convert.ToDecimal(drIItem["Desconto_Valor"].ToString());
                                    decimal dDesconto_Percentual = (Convert.ToDecimal(drIItem["Desconto_Percentual"].ToString()) / 100);

                                    sObsItem += string.Format(" - Desconto.: ({0:p2}) {1:f2}",
                                                              dDesconto_Percentual,
                                                              dDesconto_Valor);


                                }
                            }
                            objinf.Infadprid = belUtil.TiraSimbolo(sObsItem.Trim(), "");
                        }
                        else
                        {
                            if (drIItem["nr_lanc"].ToString() == sNr_Lanc)
                            {
                                if (drIItem["Desconto_Valor"].ToString() != "0")
                                {
                                    decimal dDesconto_Valor = Convert.ToDecimal(drIItem["Desconto_Valor"].ToString());
                                    decimal dDesconto_Percentual = (Convert.ToDecimal(drIItem["Desconto_Percentual"].ToString()) / 100);

                                    sObsItem = string.Format("Desconto.: ({0:p2}) {1:f2}",
                                                              dDesconto_Percentual,
                                                              dDesconto_Valor);

                                    objinf.Infadprid = belUtil.TiraSimbolo(sObsItem.Trim(), "");
                                }
                            }
                        }
                    }
                    else
                    {

                        if (drIItem["nr_lanc"].ToString() == sNr_Lanc)
                        {
                            if (drIItem["xLgr"].ToString().Trim() != "")
                            {
                                sObsItem += string.Format("Endereco de Entrega.: {0}, {1} - Bairro.: {2} - Cidade.: {3} - UF.: {4} ",
                                                             drIItem["xLgr"].ToString().Trim(),
                                                             drIItem["nro"].ToString().Trim(),
                                                             drIItem["xBairro"].ToString().Trim(),
                                                             RetiraCaracterEsquerda(drIItem["cMun"].ToString().Trim(), '0'),
                                                             drIItem["UF"].ToString().Trim());

                                if (sObsItem != "")
                                {
                                    objinf.Infadprid = belUtil.TiraSimbolo(sObsItem.Trim(), "");
                                }
                            }
                            else
                            {
                                if (sObsItem != "")
                                {
                                    objinf.Infadprid = belUtil.TiraSimbolo(sObsItem.Trim(), "").Replace(Environment.NewLine, "-");
                                }
                            }
                        }
                        else
                        {
                            if (sObsItem != "")
                            {
                                objinf.Infadprid = belUtil.TiraSimbolo(sObsItem.Trim(), "");
                            }

                        }

                    }

                    if (drIItem["nr_lanc"].ToString() == sNr_Lanc)
                    {
                        if (drIItem["xLgrRedes"].ToString().Trim() != "")
                        {
                            string sTransportadora = "";

                            sTransportadora = string.Format((objbelGeraXml.nm_Cliente == "TORCETEX" ? "FRETE A PAGAR DESTINO - TRANSP . DE REDESPACHO.: " : "Redespacho.:")
                                                      + "{5} - {0} {1} - Bairro.: {2} - Cidade.: {3} - UF.: {4} ",
                                                      belUtil.TiraSimbolo(drIItem["xLgrRedes"].ToString().Trim(), ""),
                                                      belUtil.TiraSimbolo(drIItem["nroRedes"].ToString().Trim(), ""),
                                                      belUtil.TiraSimbolo(drIItem["xBairroRedes"].ToString().Trim(), ""),
                                                      RetiraCaracterEsquerda(belUtil.TiraSimbolo(drIItem["cmunRedes"].ToString().Trim(), ""), '0'),
                                                      belUtil.TiraSimbolo(drIItem["UFRedes"].ToString().Trim(), ""),
                                                      belUtil.TiraSimbolo(drIItem["redespacho"].ToString().Trim(), ""));
                            sTransportadora += ";";
                            sObsItem = sTransportadora + sObsItem;
                            objinf.Infadprid = belUtil.TiraSimbolo(sObsItem.Trim(), "-");
                        }
                    }

                    if ((objbelGeraXml.nm_Cliente.Equals("TORCETEX")))
                    {
                        if (objinf.Infadprid != null)
                        {
                            if ((objinf.Infadprid.Contains("FRETE A PAGAR DESTINO") == false))
                            {
                                objinf.Infadprid = objinf.Infadprid.Replace("REDESPACHO ", "");
                            }
                        }
                    }
                    if (objinf.Infadprid != null)
                    {
                        if (objinf.Infadprid.Length > 500)
                        {
                            objinf.Infadprid = objinf.Infadprid.Substring(0, 500);
                        }
                    }
                    //Fim - Obs                    
                    #endregion

                    objdet.belImposto = objimp;
                    objdet.belInfadprod = objinf;
                    dets.Add(objdet);
                    //Fim - Impostos
                }
            }
            catch (Exception Ex)
            {
                sExecao = " - Problemas ao tentar gerar os Itens da Nota de Seq.: " + sNF;  //OS 24738
                throw new Exception(Ex.Message + sExecao);
            }
            //finally
            //{
            //    Conn.Close();
            //}
            return dets;
        }