public void atualizar( dsFROGIOS.OSRow os, dsFROGIOS.OS_ITEMDataTable itens, dsFROGIOS.OS_SERVICODataTable servicos) { sqlOs.atualizar(os); dsFROGIOS.OS_ITEMDataTable itensDeletados = new dsFROGIOS.OS_ITEMDataTable(); dsFROGIOS.OS_ITEMDataTable itensInseridos = new dsFROGIOS.OS_ITEMDataTable(); dsFROGIOS.OS_ITEMDataTable itensAlterados = new dsFROGIOS.OS_ITEMDataTable(); dsFROGIOS.OS_SERVICODataTable servicosDeletados = new dsFROGIOS.OS_SERVICODataTable(); dsFROGIOS.OS_SERVICODataTable servicosInseridos = new dsFROGIOS.OS_SERVICODataTable(); dsFROGIOS.OS_SERVICODataTable servicosAlterados = new dsFROGIOS.OS_SERVICODataTable(); int contador = 0; foreach (dsFROGIOS.OS_ITEMRow item in itens) { if (item.RowState == DataRowState.Added) { item.OS_ITEM_CODIGO = contador; contador++; item.OS_ITEM_OS = os.OS_CODIGO; itensInseridos.ImportRow(item); } if (item.RowState == DataRowState.Modified) { itensAlterados.ImportRow(item); } } itensDeletados = (dsFROGIOS.OS_ITEMDataTable)itens.GetChanges(DataRowState.Deleted); contador = 0; foreach (dsFROGIOS.OS_SERVICORow servico in servicos) { if (servico.RowState == DataRowState.Added) { servico.OS_SERVICO_CODIGO = contador; contador++; servico.OS_SERVICO_OS = os.OS_CODIGO; servicosInseridos.ImportRow(servico); } if (servico.RowState == DataRowState.Modified) { servicosAlterados.ImportRow(servico); } } servicosDeletados = (dsFROGIOS.OS_SERVICODataTable)servicos.GetChanges(DataRowState.Deleted); dsFROGIOS.OS_ITEMRow itemTmp = itens.NewOS_ITEMRow(); dsFROGIOS.OS_SERVICORow servicoTmp = servicos.NewOS_SERVICORow(); int qtdItensDeletados = itensDeletados != null ? itensDeletados.Rows.Count : 0; int qtdItensInseridos = itensInseridos != null ? itensInseridos.Rows.Count : 0; int qtdItensAlterados = itensAlterados != null ? itensAlterados.Rows.Count : 0; int qtdServicosDeletados = servicosDeletados != null ? servicosDeletados.Rows.Count : 0; int qtdServicosInseridos = servicosInseridos != null ? servicosInseridos.Rows.Count : 0; string sqlRetirar = "UPDATE PRODUTO " + "SET PRODUTO_ESTOQUE_ATUAL = ((SELECT PRODUTO_ESTOQUE_ATUAL FROM PRODUTO WHERE PRODUTO_CODIGO = " + paramCodigo + ")-" + paramEstoque + ") " + "WHERE PRODUTO_CODIGO = " + paramCodigo; string sqlAdicionar = "UPDATE PRODUTO " + "SET PRODUTO_ESTOQUE_ATUAL = ((SELECT PRODUTO_ESTOQUE_ATUAL FROM PRODUTO WHERE PRODUTO_CODIGO = " + paramCodigo + ")+" + paramEstoque + ") " + "WHERE PRODUTO_CODIGO = " + paramCodigo; FbCommand comando = new FbCommand(sqlAdicionar, Conexao.getConexao, Conexao.getTransacao); for (int i = 0; i < qtdItensDeletados; i++) { itemTmp.OS_ITEM_CODIGO = (int)itensDeletados.Rows[i][itensDeletados.OS_ITEM_CODIGOColumn, DataRowVersion.Original]; sqlOsItem.deletar(itemTmp); comando.Parameters.Clear(); comando.Parameters.AddWithValue(paramCodigo, (itensDeletados.Rows[i][itensDeletados.OS_ITEM_PRODUTOColumn, DataRowVersion.Original] as dsFROGIOS.OS_ITEMRow).OS_ITEM_PRODUTO); comando.Parameters.AddWithValue(paramEstoque, (itensDeletados.Rows[i][itensDeletados.OS_ITEM_PRODUTOColumn, DataRowVersion.Original] as dsFROGIOS.OS_ITEMRow).OS_ITEM_QUANTIDADE); comando.ExecuteNonQuery(); } for (int i = 0; i < qtdServicosDeletados; i++) { servicoTmp.OS_SERVICO_CODIGO = (int)servicosDeletados.Rows[i][servicosDeletados.OS_SERVICO_CODIGOColumn, DataRowVersion.Original]; sqlOsServico.deletar(servicoTmp); } for (int i = 0; i < qtdItensInseridos; i++) { itemTmp.OS_ITEM_DESCONTO = (double) itensInseridos.Rows[i][itensInseridos.OS_ITEM_DESCONTOColumn, DataRowVersion.Current]; itemTmp.OS_ITEM_DESCRICAO = (string) itensInseridos.Rows[i][itensInseridos.OS_ITEM_DESCRICAOColumn, DataRowVersion.Current]; itemTmp.OS_ITEM_OS = os.OS_CODIGO; itemTmp.OS_ITEM_PRODUTO = (int)itensInseridos.Rows[i][itensInseridos.OS_ITEM_PRODUTOColumn, DataRowVersion.Current]; itemTmp.OS_ITEM_QUANTIDADE = (short)itensInseridos.Rows[i][itensInseridos.OS_ITEM_QUANTIDADEColumn, DataRowVersion.Current]; itemTmp.OS_ITEM_TOTAL = (double)itensInseridos.Rows[i][itensInseridos.OS_ITEM_TOTALColumn, DataRowVersion.Current]; itemTmp.OS_ITEM_VALOR = (double)itensInseridos.Rows[i][itensInseridos.OS_ITEM_VALORColumn, DataRowVersion.Current]; sqlOsItem.inserir(itemTmp); comando.CommandText = sqlRetirar; comando.Parameters.Clear(); comando.Parameters.AddWithValue(paramCodigo, itemTmp.OS_ITEM_PRODUTO); comando.Parameters.AddWithValue(paramEstoque, itemTmp.OS_ITEM_QUANTIDADE); comando.ExecuteNonQuery(); } for (int i = 0; i < qtdServicosInseridos; i++) { servicoTmp.OS_SERVICO_OS = os.OS_CODIGO; servicoTmp.OS_SERVICO_SERVICO = (int)servicosInseridos.Rows[i][servicosInseridos.OS_SERVICO_SERVICOColumn, DataRowVersion.Current]; servicoTmp.OS_SERVICO_VALOR = (double)servicosInseridos.Rows[i][servicosInseridos.OS_SERVICO_VALORColumn, DataRowVersion.Current]; servicoTmp.OS_SERVICO_DESCRICAO = (string)servicosInseridos.Rows[i][servicosInseridos.OS_SERVICO_DESCRICAOColumn, DataRowVersion.Current]; servicoTmp.OS_SERVICO_DESCONTO = (double)servicosInseridos.Rows[i][servicosInseridos.OS_SERVICO_DESCONTOColumn, DataRowVersion.Current]; servicoTmp.OS_SERVICO_ACRESCIMO = (double)servicosInseridos.Rows[i][servicosInseridos.OS_SERVICO_ACRESCIMOColumn, DataRowVersion.Current]; servicoTmp.OS_SERVICO_TOTAL = (double)servicosInseridos.Rows[i][servicosInseridos.OS_SERVICO_TOTALColumn, DataRowVersion.Current]; sqlOsServico.inserir(servicoTmp); } foreach (dsFROGIOS.OS_ITEMRow item in itensAlterados) { sqlOsItem.atualizar(item); } foreach (dsFROGIOS.OS_SERVICORow servico in servicosAlterados) { sqlOsServico.atualizar(servico); } TblOsItem osItemSQL = new TblOsItem(); for (int i = 0; i < qtdItensAlterados; i++) { short quantidadeAtual = (short)itensAlterados.Rows[i][itensAlterados.OS_ITEM_QUANTIDADEColumn, DataRowVersion.Current]; short quantidadeOriginal = (short)itensAlterados.Rows[i][itensAlterados.OS_ITEM_QUANTIDADEColumn, DataRowVersion.Original]; int codigoProduto = (int)itensAlterados.Rows[i][itensAlterados.OS_ITEM_PRODUTOColumn, DataRowVersion.Current]; int diferenca = quantidadeOriginal - quantidadeAtual; dsFROGIOS.OS_ITEMRow item = itensAlterados.Rows[i] as dsFROGIOS.OS_ITEMRow; if (diferenca > 0) { //somar estoque à um produto comando.CommandText = sqlAdicionar; comando.Parameters.Clear(); comando.Parameters.AddWithValue(paramCodigo, codigoProduto); comando.Parameters.AddWithValue(paramEstoque, diferenca); comando.ExecuteNonQuery(); } else if (diferenca < 0) { // subtrair estoque de um produto comando.CommandText = sqlRetirar; comando.Parameters.Clear(); comando.Parameters.AddWithValue(paramCodigo, codigoProduto); comando.Parameters.AddWithValue(paramEstoque, (diferenca * (-1))); comando.ExecuteNonQuery(); } osItemSQL.atualizar(item); } }
public GerOs() { sqlOs = new TblOs(); sqlOsItem = new TblOsItem(); sqlOsServico = new TblOsServico(); }