/// <summary>
        /// Cria um leiaute completo para a geração de um arquivo
        /// </summary>
        /// <returns></returns>
        private IImportacao GetLeiaute()
        {
            IImportacao result = null;
            string descricao = "Grupo de item (Importacao de XML)";

            //------------------------------------------------------------------
            // Pesquisar pelo leiaute, se encontrar, não precisa criar um novo
            //------------------------------------------------------------------
            IList<IImportacao> list = new Importacao().Find<IImportacao>(new Where { { "Descricao", descricao } });

            if (list.Count == 0)
            {
                result = new Importacao();
                result.Descricao = descricao;
                result.PadraoNomeArquivo = "";
                result.Codigo = "";
                result.FormatoArquivo = FormatoArquivo.XML;
                result.TagItem = "Cadastro";
                result.FindMethod = "IList<IParentModel> list = DbContext.Find<IParentModel>(model, new Where {{";
                result.FindMethod += "\"cad_GrupoItem.EGUID = @p1\",";
                result.FindMethod += "new System.Data.Generic.Parameter{";
                result.FindMethod += "ParameterName = \"@p1\",";
                result.FindMethod += "Value = value";
                result.FindMethod += "}";
                result.FindMethod += "}";
                result.FindMethod += "});";
                result.FindMethod += "if(list.Count > 0)";
                result.FindMethod += "model = list[0];";
                result.FindMethod += "return model;";
                result.ClassHeader = typeof(OpenPOS.Data.Cadastro.Item.GrupoItem);

                result.Headers.Add(new Header
                {
                    De = "EGUID",
                    Nome = "EGUID",
                    Tipo = Tipo.String,
                    Tamanho = 50
                });

                result.Headers.Add(new Header
                {
                    De = "Descricao",
                    Nome = "Descricao",
                    Tipo = Tipo.String,
                    Tamanho = 50
                });

                result.TipoArquivo = Enuns.UniBot.Leiaute.TipoArquivo.GrupoItem;

                result.Save();
            }
            else result = list[0] as Importacao;

            return result;
        }
        /// <summary>
        /// Cria um leiaute completo para a geração de um arquivo
        /// </summary>
        /// <returns></returns>
        private IImportacao GetLeiaute()
        {
            IImportacao result = null;
            string descricao = "Fornecedor (Importacao de XML)";

            //------------------------------------------------------------------
            // Pesquisar pelo leiaute, se encontrar, não precisa criar um novo
            //------------------------------------------------------------------
            IList<IImportacao> list = new Importacao().Find<IImportacao>(new Where { { "Descricao", descricao } });

            if(list.Count == 0)
            {
                #region base do leiaute
                result = new Importacao();

                result.Descricao = descricao;
                result.PadraoNomeArquivo = "";
                result.Codigo = "";
                result.FormatoArquivo = FormatoArquivo.XML;

                result.ClassHeader = typeof(OpenPOS.Data.Cadastro.Pessoa.Fornecedor);
                result.TagItem = "Cadastro";

                result.FindMethod = "IList<IParentModel> list = DbContext.Find<IParentModel>(model, new Where {{";
                result.FindMethod += "\"cad_PessoaFornecedor.EGUID = @p1\",";
                result.FindMethod += "new Parameter{";
                result.FindMethod += "ParameterName = \"@p1\",";
                result.FindMethod += "Value = value";
                result.FindMethod += "}";
                result.FindMethod += "}";
                result.FindMethod += "});";
                result.FindMethod += "if(list.Count > 0)";
                result.FindMethod += "model = list[0];";
                result.FindMethod += "return model;";
                #endregion

                #region headers
                result.Headers.Add(new Header
                {
                    Nome = "EGUID",
                    De = "EGUID",
                    Tamanho = 50,
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    Nome = "FisicaJuridica",
                    De = "fisicajuridica",
                    Tipo = Tipo.Integer,
                    Formato = "code={if((string)value==\"J\") return 1; else return 0;}"
                });

                result.Headers.Add(new Header
                {
                    Nome = "RazaoSocial",
                    De = "razaosocial",
                    Tamanho = 60,
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    Nome = "NomeFantasia",
                    De = "nomefantasia",
                    Tamanho = 60,
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    Nome = "Observacao",
                    De = "observacao",
                    Tamanho = 100,
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    Nome = "TipoPessoa",
                    De = "tipopessoa",
                    Tamanho = 30,
                    Tipo = Tipo.String
                });

                #endregion

                #region Detalhes

                #region PessoaCanalComunic
                IDetalhe detCanalComunic = new Detalhe
                {
                    ClassType = typeof(List<OpenPOS.Model.Cadastro.Pessoa.ICanalComunicacao>),
                    De = "PessoaCanalComunic",
                    Nome = "CanaisComunicacao",
                    Tamanho = 1
                };

                detCanalComunic.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.CanalComunicacao NomeContato",
                    Tipo = Tipo.String,
                    De = "NomeContato"
                });

                detCanalComunic.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.CanalComunicacao Principal",
                    De = "Principal",
                    Tipo = Tipo.Integer,
                });

                detCanalComunic.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.CanalComunicacao IdentificadorCanal",
                    Tipo = Tipo.String,
                    De = "IdentificadorCanal"
                });

                detCanalComunic.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.CanalComunicacao TipoCanal",
                    Tipo = Tipo.String,
                    De = "TipoCanal"
                });
                #endregion

                #region PessoaEnd
                IDetalhe detEndereco = new Detalhe
                {
                    ClassType = typeof(OpenPOS.Data.Cadastro.Pessoa.Endereco),
                    De = "PessoaEnd",
                    Nome = "Enderecos",
                    Tamanho = 1
                };

                detEndereco.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "Numero",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Endereco Numero",
                    De = "Numero",
                    Tipo = Tipo.Integer
                });

                detEndereco.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "Complemento",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Endereco Complemento",
                    Tipo = Tipo.String,
                    De = "Complemento"
                });

                detEndereco.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Endereco CaixaPostal",
                    Tipo = Tipo.String,
                    De = "CaixaPostal"
                });

                string formato = "code={CEP cep = value.ToString();";
                formato += "Model.Cadastro.Endereco.IEndereco model = new Data.Cadastro.Endereco.Endereco();";
                formato += "IList<Model.Cadastro.Endereco.IEndereco> list = model.Find<Model.Cadastro.Endereco.IEndereco>(new Where {";
                formato += "{";
                formato += "    \"CEP = @p1\",";
                formato += "    new System.Data.Generic.Parameter {";
                formato += "        ParameterName = \"@p1\",";
                formato += "        Value = cep}";
                formato += "}});";
                formato += "if(list.Count > 0){";
                formato += "    model = list[0];}";
                formato += "model.CEP = cep;";
                formato += "return model;}";

                detEndereco.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Endereco Endereco",
                    Tipo = Tipo.String,
                    De = "GUIDendereco",
                    Formato = formato
                });

                detEndereco.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "Principal",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Endereco Principal",
                    Tipo = Tipo.Boolean,
                });
                #endregion

                #region  PessoaFisica
                IDetalhe detFisica = new Detalhe
                {
                    ClassType = typeof(OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica),
                    De = "PessoaFisica",
                    Nome = "Fisica",
                    Tamanho = 1
                };

                detFisica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "cpf",
                    Nome = "OpenPos.Data.Cadastro.Pessoa.Fisica.Fisica CPF",
                    Tipo = Tipo.String,
                    De = "cpf"
                });

                detFisica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "rg",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica RG",
                    Tipo = Tipo.String,
                    De = "RG"
                });

                detFisica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica RGEmissao",
                    Tipo = Tipo.DateTime,
                    De = "RGEmissao"
                });

                detFisica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica RGOrgao",
                    Tipo = Tipo.String,
                    De = "RGOrgao"
                });

                detFisica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica RGEstado",
                    Tipo = Tipo.String,
                    De = "RGEstado"
                });

                detFisica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica RGTipoVisto",
                    Tipo = Tipo.String,
                    De = "RGTipoVisto",
                });

                detFisica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica Sexo",
                    Tipo = Tipo.Integer,
                    De = "Sexo"
                });

                detFisica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica EstadoCivil",
                    Tipo = Tipo.Integer,
                    De = "EstadoCivil"
                });

                detFisica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica DataNascimento",
                    Tipo = Tipo.DateTime,
                    De = "DataNascimento"
                });

                detFisica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica PaiNome",
                    Tipo = Tipo.String,
                    De = "PaiNome"
                });

                detFisica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica MaeNome",
                    Tipo = Tipo.String,
                    De = "MaeNome"
                });

                #endregion

                #region PessoaJuridica
                IDetalhe detJuridica = new Detalhe
                {
                    ClassType = typeof(OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica),
                    De = "PessoaJuridica",
                    Nome = "Juridica",
                    Tamanho = 1
                };

                detJuridica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "cnpj",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica CNPJ",
                    Tipo = Tipo.String,
                    De = "cnpj"
                });

                detJuridica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica ISuf",
                    Tipo = Tipo.String,
                    De = "ISuf"
                });

                detJuridica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica IM",
                    Tipo = Tipo.String,
                    De = "IM"
                });

                detJuridica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica DataAbertura",
                    Tipo = Tipo.DateTime,
                    De = "DataAbertura"
                });

                detJuridica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = String.Format("{0} {1}.RamoAtividade", typeof(Data.Cadastro.Pessoa.Juridica.Juridica),
                                                                  typeof(RamoAtividade)),
                    Tipo = Tipo.String,
                    De = "RamoAtividade"
                });

                detJuridica.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "IE",
                    Nome = "OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica IE",
                    Tipo = Tipo.String,
                    De = "IE"
                });

                result.Detalhes.Add(detCanalComunic);
                result.Detalhes.Add(detEndereco);
                result.Detalhes.Add(detFisica);
                result.Detalhes.Add(detJuridica);
                #endregion

                #endregion

                result.TipoArquivo = Enuns.UniBot.Leiaute.TipoArquivo.Fornecedor;

                result.Save();
            }
            else
                result = list[0] as IImportacao;

            return result;
        }
        /// <summary>
        /// Cria o leiaute completo para a geração de um arquivo
        /// </summary>
        /// <returns></returns>
        private IImportacao GetLeiaute()
        {
            IImportacao result = null;

            string descricao = "Analise de Crédito(Importação de XML)";

            IList<IImportacao> list = new Importacao().Find<IImportacao>(new Where { { "Descricao", descricao } });

            if (list.Count == 0)
            {
                #region Base do leiaute
                result = new Importacao();
                result.Descricao = descricao;
                result.PadraoNomeArquivo = "";
                result.Codigo = "";
                result.FormatoArquivo = FormatoArquivo.XML;

                result.ClassHeader = typeof(OpenPOS.Data.Cadastro.Pessoa.Cliente);
                result.TagItem = "Analise";

                result.FindMethod = "IList<IParentModel> list = DbContext.Find<IParentModel>(model, new Where {{";
                result.FindMethod += "\"cad_PessoaCliente.EGUID = @p1\",";
                result.FindMethod += "new Parameter{";
                result.FindMethod += "ParameterName = \"@p1\",";
                result.FindMethod += "Value = value";
                result.FindMethod += "}";
                result.FindMethod += "}";
                result.FindMethod += "});";
                result.FindMethod += "if(list.Count > 0)";
                result.FindMethod += "model = list[0];";
                result.FindMethod += "return model;";
                #endregion

                #region Headers
                result.Headers.Add(new Header
                {
                    Nome = "EGUID",
                    De = "EGUID",
                    Tamanho = 50,
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    Nome = "Situacao",
                    De = "Situacao",
                    Tipo = Tipo.Integer
                });

                result.Headers.Add(new Header
                {
                    Nome = "ValorLimiteCredto",
                    De = "LimiteCredito",
                    Tipo = Tipo.Numeric
                });

                result.Headers.Add(new Header
                {
                    Nome = "ValorDocumentoAberto",
                    De = "ValorEmAberto",
                    Tipo = Tipo.Numeric
                });
                #endregion

                result.TipoArquivo = Enuns.UniBot.Leiaute.TipoArquivo.Cliente;
                result.Save();
            }
            else
                result = list[0] as IImportacao;

            return result;
        }
        /// <summary>
        /// Cria um leiaute completo para a geração de um arquivo
        /// </summary>
        /// <returns></returns>
        private IImportacao GetLeiaute()
        {
            IImportacao result = null;
            string descricao = "Produto (Importacao de XML)";

            //------------------------------------------------------------------
            // Pesquisar pelo leiaute, se encontrar, não precisa criar um novo
            //------------------------------------------------------------------
            IList<IImportacao> list = new Importacao().Find<IImportacao>(new Where { { "Descricao", descricao } });

            if (list.Count == 0)
            {
                #region base do leiaute
                result = new Importacao();

                result.Descricao = descricao;
                result.PadraoNomeArquivo = "";
                result.Codigo = "";
                result.FormatoArquivo = FormatoArquivo.XML;
                result.TagItem = "Cadastro";
                result.FindMethod = "IList<IParentModel> list = DbContext.Find<IParentModel>(model, new Where {{";
                result.FindMethod += "\"cad_Item.EGUID = @p1\",";
                result.FindMethod += "new System.Data.Generic.Parameter{";
                result.FindMethod += "ParameterName = \"@p1\",";
                result.FindMethod += "Value = value";
                result.FindMethod += "}";
                result.FindMethod += "}";
                result.FindMethod += "});";
                result.FindMethod += "if(list.Count > 0)";
                result.FindMethod += "model = list[0];";
                result.FindMethod += "return model;";
                result.ClassHeader = typeof(OpenPOS.Data.Cadastro.Item.Produto.Acabado);
                #endregion

                #region Headers
                result.Headers.Add(new Header
                {
                    De = "EGUID",
                    Tamanho = 50,
                    Nome = "EGUID"
                });

                string formatoGrupoItem = "code={";
                formatoGrupoItem += "Model.Cadastro.Item.IGrupoItem model = new Data.Cadastro.Item.GrupoItem();";
                formatoGrupoItem += "IList<Model.Cadastro.Item.IGrupoItem> list = model.Find<Model.Cadastro.Item.IGrupoItem>(new Where {";
                formatoGrupoItem += "{";
                formatoGrupoItem += "    \"cad_GrupoItem.EGUID = @p1\",";
                formatoGrupoItem += "    new System.Data.Generic.Parameter {";
                formatoGrupoItem += "        ParameterName = \"@p1\",";
                formatoGrupoItem += "        Value = value}";
                formatoGrupoItem += "}});";
                formatoGrupoItem += "if(list.Count > 0)";
                formatoGrupoItem += "    model = list[0];";
                formatoGrupoItem += "return model;}";

                result.Headers.Add(new Header
                {
                    De = "GUIDGrupoItem",
                    Tamanho = 36,
                    Nome = "OpenPOS.Data.Cadastro.Item.ItemBase GrupoItem",
                    Formato = formatoGrupoItem
                });

                string formatoNCM = "code={ value = Unimake.Format.NCM(value.ToString());";
                formatoNCM += "Model.Cadastro.INCM model = new Data.Cadastro.NCM();";
                formatoNCM += "IList<Model.Cadastro.INCM> list = model.Find<Model.Cadastro.INCM>(new Where {";
                formatoNCM += "{";
                formatoNCM += "    \"NCM = @p1\",";
                formatoNCM += "    new System.Data.Generic.Parameter {";
                formatoNCM += "        ParameterName = \"@p1\",";
                formatoNCM += "        Value = value }";
                formatoNCM += "}});";
                formatoNCM += "model.NCM = value.ToString();";
                formatoNCM += "if(list.Count > 0)";
                formatoNCM += "    model = list[0];";
                formatoNCM += "return model;}";

                result.Headers.Add(new Header
                {
                    De = "GUIDNCM",
                    Tamanho = 36,
                    Nome = "OpenPOS.Data.Abstract.Cadastro.Item.Produto.ProdutoBase NCM",
                    Formato = formatoNCM
                });

                result.Headers.Add(new Header
                {
                    De = "IndArrTrunc",
                    Tamanho = 1,
                    Nome = "OpenPOS.Data.Abstract.Cadastro.Item.Produto.ProdutoBase IndicadorTruncamento",
                    Tipo = Tipo.String,
                });

                result.Headers.Add(new Header
                {
                    De = "IndProdProTerc",
                    Tamanho = 1,
                    Nome = "OpenPOS.Data.Abstract.Cadastro.Item.Produto.ProdutoBase IndicadorProducao",
                    Tipo = Tipo.String,
                });

                result.Headers.Add(new Header
                {
                    De = "Descricao",
                    Tamanho = 50,
                    Nome = "Descricao",
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    De = "TipoItem",
                    Tamanho = 30,
                    Nome = "TipoItem",
                    Tipo = Tipo.String
                });

                string formatoFabricante = "code={";
                formatoFabricante += "Model.Cadastro.Pessoa.IFabricante model = new Data.Cadastro.Pessoa.Fabricante();";
                formatoFabricante += "IList<Model.Cadastro.Pessoa.IFabricante> list = model.Find<Model.Cadastro.Pessoa.IFabricante>(new Where {";
                formatoFabricante += "{";
                formatoFabricante += "    \"cad_PessoaFabricante.EGUID = @p1\",";
                formatoFabricante += "    new System.Data.Generic.Parameter {";
                formatoFabricante += "        ParameterName = \"@p1\",";
                formatoFabricante += "        Value = value}";
                formatoFabricante += "}});";
                formatoFabricante += "if(list.Count > 0)";
                formatoFabricante += "    model = list[0];";
                formatoFabricante += "return model;}";

                result.Headers.Add(new Header
                {
                    De = "GUIDFabricante",
                    Nome = "OpenPOS.Data.Abstract.Cadastro.Item.Produto.AcabadoBase Fabricante",
                    Tamanho = 36,
                    Formato = formatoFabricante
                });

                string formatoUnidade = "code={";
                formatoUnidade += "Model.Cadastro.IUnidade model = new Data.Cadastro.Unidade();";
                formatoUnidade += "IList<Model.Cadastro.IUnidade> list = model.Find<Model.Cadastro.IUnidade>(new Where {";
                formatoUnidade += "{";
                formatoUnidade += "    \"Prefixo = @p1\",";
                formatoUnidade += "    new System.Data.Generic.Parameter {";
                formatoUnidade += "        ParameterName = \"@p1\",";
                formatoUnidade += "        Value = value}";
                formatoUnidade += "}});";
                formatoUnidade += "if(list.Count > 0)";
                formatoUnidade += "    model = list[0];";
                formatoUnidade += "return model;}";

                result.Headers.Add(new Header
                {
                    De = "GUIDUnidade",
                    Nome = "OpenPOS.Data.Abstract.Cadastro.Item.Produto.ProdutoBase Unidade",
                    Tamanho = 36,
                    Formato = formatoUnidade
                });

                #endregion

                #region Detalhe

                #region Codigo de barras
                IDetalhe detCodBarras = new Detalhe()
                {
                    ClassType = typeof(IList<Model.Cadastro.Item.ICodigoBarra>),
                    De = "Barra",
                    Nome = "CodigosBarras",
                    Tamanho = 1
                };

                detCodBarras.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Item.CodigoBarra Tipo",
                    De = "Tipo",
                    Tipo = Tipo.Integer
                });

                detCodBarras.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "Codigo",
                    Nome = "OpenPOS.Data.Cadastro.Item.CodigoBarra Codigo",
                    De = "Codigo",
                    Tipo = Tipo.String
                });

                detCodBarras.DetalhesXML.Add(new DetalheXML
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.Item.CodigoBarra Principal",
                    De = "Principal",
                    Tipo = Tipo.Boolean
                });
                #endregion

                result.Detalhes.Add(detCodBarras);

                #endregion

                result.TipoArquivo = Enuns.UniBot.Leiaute.TipoArquivo.Produto;

                result.Save();
            }
            else
                result = list[0] as IImportacao;

            return result;
        }
        /// <summary>
        /// Cria um leiaute completo para a geração de um arquivo
        /// </summary>
        /// <returns></returns>
        private IImportacao GetLeiaute()
        {
            IImportacao result = null;
            string descricao = "Movimentacao Base (Importacao)";

            //------------------------------------------------------------------
            // Pesquisar pelo leiaute, se encontrar, não precisa criar um novo
            //------------------------------------------------------------------
            IList<IImportacao> list = new Importacao().Find<IImportacao>(new Where { { "Descricao", descricao } });

            if(list.Count == 0)
            {
                #region base do leiaute
                result = new Importacao();

                result.Descricao = descricao;
                result.PadraoNomeArquivo = "";
                result.Codigo = "";

                result.ClassHeader = typeof(Data.Faturamento.Lancamento.Movimento.PreVenda.PreVenda);
                result.ClassDetalhe = typeof(Item);
                result.PropriedadeDetalhe = "Itens";
                #endregion

                #region headers
                result.Headers.Add(new Header
                {
                    De = "1",
                    Tamanho = 36,
                    Nome = "GUID"
                });

                result.Headers.Add(new Header
                {
                    De = (result.Headers[result.Headers.Count - 1].Ate + 1).ToString(),
                    Tamanho = 20,
                    Nome = "EGUID"
                });

                result.Headers.Add(new Header
                {
                    De = (result.Headers[result.Headers.Count - 1].Ate + 1).ToString(),
                    Tamanho = 1,
                    Nome = "Tipo"
                });

                result.Headers.Add(new Header
                {
                    De = (result.Headers[result.Headers.Count - 1].Ate + 1).ToString(),
                    Tamanho = 1,
                    Nome = "Status"
                });

                result.Headers.Add(new Header
                {
                    De = (result.Headers[result.Headers.Count - 1].Ate + 1).ToString(),
                    Tamanho = 10,
                    Nome = "DataEmissao",
                    Tipo = Enuns.UniBot.Tipo.Date
                });
                #endregion

                #region Detalhes
                result.Detalhes.Add(new Detalhe
                {
                    De = "1",
                    Tamanho = 36,
                    Nome = ""

                });

                result.Detalhes.Add(new Detalhe
                {
                    De = (result.Detalhes[result.Detalhes.Count - 1].Ate + 1).ToString(),
                    Tamanho = 36,
                    Nome = "OpenPOS.Data.Cadastro.Item.Produto.Acabado ItemMovimentado.GUID"
                });

                result.Detalhes.Add(new Detalhe
                {
                    De = (result.Detalhes[result.Detalhes.Count - 1].Ate + 1).ToString(),
                    Tamanho = 20,
                    Nome = "OpenPOS.Data.Cadastro.Item.Produto.Acabado ItemMovimentado.EGUID"
                });

                result.Detalhes.Add(new Detalhe
                {
                    De = (result.Detalhes[result.Detalhes.Count - 1].Ate + 1).ToString(),
                    Tamanho = 50,
                    Nome = "OpenPOS.Data.Cadastro.Item.Produto.Acabado ItemMovimentado.Descricao"
                });

                result.Detalhes.Add(new Detalhe
                {
                    De = (result.Detalhes[result.Detalhes.Count - 1].Ate + 1).ToString(),
                    Tamanho = 10,
                    Nome = "Quantidade",
                    Tipo = Enuns.UniBot.Tipo.Numeric
                });

                result.Detalhes.Add(new Detalhe
                {
                    De = (result.Detalhes[result.Detalhes.Count - 1].Ate + 1).ToString(),
                    Tamanho = 10,
                    Nome = "ValorUnitarioLiquido",
                    Tipo = Enuns.UniBot.Tipo.Currency
                });
                #endregion

                result.TipoArquivo = Enuns.UniBot.Leiaute.TipoArquivo.PreVenda;

                result.Save();
            }
            else
                result = list[0] as IImportacao;

            return result;
        }
