namespace TO_REC
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private static readonly string cnnStrTPV =
ConfigurationManager.ConnectionStrings["xTrelaTPVConnectionString"].ConnectionString;
System.Data.OracleClient.OracleConnection conn =
new System.Data.OracleClient.OracleConnection();
int idtabla;
long Id;
string sql = "";
System.Collections.ArrayList ListaPedidos =
new System.Collections.ArrayList();
//Instanciamos el objeto de la estructura
CabPedido CPedido
= new CabPedido
(); PedidoDetalle PDetalle
= new PedidoDetalle
();
private void RecogerXML()
{
XmlDocument doc1
= new XmlDocument
();
SqlConnection cnn
= new SqlConnection
(cnnStrTPV
);
cnn.Open();
LoadXml1(cnn, doc1);
cnn.Close();
doc1.Save("C:\\Users\\dnonis\\Desktop\\temp\\OutputXml1.xml");
}
protected bool LoadXml1(SqlConnection cnn, XmlDocument doc1)
{
//Leemos el campo serialización(XML) de la bbdd.
idtabla = 122;//pedidostiendas
Id = //100019014084;
//100163019855;
1001310122429;
//100152014221;
sql = @"SELECT Serializacion
FROM xTrelaTPV..OPERACIONES
WHERE IdOperacion =" + Id +
"and idtabla=" + idtabla + "";
SqlCommand cm
= new SqlCommand
(sql, cnn
); using (SqlDataReader dr = cm.ExecuteReader())
{
if (dr.Read())
{
SqlXml MiXml = dr.GetSqlXml(dr.GetOrdinal("Serializacion"));
doc1.LoadXml(MiXml.Value);
return true;
}
else
{
return false;
}
}
}
public void GetCampos_PedidoTienda()
{
XmlDocument xDoc
= new XmlDocument
();//XmlDocument nos permite editar el XML //La ruta del documento XML permite rutas relativas
//respeto del ejecutable!
xDoc.Load("C:/Users/dnonis/Desktop/temp/OutputXml1.xml");//ruta del archivo xml
XmlNodeList pedidostiendas =
xDoc.GetElementsByTagName("PedidoTienda");//idtabla=122-->PedidosTiendas
foreach (XmlElement nodo in pedidostiendas)
{
CPedido.IdPedidoTienda = Convert.ToUInt64(nodo.GetElementsByTagName("IdPedidoTienda")[0].InnerText);//nodo xsi.nil
CPedido.IdentidadOrigenPedido = Convert.ToInt32(nodo.GetElementsByTagName("IdEntidadOrigenPedido")[0].InnerText);
CPedido.FechaPedido = nodo.GetElementsByTagName("FechaPedido")[0].InnerText;
CPedido.CodigoBarras = nodo.GetElementsByTagName("CodigoBarras")[0].InnerText;
CPedido.IdDivisa = Convert.ToInt32(nodo.GetElementsByTagName("IdDivisa")[0].InnerText);
CPedido.IdTicket = nodo.GetElementsByTagName("IdTicket")[0].InnerText;
CPedido.Comodin2 = nodo.GetElementsByTagName("Comodin2")[0].InnerText;
CPedido.Comodin8 = nodo.GetElementsByTagName("Comodin8")[0].InnerText;
CPedido.IdEmpleado = nodo.GetElementsByTagName("IdEmpleado")[0].InnerText;
ListaPedidos.Add(CPedido);
}
XmlNodeList pedidostiendasDetalleCollection =
xDoc.GetElementsByTagName("PedidoTiendaDetalleCollection");
XmlNodeList PedidoTiendaDetalle =
((XmlElement)pedidostiendasDetalleCollection[0]).GetElementsByTagName("PedidoTiendaDetalle");
foreach (XmlElement nodo1 in PedidoTiendaDetalle)
{
PDetalle.IdPedidoTienda1 = Convert.ToUInt64(nodo1.GetElementsByTagName("IdPedidoTienda")[0].InnerText);
PDetalle.Linea = Convert.ToInt32(nodo1.GetElementsByTagName("Linea")[0].InnerText);
PDetalle.IdTipoPedido = Convert.ToInt32(nodo1.GetElementsByTagName("IdTipoPedido")[0].InnerText);
PDetalle.IdEntidadDestinoPedido = Convert.ToInt32(nodo1.GetElementsByTagName("IdEntidadDestinoPedido")[0].InnerText);
PDetalle.FechaPrevistaEntregaEnTienda = nodo1.GetElementsByTagName("FechaPrevistaEntregaEnTienda")[0].InnerText;
PDetalle.FechaEfectivaEntregaEnTienda = nodo1.GetElementsByTagName("FechaEfectivaEntregaEnTienda")[0].InnerText;
PDetalle.IdArticuloVariante = nodo1.GetElementsByTagName("IdArticuloVariante")[0].InnerText;
PDetalle.Unidades = nodo1.GetElementsByTagName("Unidades")[0].InnerText;
PDetalle.UnidadesServidas = nodo1.GetElementsByTagName("UnidadesServidas")[0].InnerText;
PDetalle.UnidadesCanceladas = nodo1.GetElementsByTagName("UnidadesCanceladas")[0].InnerText;
PDetalle.PrecioVenta = nodo1.GetElementsByTagName("PrecioVenta")[0].InnerText;
PDetalle.CodigoBarras = nodo1.GetElementsByTagName("CodigoBarras")[0].InnerText;
PDetalle.IdPrioridadPedido = Convert.ToInt32(nodo1.GetElementsByTagName("IdPrioridadPedido")[0].InnerText);
if (PDetalle.IdReserva == null) { PDetalle.IdReserva = Convert.ToUInt32(nodo1.GetElementsByTagName("IdReserva")[0].InnerText); }
if (PDetalle.IdValija == null) { PDetalle.IdValija = Convert.ToUInt32(nodo1.GetElementsByTagName("IdValija")[0].InnerText); }
if (PDetalle.IdEstadoPedido == null) { PDetalle.IdEstadoPedido = Convert.ToInt32(nodo1.GetElementsByTagName("IdEstadoPedido")[0].InnerText); }
PDetalle.notas = nodo1.GetElementsByTagName("Observaciones")[0].InnerText;
ListaPedidos.Add(PDetalle);
}
}
public void InsertPedidosTotalOracle()
{
conn.ConnectionString =
"Data Source=DEVELOP_ORASRVDEV03;" + //schema bbdd
"User ID=xxxxx;" + //usuario
"Password=xxxxxxxxx"; //password
conn.Open();//--abrimos conexion
//Declaro una variable de tipo command del oracle
System.Data.OracleClient.OracleCommand MiComando
= new System.Data.OracleClient.OracleCommand(); System.Data.OracleClient.OracleCommand MiComando2
= new System.Data.OracleClient.OracleCommand();
/*OracleTransaction transaction1;
OracleTransaction transaction2;*/
////////-------------------
System.Data.OracleClient.OracleParameter var1
= new System.Data.OracleClient.OracleParameter(); var1.OracleType = System.Data.OracleClient.OracleType.UInt32;
if (CPedido.IdTicket == "") { var1.Value = Convert.ToUInt64(0); }
else if (CPedido.IdTicket != "") { var1.Value = Convert.ToUInt64(CPedido.IdTicket); }
else { var1.Value = Convert.ToUInt32(0); }
////////-------------------
System.Data.OracleClient.OracleParameter var2
= new System.Data.OracleClient.OracleParameter(); var2.OracleType = System.Data.OracleClient.OracleType.Int32;
if (CPedido.Comodin2 == "") { var2.Value = Convert.ToInt32(0); }
else if (CPedido.Comodin2 != "") { var2.Value = Convert.ToInt32(CPedido.Comodin2); }
else { var2.Value = Convert.ToUInt32(0); }
////////-------------------
System.Data.OracleClient.OracleParameter var3
= new System.Data.OracleClient.OracleParameter(); var3.OracleType = System.Data.OracleClient.OracleType.UInt32;
if (CPedido.IdEmpleado == "") { var3.Value = Convert.ToUInt64(0); }
else if (CPedido.IdEmpleado != "") { var3.Value = Convert.ToUInt64(CPedido.IdEmpleado); }
else { var3.Value = Convert.ToUInt32(0); }
////////-------------------
System.Data.OracleClient.OracleParameter var4
= new System.Data.OracleClient.OracleParameter(); var4.OracleType = System.Data.OracleClient.OracleType.VarChar;
if (PDetalle.FechaPrevistaEntregaEnTienda == "") { var4.Value = "null"; }
else { var4.Value = Convert.ToDateTime(PDetalle.FechaPrevistaEntregaEnTienda); }
////////-------------------
System.Data.OracleClient.OracleParameter var5
= new System.Data.OracleClient.OracleParameter(); var5.OracleType = System.Data.OracleClient.OracleType.VarChar;
if (PDetalle.FechaEfectivaEntregaEnTienda == "") { var5.Value = "null"; }
else { var5.Value = Convert.ToDateTime(PDetalle.FechaEfectivaEntregaEnTienda); }
////////-------------------
MiComando.Parameters.Clear();
/* // Start a local transaction
transaction2 = conn.BeginTransaction(IsolationLevel.ReadCommitted);
// Assign transaction object for a pending local transaction
MiComando2.Transaction = transaction2;
*/
try
{
string numTPV=Convert.ToString(CPedido.IdPedidoTienda);
string numTPVsbtr= numTPV.Substring(7,2);
//string numTicket = Convert.ToString(CPedido.IdTicket);
//string numTicketsbtr = numTicket.Substring(10, (numTPV.Length));
string oracle = "Insert into TO_REC_PEDIDOS_TIENDAS_CAB" +
"(CODIGO_EMPRESA,NUMERO_PEDIDO,TIENDA_ORIGEN,FECHA_PEDIDO,"+
"CODIGO_BARRAS_PEDIDO,CODIGO_DIVISA," +
"NUMERO_TPV,NUMERO_TIQUET,CLIENTE_DESTINO,PEDIDO_ORIGINAL_XTRELA," +
"CODIGO_TRABAJADOR,PERSONA_PEDIDO)" +
"VALUES('1234D',"+CPedido.IdPedidoTienda+"," +CPedido.IdentidadOrigenPedido+ ",'"+
Convert.ToDateTime(CPedido.FechaPedido)+"','"+CPedido.CodigoBarras+"',"+CPedido.IdDivisa+ ","+
Convert.ToInt32(numTPVsbtr)+","+var1.Value+",'EJEMPLO',"+
var2.Value+","+var3.Value+",'"+CPedido.Comodin8+"')";
string oracle_= "Insert into TO_REC_PEDIDOS_TIENDAS_LIN" +
"(CODIGO_EMPRESA,NUMERO_PEDIDO,NUMERO_LINEA,TIPO_PEDIDO," +
"CLIENTE_DESTINO,FECHA_ENTREGA_PREVISTA,FECHA_ENTREGA_REAL,"+
"CODIGO_ARTICULO,UNIDADES_PEDIDAS,UNIDADES_SERVIDAS,UNIDADES_CANCELADAS,"+//,"+
"PRECIO_VENTA,CODIGO_BARRAS_SOBRE,PRIORIDAD_PEDIDO,"+
"NUMERO_RESERVA,NUMERO_VALIJA,STATUS_PEDIDO,"+
"OBSERVACIONES)"+
"VALUES('1234D',"+PDetalle.IdPedidoTienda1+","+PDetalle.Linea+",'"+
PDetalle.IdTipoPedido+"','"+PDetalle.IdEntidadDestinoPedido+"','"+
var4.Value+"','"+var5.Value+"','"+
PDetalle.IdArticuloVariante+"','"+(PDetalle.Unidades)+"','"+
(PDetalle.UnidadesServidas)+"','"+(PDetalle.UnidadesCanceladas)+"','"+
PDetalle.PrecioVenta+"','"+PDetalle.CodigoBarras+"',"+PDetalle.IdPrioridadPedido+","+
PDetalle.IdReserva+","+PDetalle.IdValija+","+
PDetalle.IdEstadoPedido+","+PDetalle.notas+")";
MiComando
= new OracleCommand
(oracle, conn
); MiComando.ExecuteNonQuery();
MiComando2
= new OracleCommand
(oracle_, conn
); MiComando2.ExecuteNonQuery();
//transaction2.Commit();
MessageBox.Show("Ejecución realizada con éxito", "INFO",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception err)
{
//transaction2.Rollback();
MessageBox.Show("Error..." + err.Message, "ERROR",
MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show("Para más información consulte con su Administrador");
}
conn.Close();//--cerramos conexión
this.Close();//cerramos y salimos de la aplicación
}
public class CabPedido //--> .:Oracle:. "TO_REC_PEDIDOS_TIENDAS_CAB"
{
//Codigo_Empresa
public ulong IdPedidoTienda;
public int IdentidadOrigenPedido;
public string FechaPedido;
public string CodigoBarras;
public int IdDivisa;//tinyint
public string IdTicket;//bigint
//cliente_destino
public string Comodin2;
public string Comodin8;//nvarchar(100)
public string IdEmpleado;//bigint
//Fecha_Grabacion
}
public class PedidoDetalle //--> "TO_REC_PEDIDOS_TIENDAS_LIN"
{
//Codigo_Empresa
public ulong IdPedidoTienda1;
public ulong IdPedidoTiendaDetalle;//¿¿??
public int Linea;
public int IdTipoPedido;
public int IdEntidadDestinoPedido;
public string FechaPrevistaEntregaEnTienda;//DATETIME
public string FechaEfectivaEntregaEnTienda;//DATETIME
//fecha real de entrega a cliente
public string IdArticuloVariante;
public string Unidades;//Numeric(11,4)
public string UnidadesServidas;//Numeric(11,4)
public string UnidadesCanceladas;//Numeric(11,4)
public string PrecioVenta;//money
public string CodigoBarras;
public int IdPrioridadPedido;
public long IdReserva;//long
public long IdValija;//long
public int IdEstadoPedido;
public string notas;
//Fecha_Grabacion
}
private void button4_Click(object sender, EventArgs e)
{
RecogerXML();
GetCampos_PedidoTienda();
InsertPedidosTotalOracle();
this.Close();
}
}
}