Esempio n. 1
0
        /// <summary>
        /// Inicia uma nova instância da classe <see cref="ListaDto"/>.
        /// </summary>
        /// <param name="retalhoProducao">A model de retalho de produção.</param>
        public ListaDto(RetalhoProducao retalhoProducao)
        {
            this.Id      = retalhoProducao.IdRetalhoProducao;
            this.Produto = new ProdutoDto
            {
                Codigo    = retalhoProducao.CodInterno,
                Descricao = retalhoProducao.Descricao,
            };

            this.Medidas = new MedidasDto
            {
                Largura       = retalhoProducao.Largura,
                Altura        = retalhoProducao.Altura,
                MetroQuadrado = new MetroQuadradoDto
                {
                    Total  = (decimal)retalhoProducao.TotM,
                    Usando = (decimal)retalhoProducao.TotMUsando,
                },
            };

            this.Datas = new DatasDto
            {
                Cadastro = retalhoProducao.DataCad,
                Uso      = retalhoProducao.DataUso,
            };

            this.Situacao                     = retalhoProducao.SituacaoString;
            this.CodigoEtiqueta               = retalhoProducao.NumeroEtiqueta;
            this.NumeroNotaFiscal             = retalhoProducao.NumeroNFe;
            this.Lote                         = retalhoProducao.Lote;
            this.CodigosEtiquetaUsandoRetalho = retalhoProducao.EtiquetaUsando;
            this.Funcionario                  = retalhoProducao.NomeFunc;
            this.Observacao                   = retalhoProducao.Obs;
            this.Permissoes                   = new PermissoesDto
            {
                Imprimir              = Config.PossuiPermissao(Config.FuncaoMenuPCP.ImprimirEtiquetas) && retalhoProducao.CancelarVisible,
                Cancelar              = retalhoProducao.CancelarVisible,
                MarcarPerda           = retalhoProducao.PerdaVisible,
                ExibirEtiquetasUsando = !string.IsNullOrWhiteSpace(retalhoProducao.EtiquetaUsando),
                LogAlteracoes         = LogAlteracaoDAO.Instance.TemRegistro(LogAlteracao.TabelaAlteracao.RetalhoProducao, (uint)retalhoProducao.IdRetalhoProducao, null),
                LogCancelamento       = LogCancelamentoDAO.Instance.TemRegistro(LogCancelamento.TabelaCancelamento.RetalhoProducao, (uint)retalhoProducao.IdRetalhoProducao),
            };
        }
Esempio n. 2
0
 /// <summary>
 /// Cria o Log de Cancelamento para um retalho de produção.
 /// </summary>
 /// <param name="retalho"></param>
 /// <param name="motivo"></param>
 /// <param name="manual"></param>
 public void LogRetalhoProducao(GDASession session, uint idFunc, RetalhoProducao retalho, string motivo, bool manual)
 {
     InserirLog(session, idFunc, LogCancelamento.TabelaCancelamento.RetalhoProducao,
                (uint)retalho.IdRetalhoProducao, retalho, motivo, manual);
 }
Esempio n. 3
0
 public void LogRetalhoProducao(uint idFunc, RetalhoProducao retalho, string motivo, bool manual)
 {
     LogRetalhoProducao(null, idFunc, retalho, motivo, manual);
 }
