/// <summary> /// Genera archivo encabezado con la lista de pedidos que contiene /// </summary> /// <param name="encabezado"></param> /// <returns></returns> private bool GeneraArchivoEncabezado(Encabezado encabezado) { string rutaTemporalGrupo = _rutaArchivosTemporales + @"\"; int consecutivoPedido = 1; using (FileStream archivoEncabezado = File.Create(rutaTemporalGrupo + encabezado.Nombre)) { using (StreamWriter streamWriter = new StreamWriter(archivoEncabezado)) { var fechaInicio = BusinessUtils.GetFechaFormateada(); var horaInicio = BusinessUtils.GetHoraFormateada(); var contenidoEncabezado = String.Format("{0}019000{1}4000{5}101{1}4{2}Y{3}{4}", encabezado.Grupo.Campana, encabezado.Consecutivo.ToString("D4"), encabezado.Pedidos.Count, fechaInicio, horaInicio, Environment.NewLine); streamWriter.Write(contenidoEncabezado); foreach (var pedido in encabezado.Pedidos) { pedido.Consecutivo = consecutivoPedido; streamWriter.Write(String.Format("{0}01{1}400{2}", encabezado.Grupo.Campana, encabezado.Consecutivo.ToString("D4"), consecutivoPedido.ToString("D2"))); consecutivoPedido++; } } } return(true); }
/// <summary> /// /// </summary> /// <param name="pedido"></param> private void GeneraArchivosDetalle(Pedido pedido, int consecutivoEncabezado) { var rutaTemporalGrupo = _rutaArchivosTemporales + @"\"; var clavePedido = String.Format("{0}01{1}4{2}", pedido.Campana, consecutivoEncabezado.ToString("D4"), pedido.Consecutivo.ToString("D4")); var nombreArchivoDetalle = "ORDER." + clavePedido; using (FileStream archivoDetalle = File.Create(rutaTemporalGrupo + nombreArchivoDetalle)) { using (StreamWriter streamWriter = new StreamWriter(archivoDetalle)) { //Encabezado var identificadorEncabezado = String.IsNullOrEmpty(pedido.ProductoClave) ? "H" : "A"; var detalleOrden = String.Format("{6} 101{0}{1} {2}{3}{4}{5}00000000010000000000000000000000000000000", consecutivoEncabezado.ToString("D4"), pedido.Consecutivo.ToString("D2"), BusinessUtils.GetFechaFormateada(pedido.FechaP), BusinessUtils.GetHoraFormateada(pedido.FechaP), pedido.Zona, pedido.Registro, identificadorEncabezado); streamWriter.WriteLine(clavePedido + "0"); streamWriter.WriteLine(detalleOrden); //Pedido Actual if (!String.IsNullOrEmpty(pedido.ProductoClave)) { streamWriter.WriteLine(clavePedido + "2"); foreach (var detalleLinea in pedido.ProductoClave.Split('^')) { var linea = detalleLinea.Split(',')[0].Substring(0, 5); var cantidad = detalleLinea.Split(',')[1]; var lineaFormateada = String.Format("0{0}00{1}", linea, Convert.ToInt16(cantidad).ToString("D3")); streamWriter.Write(lineaFormateada); } } //Pedido Anterios if (!String.IsNullOrEmpty(pedido.ProductoClaveAnt.Trim())) { streamWriter.WriteLine(Environment.NewLine + clavePedido + "3"); foreach (var detalleLinea in pedido.ProductoClaveAnt.Split('^')) { var linea = detalleLinea.Split(',')[0].Substring(0, 5); var cantidad = detalleLinea.Split(',')[1]; var lineaFormateada = String.Format("B 000{0}00{1}0000000000000{2}01", linea, Convert.ToInt16(cantidad).ToString("D3"), Convert.ToInt16(pedido.Campana) - 1); streamWriter.WriteLine(lineaFormateada); } } } } }