Asociado Reporta que al querer generar un prefolio le muestra el siguiente error «Ocurrió un error en el servidor».
Este escenario se presenta porque la tienda remisiona llevo acabo una devolución de entrega pendiente por cantidades parciales de uno o varios Skus cuando la tienda entrega que en este caso siempre es un LSC con WMS BY ya había llevado acabo el surtido de la mercancía y aun no llega a su flujo de generar el prefolio.

Procedimiento:
1- Consultar la orden en la base de datos del sistema de Fleet para validar si en la columna de «Devuelto» contamos con cantidades.
USE fleet_management;
GO
declare @NoOrden varchar(18);
declare @TiendaId integer;
declare @showPrefolioDetail integer ;
declare @showCatalogs integer;
declare @OrdenEntregaId int;
DECLARE @OrdenEntrega TABLE(ordenentregaid bigint, noorden varchar(18), tiendaremisionid bigint, tiendaentregaid bigint);
set @showCatalogs = 0;
set @showPrefolioDetail = 0;
-- NO.TIENDA
SET @TiendaId= 1319
--NO.Orden
set @NoOrden= 170671
BEGIN TRANSACTION
INSERT INTO @OrdenEntrega (ordenentregaid, noorden, tiendaremisionid, tiendaentregaid)
SELECT DISTINCT oe.ordenentregaid, oe.noorden, oe.tiendaremisionid, oea.tiendaentregaid
FROM ordenentrega oe WITH(NOLOCK)
INNER JOIN OrdenEntregaArticulo oea WITH(NOLOCK) ON oea.ordenentregaid = oe.ordenentregaid AND oea.tiendaentregaid = @TiendaId
WHERE oe.noorden = @NoOrden
COMMIT TRANSACTION;
-- ORDEN
SELECT oe.ordenentregaid, oe.tiendaremisionid AS 'TIENDA REMISIÓN', oe.noorden
,DevolucionID
,dev.FechaModificacion
,dev.NoOrdenDevolucion
,dev.CodigoID
,EstatusOrden.Nombre AS 'Estatus'
,oe.NombreCliente AS 'Nombre Cliente'
,oe.FechaCreacion AS 'Fecha Creacion'
,oe.FechaVenta AS 'Fecha Venta'
,oe.ComentarioVenta AS 'Comentario'
,oe.FechaProgramada AS 'Programada'
,oe.TipoCliente AS 'Cliente'
,oe.TipoOrdenEntrega AS 'Tipo de Orden'
,ISNULL(oe.Transferencia, 'No') AS 'Transf.'
,oe.RazonPostVoided
,oe.PostVoided
,oe.DepartamentoID
,oe.OrigenVenta AS 'Origen de Venta'
,CASE oe.EntregaDirecta
WHEN 0 THEN 'No'
ELSE 'Si'
END AS 'Entrega Directa'
,TipoVenta.TipoVentaNombre AS 'TipoVenta'
,DOE.Nombre AS 'DestinoOrdenEntrega'
,oe.Cancelado
,' >> ' AS 'BeginData'
,*
FROM OrdenEntrega oe WITH(NOLOCK)
INNER JOIN @OrdenEntrega o ON o.ordenentregaid = oe.ordenentregaid
LEFT JOIN EstatusOrdenEntrega EstatusOrden WITH(NOLOCK) ON oe.EstatusOrdenEntregaID = EstatusOrden.EstatusOrdenEntregaID
INNER JOIN TipoVenta WITH(NOLOCK) ON oe.TipoVentaID = TipoVenta.TipoVentaID
INNER JOIN DestinoOrdenEntrega DOE WITH(NOLOCK) ON oe.DestinoOrdenEntregaID = DOE.DestinoOrdenEntregaID
LEFT JOIN Devolucion dev WITH(NOLOCK) on dev.OrdenEntregaID = oe.OrdenEntregaID;
-- DETALLE
SELECT oea.ordenentregaarticuloid, oea.ordenentregaid, o.tiendaremisionid AS 'TIENDA REMISIÓN', oea.tiendaentregaid AS 'TIENDA ENTREGA'
,oea.NoArticulo AS 'Artic.'
,oea.NoSecuencia
,oea.Nombre AS 'Descripcion'
,EA.EstatusArticuloNombre AS 'Estatus Articulo'
,oea.metododeenvio
--,oea.MetodoEntregaID AS 'Entrega proveedor'
,oea.Devuelto
,oea.FechaDeEntrega AS 'Fecha Entrega'
,oea.Precio
,oea.Pedido
,oea.Disponible
,oea.AEntregar AS 'A Entrega'
,oea.ASurtir AS 'A Surtir'
,oea.Entregado
,oea.Surtidos AS 'Surtido'
,CASE oea.EnDevolucion
WHEN 0 THEN 'No'
ELSE 'Si'
END AS 'Dev.'
,ME.MetodoEntregaNombre AS 'MetodoEntrega'
,FechaTransaccionItem AS 'Fecha'
,NumeroTransaccionItem AS 'Transaccion'
,CajaItem AS 'Caja'
,LEN(oea.UPC)
,' >> ' AS 'BeginData'
,oea.OrdenEntregaArticuloID
,oea.PorDevolver
,oea.Cancelado
,oea.PostVoided
,*
FROM OrdenEntregaArticulo oea WITH(NOLOCK)
INNER JOIN @OrdenEntrega o ON o.ordenentregaid = oea.ordenentregaid
INNER JOIN EstatusArticulo EA WITH(NOLOCK) ON oea.EstatusArticuloID = EA.EstatusArticuloID
INNER JOIN MetodoEntrega ME WITH(NOLOCK) ON oea.MetodoEntregaID = ME.MetodoEntregaID
INNER JOIN OrdenEntrega OE WITH(NOLOCK) on oea.OrdenEntregaID = OE.OrdenEntregaID
ORDER BY oea.NoSecuencia;
SELECT oet.ordenentregaid, oet.tiendaid AS 'TIENDA ENTREGA', e.Nombre AS 'Estatus', oet.*
FROM OrdenEntregaTienda oet WITH(NOLOCK)
INNER JOIN @OrdenEntrega o ON o.ordenentregaid = oet.ordenentregaid
LEFT JOIN EstatusOrdenEntrega e WITH(NOLOCK) ON e.EstatusOrdenEntregaID = oet.EstatusOrdenEntregaID