Esempio n. 4
0
        protected override Colosoft.Reports.IReportDocument LoadReport(ref LocalReport report, ref List <ReportParameter> lstParam, HttpRequest PageRequest,
                                                                       System.Collections.Specialized.NameValueCollection Request, object[] outrosParametros, LoginUsuario login, string diretorioLogotipos)
        {
            // Pega idImpressão, se houver
            idImpressao       = Glass.Conversoes.StrParaUint(Request["idImpressao"]).ToString();
            numEtiqueta       = Request["numEtiqueta"];
            idProdPed         = Glass.Conversoes.StrParaUint(Request["idProdPed"]);
            idProdNf          = Glass.Conversoes.StrParaUint(Request["idProdNf"]);
            idAmbientePedido  = Glass.Conversoes.StrParaUint(Request["idAmbientePedido"]);
            idRetalhoProducao = Glass.Conversoes.StrParaUint(Request["idRetalhoProducao"]);

            ProdutoImpressaoDAO.TipoEtiqueta?tipoEtiqueta = null;

            // Se for impressão individual, salva o idProdPed com qtd 1 no hiddenfield
            if (Request["ind"] == "1")
            {
                if (idProdPed > 0)
                {
                    idImpressao = ProdutoImpressaoDAO.Instance.GetIdImpressaoByProdPed(idProdPed, true);
                }

                if (idProdNf > 0)
                {
                    idImpressao = ProdutoImpressaoDAO.Instance.GetIdImpressaoByProdNf(idProdNf, true);
                }

                if (idAmbientePedido > 0)
                {
                    idImpressao = ProdutoImpressaoDAO.Instance.GetIdImpressaoByAmbientePedido(idAmbientePedido, true);
                }

                if (idRetalhoProducao > 0)
                {
                    idImpressao = ProdutoImpressaoDAO.Instance.GetIdImpressaoByRetalhoProducao(idRetalhoProducao, true);
                }

                if (idImpressao == "0" && !String.IsNullOrEmpty(idImpressao))
                {
                    throw new Exception("Esta etiqueta ainda não foi impressa pelo controle de impressão.");
                }

                if (idImpressao != "0" && !String.IsNullOrEmpty(idImpressao))
                {
                    idImpressao  = ImpressaoEtiquetaDAO.Instance.GetAtivas(idImpressao);
                    tipoEtiqueta = ImpressaoEtiquetaDAO.Instance.GetTipoImpressao(Glass.Conversoes.StrParaUint(idImpressao.Split(',')[0]));
                }

                if (!String.IsNullOrEmpty(numEtiqueta) &&

                    /* Chamado 15725.
                     * Deve-se verificar se a etiqueta está impressa de acordo com o tipo correto da mesma. */
                    //!ProdutoImpressaoDAO.Instance.EstaImpressa(numEtiqueta.Replace("%2f", "/"), ProdutoImpressaoDAO.TipoEtiqueta.Pedido))
                    !ProdutoImpressaoDAO.Instance.EstaImpressa(numEtiqueta.Replace("%2f", "/"),
                                                               tipoEtiqueta.GetValueOrDefault(ProdutoImpressaoDAO.TipoEtiqueta.Pedido)))
                {
                    throw new Exception("Etiqueta não existe ou foi cancelada");
                }

                if (String.IsNullOrEmpty(idImpressao))
                {
                    throw new Exception("Esta etiqueta ainda não foi impressa ou sua impressão foi cancelada.");
                }
            }
            else if (idImpressao != "0" && !String.IsNullOrEmpty(idImpressao))
            {
                idImpressao  = ImpressaoEtiquetaDAO.Instance.GetAtivas(idImpressao);
                tipoEtiqueta = ImpressaoEtiquetaDAO.Instance.GetTipoImpressao(Glass.Conversoes.StrParaUint(idImpressao.Split(',')[0]));
            }
            else
            {
                if (outrosParametros[1] != null && outrosParametros[1].ToString() != String.Empty)
                {
                    tipoEtiqueta = (ProdutoImpressaoDAO.TipoEtiqueta)Glass.Conversoes.StrParaInt(outrosParametros[1].ToString());
                }

                if ((outrosParametros[2] != null && outrosParametros[2].ToString() != string.Empty) &&
                    (outrosParametros[2].ToString().ToLower().Contains("cadreporpeca") ||
                     outrosParametros[2].ToString().ToLower().Contains("cadmarcarpecaproducao") ||
                     outrosParametros[2].ToString().ToLower().Contains("cadretalhoproducao") ||
                     outrosParametros[2].ToString().ToLower().Contains("cadperdachapavidro")))
                {
                    tipoEtiqueta = ProdutoImpressaoDAO.TipoEtiqueta.Retalho;
                }
            }

            if (tipoEtiqueta == null)
            {
                var excessao = new Exception("Não foi possível identificar o tipo de impressão de etiqueta.");

                ErroDAO.Instance.InserirFromException(string.Format("ImprimirEtiqueta - OutrosParametros: {0}, {1}, {2}, {3}",
                                                                    outrosParametros != null && outrosParametros.Length > 0 ? outrosParametros[0].ToString() : "ND",
                                                                    outrosParametros != null && outrosParametros.Length > 1 ? outrosParametros[1].ToString() : "ND",
                                                                    outrosParametros != null && outrosParametros.Length > 2 ? outrosParametros[2].ToString() : "ND",
                                                                    outrosParametros != null && outrosParametros.Length > 3 ? outrosParametros[3].ToString() : "ND"), excessao);

                throw excessao;
            }

            if ((!String.IsNullOrEmpty(outrosParametros[0].ToString()) || (idImpressao != "0" && !String.IsNullOrEmpty(idImpressao)) || idProdPed > 0) ||
                (outrosParametros[2].ToString().ToLower().Contains("cadreporpeca") ||
                 outrosParametros[2].ToString().ToLower().Contains("cadmarcarpecaproducao") ||
                 outrosParametros[2].ToString().ToLower().Contains("cadretalhoproducao") ||
                 outrosParametros[2].ToString().ToLower().Contains("cadperdachapavidro")) && (outrosParametros[3] != null && outrosParametros[3].ToString() != String.Empty))
            {
                Etiqueta[] lstEtiq = null;

                bool reImprimir = Request["ind"] == "1" || Request["idImpressao"] != null;

                // Busca etiquetas, salvando impressão realizada
                switch (tipoEtiqueta.Value)
                {
                    #region ProdutoImpressaoDAO.TipoEtiqueta.Pedido

                case ProdutoImpressaoDAO.TipoEtiqueta.Pedido:
                    string[] dadosRetalhos = outrosParametros[5] != null ? outrosParametros[5].ToString().Split('+') : new string[0];

                    if (hdfSomenteRetalhos.Value == "1")
                    {
                        List <string> usar = new List <string>();
                        int           index;

                        foreach (string dados in outrosParametros[0].ToString().Split('|'))
                        {
                            if (String.IsNullOrEmpty(dados))
                            {
                                continue;
                            }

                            string[] dadosEtiqueta = dados.Split('\t');

                            if ((index = Array.FindIndex(dadosRetalhos, x => !String.IsNullOrEmpty(x) ?
                                                         x.Split('|')[0] == dadosEtiqueta[0] : false)) > -1)
                            {
                                if (!dadosEtiqueta[0].Contains("R"))
                                {
                                    dadosEtiqueta[2] = dadosRetalhos[index].Split('|')[1].Split(',').Length.ToString();
                                }

                                usar.Add(String.Join("\t", dadosEtiqueta));
                            }
                        }

                        outrosParametros[0] = String.Join("|", usar.ToArray());
                    }

                    int?idSolucaoOtimizacao = null;
                    int id2 = 0;

                    if (int.TryParse(outrosParametros[6]?.ToString(), out id2))
                    {
                        idSolucaoOtimizacao = id2;
                    }

                    lstEtiq = EtiquetaDAO.Instance.GetListPedidoComTransacao(login.CodUser, idImpressao, idProdPed, idAmbientePedido, outrosParametros[0].ToString(), false,
                                                                             reImprimir, Request["numEtiqueta"], Request["apenasPlano"] == "true", dadosRetalhos, idSolucaoOtimizacao);

                    break;

                    #endregion

                    #region ProdutoImpressaoDAO.TipoEtiqueta.NotaFiscal

                case ProdutoImpressaoDAO.TipoEtiqueta.NotaFiscal:
                    lstEtiq = EtiquetaDAO.Instance.GetListNFe(login.CodUser, idImpressao, idProdNf, outrosParametros[0].ToString(),
                                                              reImprimir, Request["numEtiqueta"]);

                    break;

                    #endregion

                    #region ProdutoImpressaoDAO.TipoEtiqueta.Retalho

                case ProdutoImpressaoDAO.TipoEtiqueta.Retalho:
                    var listaRetalhoProducao = new List <RetalhoProducao>();

                    if (idRetalhoProducao > 0)
                    {
                        listaRetalhoProducao.Add(RetalhoProducaoDAO.Instance.Obter(idRetalhoProducao));
                    }
                    else
                    {
                        var retalhos = Newtonsoft.Json.JsonConvert.DeserializeObject <RetalhoProducaoAuxiliarCollection>(outrosParametros[3].ToString());
                        var ids      = new List <uint>();

                        if (Request["numEtiqueta"] != null)
                        {
                            string[] numeroEtiqueta = Request["numEtiqueta"].ToString().Split(';');

                            foreach (var r in retalhos)
                            {
                                foreach (string n in numeroEtiqueta)
                                {
                                    ids = RetalhoProducaoDAO.Instance.CriarRetalho(r.Altura.ToString(), r.Largura.ToString(),
                                                                                   r.Quantidade.ToString(), r.Observacao.ToString(), n, login);

                                    foreach (uint id in ids)
                                    {
                                        RetalhoProducao ret = RetalhoProducaoDAO.Instance.Obter(id);
                                        listaRetalhoProducao.Add(ret);
                                    }
                                }
                            }
                        }
                        else if (Request["idProd"] != null)
                        {
                            var dados = Request["idProd"].ToString().Split(';');

                            uint idProd   = dados.Length == 1 ? Conversoes.ConverteValor <uint>(dados[0]) : Conversoes.ConverteValor <uint>(dados[1]);
                            uint idProdNF = dados.Length == 1 ? 0 : Conversoes.ConverteValor <uint>(dados[0]);

                            ids = RetalhoProducaoDAO.Instance.CriarRetalho(retalhos.GetList(), idProd, idProdNF, login);

                            foreach (uint id in ids)
                            {
                                RetalhoProducao ret = RetalhoProducaoDAO.Instance.Obter(id);
                                listaRetalhoProducao.Add(ret);
                            }
                        }
                    }

                    lstEtiq = EtiquetaDAO.Instance.GetListRetalho(login.CodUser, idImpressao, listaRetalhoProducao, idRetalhoProducao, reImprimir);

                    foreach (var etiqueta in lstEtiq)
                    {
                        if (string.IsNullOrEmpty(etiqueta.NomeCliente))
                        {
                            etiqueta.NomeCliente = " ";
                        }
                    }

                    break;

                    #endregion
                }

                /* Chamado 43775. */
                var idLojaPedido =
                    EtiquetaConfig.RelatorioEtiqueta.ModeloEtiquetaPorLoja && lstEtiq != null && lstEtiq.Length > 0 && lstEtiq[0].IdPedido.StrParaInt() > 0 ?
                    PedidoDAO.Instance.ObtemIdLoja(null, lstEtiq[0].IdPedido.StrParaUint()) : 0;

                if (Request["reposicao"] == "true")
                {
                    report.ReportPath = NomeArquivoRelatorioReposicao((int)idLojaPedido);
                }
                else
                {
                    report.ReportPath = EtiquetaConfig.RelatorioEtiqueta.NomeArquivoRelatorio((int)idLojaPedido,
                                                                                              tipoEtiqueta.Value == ProdutoImpressaoDAO.TipoEtiqueta.NotaFiscal,
                                                                                              tipoEtiqueta.Value == ProdutoImpressaoDAO.TipoEtiqueta.Retalho);
                }

                report.DataSources.Add(new ReportDataSource("Etiqueta", lstEtiq));
                lstParam.Add(new ReportParameter("Logotipo", Logotipo.GetReportLogo()));
                lstParam.Add(new ReportParameter("IsRetalho", (tipoEtiqueta.Value == ProdutoImpressaoDAO.TipoEtiqueta.Retalho).ToString().ToLower()));
            }

            return(null);
        }