none
Saldo do estoque pelo custo de compra/inicial

    Question

  • sou novo em sql serve 

    preciso de um ajudar de vcs..

    eu tenho de calcula o custo de compra inicial 

    eu tenho 2 tabela 

    tabela (produto)

    tabela (item do produto) 

    eu tenho de pegar o valor compra inicial na tabela produto.

    i na tabela item do produto e ver quantidade do produto x tem no estoque.

    e retorna o saldo de compra/inicial dos produtos.

    CREATE TABLE [dbo].[SAC441] (
      [CDPROD] int NOT NULL,
      [REFERE] varchar(30) COLLATE Latin1_General_CI_AS NULL,
      [NOMCUR] varchar(29) COLLATE Latin1_General_CI_AS NULL,
      [NOMPRO] varchar(80) COLLATE Latin1_General_CI_AS NULL,
      [UNIDAD] varchar(2) COLLATE Latin1_General_CI_AS CONSTRAINT [DF__SAC441__UNIDAD__4B7734FF] DEFAULT 'UN' NULL,
      [CDLOCA] int CONSTRAINT [DF__SAC441__CDLOCA__04EFA97D] DEFAULT 1 NULL,
      [PESBRU] float CONSTRAINT [DF__SAC441__PESBRU__05E3CDB6] DEFAULT 0 NULL,
      [PESLIQ] float CONSTRAINT [DF__SAC441__PESLIQ__06D7F1EF] DEFAULT 0 NULL,
      [QTDEMB] int CONSTRAINT [DF__SAC441__QTDEMB__07CC1628] DEFAULT 1 NULL,
      [CDFORN] int CONSTRAINT [DF__SAC441__CDFORN__08C03A61] DEFAULT 0 NULL,
      [ESTMIN] float CONSTRAINT [DF__SAC441__ESTMIN__09B45E9A] DEFAULT 0 NULL,
      [CDREPO] int CONSTRAINT [DF__SAC441__CDREPO__0AA882D3] DEFAULT 0 NULL,
      [CDCATE] int CONSTRAINT [DF__SAC441__CDCATE__0B9CA70C] DEFAULT 0 NULL,
      [CDMARC] int CONSTRAINT [DF__SAC441__CDMARC__0C90CB45] DEFAULT 0 NULL,
      [CDSGRU] int CONSTRAINT [DF__SAC441__CDSGRU__0D84EF7E] DEFAULT 0 NULL,
      [DSCMAX] float CONSTRAINT [DF__SAC441__DSCMAX__0E7913B7] DEFAULT 0 NULL,
      [COMISS] float CONSTRAINT [DF__SAC441__COMISS__6CE315C2] DEFAULT 0 NULL,
      [CURVAS] varchar(1) COLLATE Latin1_General_CI_AS CONSTRAINT [DF__SAC441__CURVAS__062DE679] DEFAULT 'A' NULL,
      [CDIMPO] int CONSTRAINT [DF__SAC441__CDIMPO__1E7A7156] DEFAULT 0 NULL,
      [TPPROD] int CONSTRAINT [DF__SAC441__TPPROD__10615C29] DEFAULT 0 NULL,
      [PGCOMI] bit CONSTRAINT [DF__SAC441__PGCOMI__11558062] DEFAULT 1 NULL,
      [LISTAS] bit CONSTRAINT [DF__SAC441__LISTAS__1249A49B] DEFAULT 1 NULL,
      [COMPLE] bit CONSTRAINT [DF__SAC441__COMPLE__133DC8D4] DEFAULT 0 NULL,
      [CESTAS] bit CONSTRAINT [DF__SAC441__CESTAS__1431ED0D] DEFAULT 0 NULL,
      [RETENC] bit CONSTRAINT [DF__SAC441__RETENC__15261146] DEFAULT 0 NULL,
      [ATIVOS] bit CONSTRAINT [DF__SAC441__ATIVOS__161A357F] DEFAULT 1 NULL,
      [BALANC] bit CONSTRAINT [DF__SAC441__BALANC__170E59B8] DEFAULT 0 NULL,
      [POCKET] bit CONSTRAINT [DF__SAC441__POCKET__18027DF1] DEFAULT 1 NULL,
      [PROMOC] bit CONSTRAINT [DF__SAC441__PROMOC__18F6A22A] DEFAULT 0 NULL,
      [PERDES] float CONSTRAINT [DF__SAC441__PERDES__19EAC663] DEFAULT 0 NULL,
      [PRCPRO] money CONSTRAINT [DF__SAC441__PRCPRO__1ADEEA9C] DEFAULT 0 NULL,
      [INICIA] datetime NULL,
      [FINALI] datetime NULL,
      [CDORIG] int CONSTRAINT [DF__SAC441__CDORIG__1BD30ED5] DEFAULT 0 NULL,
      [CDTRIB] int CONSTRAINT [DF__SAC441__CDTRIB__1CC7330E] DEFAULT 0 NULL,
      [CLASSI] varchar(10) COLLATE Latin1_General_CI_AS NULL,
      [PRECOM] money CONSTRAINT [DF__SAC441__PRECOM__1EAF7B80] DEFAULT 0 NULL,
      [ESTADO] varchar(2) COLLATE Latin1_General_CI_AS NULL,
      [PERIPI] float CONSTRAINT [DF__SAC441__PERIPI__5046D714] DEFAULT 0 NULL,
      [PERFRE] float CONSTRAINT [DF__SAC441__PERFRE__513AFB4D] DEFAULT 0 NULL,
      [PERRET] float CONSTRAINT [DF__SAC441__PERRET__522F1F86] DEFAULT 0 NULL,
      [PERSUB] float CONSTRAINT [DF__SAC441__PERSUB__532343BF] DEFAULT 0 NULL,
      [PERSEG] float CONSTRAINT [DF__SAC441__PERSEG__541767F8] DEFAULT 0 NULL,
      [PEROUT] float CONSTRAINT [DF__SAC441__PEROUT__550B8C31] DEFAULT 0 NULL,
      [CSTASC] float CONSTRAINT [DF__SAC441__CSTASC__55FFB06A] DEFAULT 0 NULL,
      [PERRED] float CONSTRAINT [DF__SAC441__PERRED__56F3D4A3] DEFAULT 0 NULL,
      [CREICM] float CONSTRAINT [DF__SAC441__CREICM__57E7F8DC] DEFAULT 0 NULL,
      [CSTACC] float CONSTRAINT [DF__SAC441__CSTACC__5AC46587] DEFAULT 0 NULL,
      [PEREST] float CONSTRAINT [DF__SAC441__PEREST__5BB889C0] DEFAULT 0 NULL,
      [LUCROS] float CONSTRAINT [DF__SAC441__LUCROS__5CACADF9] DEFAULT 0 NULL,
      [PVENDA] money CONSTRAINT [DF__SAC441__PVENDA__5DA0D232] DEFAULT 0 NULL,
      [ULCOMP] datetime NULL,
      [ULVEND] datetime NULL,
      [CTMEDI] money CONSTRAINT [DF__SAC441__CTMEDI__5E94F66B] DEFAULT 0 NULL,
      [BASCLC] money CONSTRAINT [DF__SAC441__BASCLC__75435199] DEFAULT 0 NULL,
      [FALTAS] bit CONSTRAINT [DF__SAC441__FALTAS__0C26B6F1] DEFAULT 0 NULL,
      [BONIFI] bit CONSTRAINT [DF__SAC441__BONIFI__3434A84B] DEFAULT 0 NULL,
      [VLRRED] money CONSTRAINT [DF__SAC441__VLRRED__7CAF6937] DEFAULT 0 NULL,
      [GRADES] bit CONSTRAINT [DF__SAC441__GRADES__7D6E8346] DEFAULT 0 NULL,
      [PCUSTO] money CONSTRAINT [DF__SAC441__PCUSTO__1DDB52D8] DEFAULT 0 NULL,
      [PERICM] money CONSTRAINT [DF__SAC441__PERICM__326C5B6A] DEFAULT 0 NULL,
      [PEROPE] float CONSTRAINT [DF__SAC441__PEROPE__33607FA3] DEFAULT 0 NULL,
      [CDTTRI] int CONSTRAINT [DF__SAC441__CDTTRI__6D58170E] DEFAULT 0 NULL,
      [ULTIMA] datetime NULL,
      [AQUISI] money CONSTRAINT [DF__SAC441__AQUISI__7BA63665] DEFAULT 0 NULL,
      [DESCON] float CONSTRAINT [DF__SAC441__DESCON__7C9A5A9E] DEFAULT 0 NULL,
      [ALICMS] int CONSTRAINT [DF__SAC441__ALICMS__7E82A310] DEFAULT 0 NULL,
      [ICMSUB] int CONSTRAINT [DF__SAC441__ICMSUB__7F76C749] DEFAULT 0 NULL,
      [REDICM] float CONSTRAINT [DF__SAC441__REDICM__006AEB82] DEFAULT 0 NULL,
      [RDICMS] float CONSTRAINT [DF__SAC441__RDICMS__025333F4] DEFAULT 0 NULL,
      [MODICM] varchar(2) COLLATE Latin1_General_CI_AS NULL,
      [MARICM] float CONSTRAINT [DF__SAC441__MARICM__0347582D] DEFAULT 0 NULL,
      [VLRICM] money CONSTRAINT [DF__SAC441__VLRICM__043B7C66] DEFAULT 0 NULL,
      [MDICMS] varchar(2) COLLATE Latin1_General_CI_AS NULL,
      [MGICMS] float CONSTRAINT [DF__SAC441__MGICMS__052FA09F] DEFAULT 0 NULL,
      [VLICMS] money CONSTRAINT [DF__SAC441__VLICMS__0623C4D8] DEFAULT 0 NULL,
      [CODPIS] varchar(2) COLLATE Latin1_General_CI_AS NULL,
      [CODCOF] varchar(2) COLLATE Latin1_General_CI_AS NULL,
      [TRIIPI] varchar(2) COLLATE Latin1_General_CI_AS NULL,
      [PCANTE] money CONSTRAINT [DF__SAC441__PCANTE__0BDC9E2E] DEFAULT 0 NULL,
      [CODIPI] int CONSTRAINT [DF__SAC441__CODIPI__012A0591] DEFAULT 0 NULL,
      [LOCALI] varchar(10) COLLATE Latin1_General_CI_AS NULL,
      [REFE01] varchar(30) COLLATE Latin1_General_CI_AS NULL,
      [REFE02] varchar(30) COLLATE Latin1_General_CI_AS NULL,
      [REFE03] varchar(30) COLLATE Latin1_General_CI_AS NULL,
      [REFE04] varchar(30) COLLATE Latin1_General_CI_AS NULL,
      [REFE05] varchar(30) COLLATE Latin1_General_CI_AS NULL,
      [REFE06] varchar(30) COLLATE Latin1_General_CI_AS NULL,
      [REFE07] varchar(30) COLLATE Latin1_General_CI_AS NULL,
      [REFE08] varchar(30) COLLATE Latin1_General_CI_AS NULL,
      [REFE09] varchar(30) COLLATE Latin1_General_CI_AS NULL,
      [CDTPRO] varchar(2) COLLATE Latin1_General_CI_AS NULL,
      [SUBTRI] float CONSTRAINT [DF__SAC441__SUBTRI__1B09D325] DEFAULT 0 NULL,
      [CSTCOM] money CONSTRAINT [DF__SAC441__CSTCOM__1BFDF75E] DEFAULT 0 NULL,
      [CSTVDA] money CONSTRAINT [DF__SAC441__CSTVDA__1CF21B97] DEFAULT 0 NULL,
      [BARRAS] varchar(14) COLLATE Latin1_General_CI_AS NULL,
      [PVISTA] money CONSTRAINT [DF__SAC441__PVISTA__1DE63FD0] DEFAULT 0 NULL,
      CONSTRAINT [SAC441_pk] PRIMARY KEY CLUSTERED ([CDPROD])
    )
    ON [PRIMARY]
    GO

    CREATE NONCLUSTERED INDEX [SAC441_idx] ON [dbo].[SAC441]
      ([REFERE])
    ON [PRIMARY]
    GO

    CREATE NONCLUSTERED INDEX [SAC441_idx2] ON [dbo].[SAC441]
      ([NOMPRO])
    ON [PRIMARY]
    GO

    CREATE TABLE [dbo].[SAC719] (
      [CDLOJA] smallint NOT NULL,
      [CDPROD] int NOT NULL,
      [LANCAM] int NOT NULL,
      [DTMOVI] datetime NOT NULL,
      [CDFUNC] int CONSTRAINT [DF__SAC719__CDFUNC__011FE3F0] DEFAULT 0 NULL,
      [OPERAC] varchar(2) COLLATE Latin1_General_CI_AS NOT NULL,
      [HISTOR] varchar(60) COLLATE Latin1_General_CI_AS NOT NULL,
      [TIPOMV] varchar(1) COLLATE Latin1_General_CI_AS NOT NULL,
      [CDCLIE] int NULL,
      [CDFORN] int NULL,
      [DOCUME] int NOT NULL,
      [QTDANT] float NULL,
      [QUANTI] float NOT NULL,
      [SALDOS] float CONSTRAINT [DF__SAC719__SALDOS__02140829] DEFAULT 0 NULL,
      CONSTRAINT [SAC719_pk] PRIMARY KEY CLUSTERED ([CDLOJA], [CDPROD], [LANCAM])
    )
    ON [PRIMARY]
    GO

    Thursday, June 27, 2013 11:46 AM