2- Consultar los surtidos realizados para la orden reportada, para ver las cantidades que se surtieron de cada SKU
declare @NoOrden varchar(18);
declare @TiendaId integer;
DECLARE @OrdenEntrega TABLE(ordenentregaid bigint, noorden varchar(18), tiendaremisionid bigint, tiendaentregaid bigint);
USE fleet_management;
-- TIENDA ENTREGA
SET @TiendaId= 1319
-- ORDEN DE ENTREGA
SET @NoOrden = 170671
BEGIN TRANSACTION;
INSERT INTO @OrdenEntrega (ordenentregaid, noorden, tiendaremisionid, tiendaentregaid)
SELECT DISTINCT oe.ordenentregaid, oe.noorden, oe.tiendaremisionid, oea.tiendaentregaid
FROM ordenentrega oe WITH(NOLOCK)
INNER JOIN OrdenEntregaArticulo oea WITH(NOLOCK) ON oea.ordenentregaid = oe.ordenentregaid AND oea.tiendaentregaid = @TiendaId
WHERE oe.noorden = @NoOrden --AND oe.ordenentregaid IN (18606267)
COMMIT TRANSACTION;
SELECT ts.horainicio, ts.horafin, ts.codigoid AS 'TICKET SURTIDO', oe.noorden AS 'ORDEN', oea.NoArticulo AS 'SKU', oea.nosecuencia AS 'SECUENCIA', oea.pedido AS 'QTY VTA', tsd.cantidadconfirmacion AS 'QTY SURTIDA', ts.surtidofleet AS 'FLEET/TC70', ts.lpn, ts.foliolpn, ts.ticketsurtidoid
FROM ticketSurtido ts WITH(NOLOCK)
INNER JOIN @OrdenEntrega o ON o.ordenentregaid = ts.OrdenEntregaID
INNER JOIN TicketSurtidoDetalle tsd WITH(NOLOCK) ON tsd.TicketSurtidoID = ts.ticketsurtidoid
INNER JOIN ordenentregaarticulo oea ON oea.ordenentregaid = ts.ordenentregaid AND oea.ordenentregaarticuloid = tsd.ordenentregaarticuloid
INNER JOIN ordenentrega oe ON oe.ordenentregaid = ts.ordenentregaid
--WHERE ts.lpn = 'CGM000003203'
ORDER BY ts.horainicio, oea.nosecuencia

3- Una vez que identificamos que la orden cuenta con una devolución generada, las cantidades devueltas se tienen que restar a las cantidades que se surtieron.
Ejemplo, de esta orden se surtieron 15 piezas para cada SKU, pero se llevo acabo la devolución de 9 piezas de cada SKU, por lo tanto la cantidad surtida debería de quedar en 6 piezas.
Mitigación:
1- Consultar el detalle surtido de cada sku, para ello necesitamos tomar el valor de «Ticketsurtidoid» de la consulta anterior.

2-Realizamos el siguiente select.
select LPN, * from TicketSurtido where TicketSurtidoID in(16016729)
select * from TicketSurtidoDetalle where TicketSurtidoId in (16016729)

Si observamos en la tabla de TicketSurtidoDetalle la columna de Cantidad confirmación dice 15 piezas, a esa columna es a la que se le tiene que hacer la modificación, con el siguiente update,
2- Aplicar update.
BEGIN TRANSACTION;<br>update TicketSurtidoDetalle set CantidadConfirmacion = 6 where TicketSurtidoID =16016729<br>COMMIT TRANSACTION;
Una vez hecho la modificación la cantidad confirmación cambiaría a 6 como la siguiente imagen y es ahí cuando podemos pedirle a la tienda que intente nuevamente generar el prefolio a la orden reportada.
