Ejemplos de números críticos de procedimiento almacenado
Configurar un programa para crear un número crítico básico es relativamente fácil.
El primer paso es configurar el número crítico en el formulario Números críticos.
- Elija el nombre del programa para su procedimiento almacenado personalizado. Le recomendamos que cree un convenio de nomenclatura para sus procedimiento personalizados para que no entre en conflicto con los procedimientos actuales o futuros, utilizando un prefijo que incluya el nombre de la compañía de la única manera que se pueda hacer.
- Elija los parámetros que quiera establecer sin cambiar los valores en el código. La planificación cuidadosa de las definiciones del parámetro pueden hacer que el mismo programa sea útil para los múltiples números críticos que quiera recuperar. Por ejemplo, puede establecer un ID de comprador específico o hacer que el mismo programa se ejecute en tres almacenes diferentes.
- Tenga en cuenta que puede reemplazar una y toda la configuración de este formulario en su código.
A continuación, abra el analizador de consultas o su editor preferido y cree su procedimiento almacenado personalizado. Los parámetros de cada número crítico son los mismos y deben parecerse a esto (donde SSSWBCanCoBookSp es el nombre de su procedimiento):
CREATE PROCEDURE [dbo].[SSSWBCanCoBookSp] (
@KPINum WBKPINumType
, @AsOfDate DateType
, @Amount AmountType OUTPUT
, @Parm1 WBSourceNameType = NULL
, @Parm2 WBSourceNameType = NULL
, @Parm3 WBSourceNameType = NULL
, @Parm4 WBSourceNameType = NULL
, @Parm5 WBSourceNameType = NULL
, @Parm6 WBSourceNameType = NULL
, @Parm7 WBSourceNameType = NULL
, @Parm8 WBSourceNameType = NULL
, @Parm9 WBSourceNameType = NULL
, @Parm10 WBSourceNameType = NULL
, @Parm11 WBSourceNameType = NULL
, @Parm12 WBSourceNameType = NULL
, @Parm13 WBSourceNameType = NULL
, @Parm14 WBSourceNameType = NULL
, @Parm15 WBSourceNameType = NULL
, @Parm16 WBSourceNameType = NULL
, @Parm17 WBSourceNameType = NULL
, @Parm18 WBSourceNameType = NULL
, @Parm19 WBSourceNameType = NULL
, @Parm20 WBSourceNameType = NULL
, @Parm21 WBSourceNameType = NULL
, @Parm22 WBSourceNameType = NULL
, @Parm23 WBSourceNameType = NULL
, @Parm24 WBSourceNameType = NULL
, @Parm25 WBSourceNameType = NULL
, @Parm26 WBSourceNameType = NULL
, @Parm27 WBSourceNameType = NULL
, @Parm28 WBSourceNameType = NULL
, @Parm29 WBSourceNameType = NULL
, @Parm30 WBSourceNameType = NULL
, @Parm31 WBSourceNameType = NULL
, @Parm32 WBSourceNameType = NULL
, @Parm33 WBSourceNameType = NULL
, @Parm34 WBSourceNameType = NULL
, @Parm35 WBSourceNameType = NULL
, @Parm36 WBSourceNameType = NULL
, @Parm37 WBSourceNameType = NULL
, @Parm38 WBSourceNameType = NULL
, @Parm39 WBSourceNameType = NULL
, @Parm40 WBSourceNameType = NULL
, @Parm41 WBSourceNameType = NULL
, @Parm42 WBSourceNameType = NULL
, @Parm43 WBSourceNameType = NULL
, @Parm44 WBSourceNameType = NULL
, @Parm45 WBSourceNameType = NULL
, @Parm46 WBSourceNameType = NULL
, @Parm47 WBSourceNameType = NULL
, @Parm48 WBSourceNameType = NULL
, @Parm49 WBSourceNameType = NULL
, @Parm50 WBSourceNameType = NULL
) AS
Escriba la lógica para calcular su valor y asignarlo en @Amount. El importe se devuelve para mostrarlo al usuario.
Para recuperar cualquier parámetro que pueda haber configurado, puede utilizar una función estándar. Es dbo.SSSWBGetParm. Apruebe el número crítico que está tratando (@KPINum) y el parámetro que quiere recuperar. En primer lugar se busca el parámetro en ese número crítico específico y, a continuación, en la lista general del formulario Parámetros de números críticos. Para recuperar un parámetro llamado "Acct" y establecerlo en una variable en su procedimiento almacenado, realice lo siguiente:
Ejemplo de líneas de órdenes vencidas
CREATE PROCEDURE SSSWBCanCoitemPastDueSp (
@KPINum WBKPINumType
, @AsOfDate DateType
, @Amount AmountType OUTPUT
, @Parm1 WBSourceNameType = NULL
, @Parm2 WBSourceNameType = NULL
, @Parm3 WBSourceNameType = NULL
, @Parm4 WBSourceNameType = NULL
, @Parm5 WBSourceNameType = NULL
, @Parm6 WBSourceNameType = NULL
, @Parm7 WBSourceNameType = NULL
, @Parm8 WBSourceNameType = NULL
, @Parm9 WBSourceNameType = NULL
, @Parm10 WBSourceNameType = NULL
, @Parm11 WBSourceNameType = NULL
, @Parm12 WBSourceNameType = NULL
, @Parm13 WBSourceNameType = NULL
, @Parm14 WBSourceNameType = NULL
, @Parm15 WBSourceNameType = NULL
, @Parm16 WBSourceNameType = NULL
, @Parm17 WBSourceNameType = NULL
, @Parm18 WBSourceNameType = NULL
, @Parm19 WBSourceNameType = NULL
, @Parm20 WBSourceNameType = NULL
, @Parm21 WBSourceNameType = NULL
, @Parm22 WBSourceNameType = NULL
, @Parm23 WBSourceNameType = NULL
, @Parm24 WBSourceNameType = NULL
, @Parm25 WBSourceNameType = NULL
, @Parm26 WBSourceNameType = NULL
, @Parm27 WBSourceNameType = NULL
, @Parm28 WBSourceNameType = NULL
, @Parm29 WBSourceNameType = NULL
, @Parm30 WBSourceNameType = NULL
, @Parm31 WBSourceNameType = NULL
, @Parm32 WBSourceNameType = NULL
, @Parm33 WBSourceNameType = NULL
, @Parm34 WBSourceNameType = NULL
, @Parm35 WBSourceNameType = NULL
, @Parm36 WBSourceNameType = NULL
, @Parm37 WBSourceNameType = NULL
, @Parm38 WBSourceNameType = NULL
, @Parm39 WBSourceNameType = NULL
, @Parm40 WBSourceNameType = NULL
, @Parm41 WBSourceNameType = NULL
, @Parm42 WBSourceNameType = NULL
, @Parm43 WBSourceNameType = NULL
, @Parm44 WBSourceNameType = NULL
, @Parm45 WBSourceNameType = NULL
, @Parm46 WBSourceNameType = NULL
, @Parm47 WBSourceNameType = NULL
, @Parm48 WBSourceNameType = NULL
, @Parm49 WBSourceNameType = NULL
, @Parm50 WBSourceNameType = NULL
) AS
DECLARE @CoStatList LongListType
, @CoitemStatList LongListType
, @CredHold ListYesNoType
, @LateDays GenericIntType
, @QtyDue QtyUnitType
, @OrdTotal AmountType
, @ParmsSite SiteType
, @CustNum CustNumType
, @CoNum CoNumType
, @LineFilter CoLineType
, @ItemFilter ItemType
, @ProdCodeFilter ProductCodeType
, @WhseFilter WhseType
, @StatFilter CoitemStatusType
SELECT @ParmsSite = site
FROM parms
SET @CoStatList = ISNULL(dbo.SSSWBGetParm(@CrNum, 'COStatusList'), 'POS')
SET @CoitemStatList = ISNULL(dbo.SSSWBGetParm(@CrNum, 'COITEMStatusList'), 'PO')
SET @CredHold = ISNULL(dbo.SSSWBGetParm(@CrNum, 'CredHold'), 0)
SET @LateDays = ISNULL(dbo.SSSWBGetParm(@CrNum, 'LateDaysTolerance'), 0)
SET @CustNum = dbo.ExpandKyByType('CustNumType', @Parm1)
SET @CoNum = dbo.ExpandKyByType('CoNumType', @Parm2)
SET @LineFilter = NULLIF(@Parm3, '')
SET @ItemFilter = NULLIF(@Parm4, '')
SET @ProdCodeFilter = NULLIF(@Parm5, '')
SET @WhseFilter = NULLIF(@Parm6, '')
SET @StatFilter = NULLIF(@Parm7, '')
SELECT @Amount = COUNT(*)
FROM coitem
LEFT OUTER JOIN item itm
ON itm.item = coitem.item
WHERE (@CoNum IS NULL OR co_num = @CoNum)
AND charindex(coitem.stat, @CoitemStatList) > 0
AND qty_ordered > qty_shipped
AND ISNULL(due_date, '1900-01-01') >= dateadd(dd, @LateDays, @AsOfDate)
AND ship_site = @ParmsSite
AND EXISTS (SELECT 1 FROM co
WHERE (@CustNum IS NULL OR co.cust_num = @CustNum)
AND co.co_num = coitem.co_num
AND charindex(co.stat, @CoStatList) > 0
AND co.credit_hold = @CredHold
)
AND (@LineFilter IS NULL OR coitem.co_line = @LineFilter)
AND (@ItemFilter IS NULL OR coitem.item = @ItemFilter)
AND (@ProdCodeFilter IS NULL OR itm.product_code = @ProdCodeFilter)
AND EXISTS (SELECT 1 FROM co
WHERE (@WhseFilter IS NULL OR co.whse = @WhseFilter)
AND (@StatFilter IS NULL OR co.stat = @StatFilter)
AND co.co_num = coitem.co_num)
RETURN 0