Ejemplo n.º 1
0
        public static string ProcessarEntrega(TRegistro_CargaEntrega val, BancoDados.TObjetoBanco banco)
        {
            bool             st_transacao = false;
            TCD_CargaEntrega qtb_carga    = new TCD_CargaEntrega();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_carga.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_carga.Banco_Dados = banco;
                }


                //Processar estoque dos itens Entrega
                val.lItens.ForEach(p =>
                {
                    if (p.St_processar)
                    {
                        //Buscar Local de Armazenagem
                        object cd_local = new CamadaDados.Faturamento.Entrega.TCD_ItensRomaneio(qtb_carga.Banco_Dados).BuscarEscalar(
                            new Utils.TpBusca[]
                        {
                            new Utils.TpBusca()
                            {
                                vNM_Campo = "a.CD_empresa",
                                vOperador = "=",
                                vVL_Busca = "'" + p.Cd_empresa + "'"
                            },
                            new Utils.TpBusca()
                            {
                                vNM_Campo = "a.ID_Romaneio",
                                vOperador = "=",
                                vVL_Busca = "'" + p.Id_romaneiostr + "'"
                            },
                            new Utils.TpBusca()
                            {
                                vNM_Campo = "a.ID_ItemRomaneio",
                                vOperador = "=",
                                vVL_Busca = "'" + p.Id_itemromaneiostr + "'"
                            }
                        }, "a.cd_local");

                        //Buscar VL.Médio
                        decimal vl_medio = CamadaNegocio.Estoque.TCN_LanEstoque.Valor_Medio_Est_Produto(p.Cd_empresa, p.Cd_produto, qtb_carga.Banco_Dados);
                        //Criar objeto estoque
                        CamadaDados.Estoque.TRegistro_LanEstoque rEstoque = new CamadaDados.Estoque.TRegistro_LanEstoque();
                        rEstoque.Cd_empresa   = p.Cd_empresa;
                        rEstoque.Cd_produto   = p.Cd_produto;
                        rEstoque.Cd_local     = cd_local.ToString();
                        rEstoque.Dt_lancto    = CamadaDados.UtilData.Data_Servidor();
                        rEstoque.Tp_movimento = "S";
                        rEstoque.Qtd_entrada  = decimal.Zero;
                        rEstoque.Qtd_saida    = p.QTD_Saida;
                        rEstoque.Vl_unitario  = vl_medio;
                        rEstoque.Vl_subtotal  = p.QTD_Saida * vl_medio;
                        rEstoque.Tp_lancto    = "N";
                        rEstoque.St_registro  = "A";

                        //Gravar Estoque
                        CamadaNegocio.Estoque.TCN_LanEstoque.GravarEstoque(rEstoque, qtb_carga.Banco_Dados);
                        p.Id_lanctoEstoque = rEstoque.Id_lanctoestoque;
                        TCN_ItensCarga.Gravar(p, qtb_carga.Banco_Dados);
                    }
                });
                val.St_registro = "E";
                qtb_carga.Gravar(val);
                if (st_transacao)
                {
                    qtb_carga.Banco_Dados.Commit_Tran();
                }
                return(val.Id_cargastr);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_carga.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro Entregar Carga: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_carga.deletarBanco_Dados();
                }
            }
        }