Example #6
0
        /// <summary>
        /// Retorna o leiaute da tabela de preços
        /// </summary>
        /// <returns></returns>
        private IImportacao GetLeiauteTabelaPrecos()
        {
            IImportacao result = null;
            string descricao = "Tabela de Preços(Importacao)";

            //------------------------------------------------------------------
            // Pesquisar pelo leiaute, se encontrar, não precisa criar um novo
            //------------------------------------------------------------------
            IList<IImportacao> list = new Importacao().Find<IImportacao>(new Where { { "Descricao", descricao } });

            if(list.Count == 0)
            {
                #region Dados
                #region base do leiaute
                result = new Importacao();

                result.Descricao = descricao;
                result.PadraoNomeArquivo = "";
                result.Codigo = "";
                result.FormatoArquivo = FormatoArquivo.XML;

                result.ClassHeader = typeof(OpenPOS.Data.Cadastro.TabelaPreco.TabelaPreco);
                result.TagItem = "Cadastro";

                result.FindMethod = "IList<IParentModel> list = DbContext.Find<IParentModel>(model, new Where {{";
                result.FindMethod += "\"cad_TabelaPreco.EGUID = @p1\",";
                result.FindMethod += "new Parameter{";
                result.FindMethod += "ParameterName = \"@p1\",";
                result.FindMethod += "Value = value";
                result.FindMethod += "}";
                result.FindMethod += "}";
                result.FindMethod += "});";
                result.FindMethod += "if(list.Count > 0)";
                result.FindMethod += "model = list[0];";
                result.FindMethod += "return model;";
                #endregion

                #region Header

                result.Headers.Add(new Header()
                {
                    Nome = "EGUID",
                    De = "EGUID",
                    Tamanho = 100,
                    Tipo = Tipo.String
                });
                result.Headers.Add(new Header()
                {
                    Nome = "Descricao",
                    De = "Descricao",
                    Tamanho = 100,
                    Tipo = Tipo.String
                });
                result.Headers.Add(new Header()
                {
                    Nome = "ValidadeInicial",
                    De = "ValidadeInicial",
                    Tipo = Tipo.Date
                });
                result.Headers.Add(new Header()
                {
                    Nome = "ValidadeFinal",
                    De = "ValidadeFinal",
                    Tipo = Tipo.Date
                });
                #endregion

                #region Detalhe

                IDetalhe detalhe = new Detalhe()
                  {
                      ClassType = typeof(List<OpenPOS.Model.Cadastro.TabelaPreco.IItem>),
                      De = "Precos",
                      Nome = "Itens",
                  };

                string formato = "code={EGUID eguid = value.ToString();";
                formato += "OpenPOS.Model.Cadastro.Item.Produto.IAcabado model = new OpenPOS.Data.Cadastro.Item.Produto.Acabado();";
                formato += "IList<OpenPOS.Model.Cadastro.Item.Produto.IAcabado> list = DbContext.Find<OpenPOS.Model.Cadastro.Item.Produto.IAcabado>(model, new Where {{";
                formato += "\"cad_Item.EGUID = @p1\",";
                formato += "new Parameter{";
                formato += "ParameterName = \"@p1\",";
                formato += "Value = eguid";
                formato += "}";
                formato += "}";
                formato += "});";
                formato += "if(list.Count > 0)";
                formato += "model = list[0];";
                formato += "return (IParentModel)model;}";

                detalhe.DetalhesXML.Add(new DetalheXML()
                {
                    Tag = "",
                    Nome = "OpenPOS.Data.Cadastro.TabelaPreco.Item Item",
                    Tipo = Tipo.String,
                    De = "GUIDItem",
                    Formato = formato
                });

                detalhe.DetalhesXML.Add(new DetalheXML()
                {
                    Tag = "Preco",
                    Nome = "OpenPOS.Data.Cadastro.TabelaPreco.Item Preco",
                    Tipo = Tipo.Currency,
                    De = "Preco"
                });

                detalhe.DetalhesXML.Add(new DetalheXML()
                {
                    Tag = "SituacaoTributaria",
                    Nome = "OpenPOS.Data.Cadastro.TabelaPreco.Item SituacaoTributaria",
                    Tipo = Tipo.Integer,
                    De = "SituacaoTributaria"
                });

                #endregion

                #endregion

                result.TipoArquivo = Enuns.UniBot.Leiaute.TipoArquivo.TabelaPreco;
                result.Detalhes.Add(detalhe);
                result.Save();
            }
            else
                result = list[0] as IImportacao;

            return result;
        }
        /// <summary>
        /// Cria um leiaute completo para a geração de um arquivo
        /// </summary>
        /// <returns></returns>
        private IImportacao GetLeiaute()
        {
            IImportacao result = null;
            string descricao = "Arvore de produto (Importacao de XML)";

            //------------------------------------------------------------------
            // Pesquisar pelo leiaute, se encontrar, não precisa criar um novo
            //------------------------------------------------------------------
            IList<IImportacao> list = new Importacao().Find<IImportacao>(new Where { { "Descricao", descricao } });

            if (list.Count == 0)
            {
                #region base do leiaute
                result = new Importacao();

                result.Descricao = descricao;
                result.PadraoNomeArquivo = "";
                result.Codigo = "";
                result.FormatoArquivo = FormatoArquivo.XML;
                result.TagItem = "Cadastro";
                result.FindMethod = "IList<IParentModel> list = DbContext.Find<IParentModel>(model, new Where {{";
                result.FindMethod += "\"cad_Item.EGUID = @p1\",";
                result.FindMethod += "new System.Data.Generic.Parameter{";
                result.FindMethod += "ParameterName = \"@p1\",";
                result.FindMethod += "Value = value";
                result.FindMethod += "}";
                result.FindMethod += "}";
                result.FindMethod += "});";
                result.FindMethod += "if(list.Count > 0)";
                result.FindMethod += "model = list[0];";
                result.FindMethod += "return model;";
                result.ClassHeader = typeof(OpenPOS.Data.Cadastro.Item.Produto.Acabado);
                #endregion

                #region Headers
                result.Headers.Add(new Header
                {
                    De = "EGUID",
                    Tamanho = 50,
                    Nome = "EGUID"
                });
                #endregion

                #region Detalhe

                #region Arvore de produtos
                IDetalhe detProdArv = new Detalhe()
                {
                    ClassType = typeof(List<Model.Cadastro.Item.Produto.IProdutoArvore>),
                    De = "Composicao",
                    Nome = "Arvore",
                    Tamanho = 1
                };

                string formato = "code={OpenPOS.EGUID eguid = value.ToString();";
                formato += "Model.Cadastro.Item.Produto.IProduto model = Data.Abstract.Cadastro.Item.ItemBase.Create(eguid, false) as Model.Cadastro.Item.Produto.IProduto;";
                formato += "return model;}";

                detProdArv.DetalhesXML.Add(new DetalheXML
                {
                    Nome = "OpenPOS.Data.Cadastro.Item.Produto.Arvore.ProdutoArvore Produto",
                    De = "EGUID",
                    Formato = formato
                });

                detProdArv.DetalhesXML.Add(new DetalheXML
                {
                    Nome = "OpenPOS.Data.Cadastro.Item.Produto.Arvore.ProdutoArvore Quantidade",
                    De = "Quantidade"
                });
                #endregion

                result.Detalhes.Add(detProdArv);

                #endregion

                result.TipoArquivo = Enuns.UniBot.Leiaute.TipoArquivo.ArvoreProduto;

                result.Save();
            }
            else
                result = list[0] as IImportacao;

            return result;
        }
        /// <summary>
        /// Cria um leiaute completo para a geração de um arquivo
        /// </summary>
        /// <returns></returns>
        private IImportacao GetLeiaute()
        {
            IImportacao result = null;
            string descricao = "Produto (Importacao)";

            //------------------------------------------------------------------
            // Pesquisar pelo leiaute, se encontrar, não precisa criar um novo
            //------------------------------------------------------------------
            IList<IImportacao> list = new Importacao().Find<IImportacao>(new Where { { "Descricao", descricao } });

            if(list.Count == 0)
            {
                #region base do leiaute
                result = new Importacao();

                result.Descricao = descricao;
                result.PadraoNomeArquivo = "";
                result.Codigo = "";

                result.ClassHeader = typeof(Acabado);
                #endregion

                #region headers
                result.Headers.Add(new Header
                {
                    De = "1",
                    Tamanho = 36,
                    Nome = "GUID"
                });

                result.Headers.Add(new Header
                {
                    De = (result.Headers[result.Headers.Count - 1].Ate + 1).ToString(),
                    Tamanho = 20,
                    Nome = "EGUID"
                });

                result.Headers.Add(new Header
                {
                    De = (result.Headers[result.Headers.Count - 1].Ate + 1).ToString(),
                    Tamanho = 36,
                    Nome = String.Format("{0} {1}.{2}", typeof(Data.Cadastro.Item.GrupoItem), "GrupoItem", "GUID")
                });

                result.Headers.Add(new Header
                {
                    De = (result.Headers[result.Headers.Count - 1].Ate + 1).ToString(),
                    Tamanho = 36,
                    Nome = String.Format("{0} {1}.{2}", typeof(NCM), "NCM", "GUID")
                });

                result.Headers.Add(new Header
                {
                    De = (result.Headers[result.Headers.Count - 1].Ate + 1).ToString(),
                    Tamanho = 1,
                    Nome = "IndicadorArrTrunc"
                });

                result.Headers.Add(new Header
                {
                    De = (result.Headers[result.Headers.Count - 1].Ate + 1).ToString(),
                    Tamanho = 1,
                    Nome = "IndicadorProdProTerc"
                });

                result.Headers.Add(new Header
                {
                    De = (result.Headers[result.Headers.Count - 1].Ate + 1).ToString(),
                    Tamanho = 50,
                    Nome = "Descricao"
                });
                #endregion

                result.TipoArquivo = Enuns.UniBot.Leiaute.TipoArquivo.Produto;

                result.Save();
            }
            else
                result = list[0] as IImportacao;

            return result;
        }
        /// <summary>
        /// Cria um leiaute completo para a geração de um arquivo
        /// </summary>
        /// <returns></returns>
        private IImportacao GetLeiaute()
        {
            IImportacao result = null;
            string descricao = "Usuario (Importacao de XML)";

            //------------------------------------------------------------------
            // Pesquisar pelo leiaute, se encontrar, não precisa criar um novo
            //------------------------------------------------------------------
            IList<IImportacao> list = new Importacao().Find<IImportacao>(new Where { { "Descricao", descricao } });

            if(list.Count == 0)
            {
                #region base do leiaute
                result = new Importacao();

                result.Descricao = descricao;
                result.PadraoNomeArquivo = "";
                result.Codigo = "";
                result.FormatoArquivo = FormatoArquivo.XML;

                result.ClassHeader = typeof(OpenPOS.Data.Cadastro.Pessoa.Usuario);
                result.TagItem = "Cadastro";

                result.FindMethod = "IList<IParentModel> list = DbContext.Find<IParentModel>(model, new Where {{";
                result.FindMethod += "\"cad_PessoaUsuario.EGUID = @p1\",";
                result.FindMethod += "new Parameter{";
                result.FindMethod += "ParameterName = \"@p1\",";
                result.FindMethod += "Value = value";
                result.FindMethod += "}";
                result.FindMethod += "}";
                result.FindMethod += "});";
                result.FindMethod += "if(list.Count > 0)";
                result.FindMethod += "model = list[0];";
                result.FindMethod += "return model;";
                #endregion

                #region headers
                result.Headers.Add(new Header
                {
                    Nome = "EGUID",
                    De = "EGUID",
                    Tamanho = 50,
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    Nome = "FisicaJuridica",
                    De = "FisicaJuridica",
                    Tipo = Tipo.Integer,
                    Formato = "code={if((string)value==\"J\") return 1; else return 0;}"
                });

                result.Headers.Add(new Header
                {
                    Nome = "RazaoSocial",
                    De = "RazaoSocial",
                    Tamanho = 60,
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    Nome = "NomeFantasia",
                    De = "NomeFantasia",
                    Tamanho = 60,
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    Nome = "Observacao",
                    De = "Observacao",
                    Tamanho = 100,
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    Nome = "TipoPessoa",
                    De = "TipoPessoa",
                    Tamanho = 30,
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    Nome = "NomeLogin",
                    De = "NomeLogin",
                    Tamanho = 30,
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    Nome = "Senha",
                    De = "Senha",
                    Tamanho = 100,
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    Nome = "SenhaAlteracao",
                    De = "senhaalteracao",
                    Tamanho = 20,
                    Tipo = Tipo.DateTime
                });

                result.Headers.Add(new Header
                {
                    Nome = "MultiploLogin",
                    De = "multiplologin",
                    Tamanho = 1,
                    Tipo = Tipo.Boolean
                });

                result.Headers.Add(new Header
                {
                    Nome = "Logado",
                    De = "logado",
                    Tamanho = 1,
                    Tipo = Tipo.Boolean
                });

                IDetalhe detalheTipoUsuario = new Detalhe
                {
                    ClassType = typeof(List<OpenPOS.Model.Cadastro.ITipoUsuario>),
                    De = "TipoUsuario",
                    Nome = "TiposUsuarios",
                    Tamanho = 1
                };

                string formatoTipo = "code={ GUID tipoUsuario = null;";
                formatoTipo += "if ((string)value == \"9\")";
                formatoTipo += "   tipoUsuario = (GUID)\"bf1f9327-1b07-4125-bbd7-8ce8df7c106a\";";
                formatoTipo += "if ((string)value == \"8\")";
                formatoTipo += "   tipoUsuario = (GUID)\"efcc04c5-9573-499a-9ea9-201c66b8f6de\";";
                formatoTipo += "if ((string)value == \"7\")";
                formatoTipo += "   tipoUsuario = (GUID)\"8ad72ece-5e13-4ffb-9a3a-b628b300faca\";";
                formatoTipo += "if ((string)value == \"5\")";
                formatoTipo += "   tipoUsuario = (GUID)\"9f8024e9-27ef-41e7-817e-923633c0e5fd\";";
                formatoTipo += "if ((string)value == \"0\")";
                formatoTipo += "   tipoUsuario = (GUID)\"c47622bb-a924-4251-ba6f-5ad6aafbaf9e\";";
                formatoTipo += "Model.Cadastro.ITipoUsuario model = null;";
                formatoTipo += "if (!tipoUsuario.IsNullOrEmpty())";
                formatoTipo += "   model = new Data.Cadastro.TipoUsuario(tipoUsuario);";
                formatoTipo += "return model;}";

                detalheTipoUsuario.DetalhesXML.Add(
                    new DetalheXML
                    {
                        Tag = "",
                        De = "NivelUsuario",
                        Nome = "OpenPOS.Data.Cadastro.TipoUsuario",
                        Formato = formatoTipo
                    });
                #endregion

                result.Detalhes.Add(detalheTipoUsuario);
                result.TipoArquivo = Enuns.UniBot.Leiaute.TipoArquivo.Usuario;

                result.Save();
            }
            else
                result = list[0] as IImportacao;

            return result;
        }
        /// <summary>
        /// Cria um leiaute completo para a geração de um arquivo
        /// </summary>
        /// <returns></returns>
        private IImportacao GetLeiaute()
        {
            IImportacao result = null;
            string descricao = "Forma de pagamento (Importacao de XML)";

            //------------------------------------------------------------------
            // Pesquisar pelo leiaute, se encontrar, não precisa criar um novo
            //------------------------------------------------------------------
            IList<IImportacao> list = new Importacao().Find<IImportacao>(new Where { { "Descricao", descricao } });

            if (list.Count == 0)
            {
                #region base do leiaute
                result = new Importacao();

                result.Descricao = descricao;
                result.PadraoNomeArquivo = "";
                result.Codigo = "";
                result.FormatoArquivo = FormatoArquivo.XML;

                result.ClassHeader = typeof(OpenPOS.Data.Cadastro.FormaPagamento);
                result.TagItem = "Cadastro";

                result.FindMethod = "IList<IParentModel> list = DbContext.Find<IParentModel>(model, new Where {{";
                result.FindMethod += "\"EGUID = @p1\",";
                result.FindMethod += "new Parameter{";
                result.FindMethod += "ParameterName = \"@p1\",";
                result.FindMethod += "Value = value";
                result.FindMethod += "}";
                result.FindMethod += "}";
                result.FindMethod += "});";
                result.FindMethod += "if(list.Count > 0)";
                result.FindMethod += "model = list[0];";
                result.FindMethod += "return model;";
                #endregion

                #region headers
                result.Headers.Add(new Header
                {
                    Nome = "EGUID",
                    De = "EGUID",
                    Tamanho = 50,
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    Nome = "Descricao",
                    De = "Descricao",
                    Tamanho = 500,
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    Nome = "Observacao",
                    De = "Observacao",
                    Tamanho = 150,
                    Tipo = Tipo.String
                });

                result.Headers.Add(new Header
                {
                    Nome = "FrenteCaixa",
                    De = "FrenteCaixa",
                    Tamanho = 1,
                    Tipo = Tipo.Boolean
                });

                result.Headers.Add(new Header
                {
                    Nome = "TipoForma",
                    De = "TipoForma",
                    Tamanho = 1,
                    Tipo = Tipo.Integer
                });

                #endregion

                result.TipoArquivo = Enuns.UniBot.Leiaute.TipoArquivo.FormaPagamento;

                result.Save();
            }
            else
                result = list[0] as IImportacao;

            return result;
        }