All replies

  • A tabela PRODUTO seria a SAC441 e a tabela itens de produtos seria a SAC719? 

    O que seriam 'itens de produtos'? Por acaso seria a tabela onde ficam registradas as movimentações, como aquisição, venda, transferência etc?

    Qual coluna contém o estoque atual?

    Sugiro que reescreva o enunciado do tópico de forma clara, atento às regras de gramática e de sintaxe, para que seja possível compreender o que está solicitando.

    Além disso, informe-nos quais colunas serão utilizadas. Por exemplo, qual coluna é 'valor compra inicial'?  Procure ser claro no enunciado, de modo a facilitar as sugestões.

    Qual método é para utilizar? LIFO, FIFO ou média ponderada?

    Como são registradas as movimentações? 


    Belo Horizonte, MG - Brasil

    • Edited by Jose.Diz Friday, June 28, 2013 6:45 PM ampliação
    Friday, June 28, 2013 3:16 PM
  • Ks-Trabalho,

    Sempre solicitamos que seja apresentada a estrutura das tabelas e demais objetos, mas também é importante que você nos oriente um pouco mais em relação a composição de cada objeto.

    O cálculo em relação ao Estoque acredito que deverá ser feito a cada movimentação, para isso, poderíamos utilizar um Stored Procedure ou Trigger, veja os exemplos abaixo:

    Create Table NovosProdutos
     (Codigo Int Identity(1,1),
       Descricao VarChar(20),
       Saldo Int)
    
    Insert Into NovosProdutos Values('Produto -'+Convert(VarChar(3),@@Identity),0)
    Go 100
    
    Create Table Movimentacao
     (Codigo Int Identity(1,1),
       CodProduto Int,
       TipoMovimentacao Char(1),
       Valor Int)
    
    
    Create Trigger T_MovimentacaoSaldo
    On Movimentacao
    After Insert, Update
    As
     Declare @TipoMovimentacao Char(1)
    
     Select @TipoMovimentacao=TipoMovimentacao from Inserted
    
     If @TipoMovimentacao = 'E'
      Begin
       Update NovosProdutos
       Set Saldo = Saldo + I.Valor
       from NovosProdutos NP Inner Join Inserted I
                                          On NP.Codigo = I.CodProduto  
      End
    
      If @TipoMovimentacao = 'S'
      Begin
       Update NovosProdutos
       Set Saldo = Saldo - I.Valor
       from NovosProdutos NP Inner Join Inserted I
                                          On NP.Codigo = I.CodProduto
      End
    
    --Fazendo lançamentos de entrada
    Insert Into Movimentacao Values(2,'E',10)
    Insert Into Movimentacao Values(2,'E',15)
    Insert Into Movimentacao Values(2,'E',5)
    Insert Into Movimentacao Values(2,'E',22)
    Insert Into Movimentacao Values(2,'E',10)
    
    --Fazendo lançamentos de saída
    Insert Into Movimentacao Values(2,'S',8)
    Insert Into Movimentacao Values(2,'S',5)
    Insert Into Movimentacao Values(2,'S',3)
    Insert Into Movimentacao Values(2,'S',2)
    Insert Into Movimentacao Values(2,'S',1)
    
    Insert Into Movimentacao Values(8,'E',10)
    Insert Into Movimentacao Values(9,'E',15)
    Insert Into Movimentacao Values(1,'E',5)
    Insert Into Movimentacao Values(3,'E',22)
    Insert Into Movimentacao Values(22,'E',10)
    
    --Fazendo lançamentos de saída
    Insert Into Movimentacao Values(8,'S',8)
    Insert Into Movimentacao Values(9,'S',5)
    Insert Into Movimentacao Values(1,'S',3)
    Insert Into Movimentacao Values(3,'S',2)
    Insert Into Movimentacao Values(22,'S',1)
    
    
    
    Select * from NovosProdutos

    Em relação ao valor inicial da compra o mesmo entendo também que será informado no cadastramento do item e depois o cálculo deverá levar em consideração quais regras?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    Friday, June 28, 2013 5:46 PM