Přecenění skladu

Top  Previous  Next

Seznam témat:

řešení

 

Řešení

Přecenění je možné pouze k 1.1. daného roku a pouze u skladů vedených metodou FI-FO.

 

Nejjednodušší způsob je v případě, kdy v novém roce nebyly žádné pohyby na skladě. Pak stačí v novém roce vydat vše za staré ceny (pomocí funkce „Vydat vše“ při výdeji) a přijmout vše zpět za nové ceny (pomocí funkce „Příjem z výdeje“ při příjmu). Příjem zpět proběhne sice za nové ceny, ale evidenční cenu na příjemce lze aktualizovat, protože z ní ještě nebylo vydáváno.

 

V případě, že v nové roce již byly pohyby na skladě je problém složitější. Postup je následující:

 

Vypsat obsah tabulky opobjitrez do souboru

SELECT * FROM dba.opobjitrez ># C:\opobjitrez.txt

 

Zrušit všechny rezervace, nastavit v parametrech skladu „Likvidace požadavků na dodavatele po příjmu“ = Neprovádět.
Vytvořit pomocnou tabulku, která má stejnou strukturu jako osklprijemit (např. osklprijemit_pom) a vytvořit pohyby pro přecenění skladu (příjem, výdej).
Zjistit položky příjemek ze starého roku, které byly vydány v novém roce a vložit do osklprijemit_pom:

INSERT INTO dba.osklprijemit_pom

( SELECT DISTINCT p.*

 FROM dba.osklprijemit as p, dba.osklvydejit as v

 WHERE p.data_id=v.prijemeviddata_id AND p.id_poradi=v.prijemevidporadi_id

       AND p.obd_id<'2003-01-01' AND v.obd_id>='2003-01-01' AND p.rada_id in (‘SKL1’))

 

Aktualizovat množství v pomocné tabulce (případy, kdy byla vydána jen část):

UPDATE osklprijemit_pom set mnoz=(SELECT SUM(v.mnoz)

FROM dba.osklprijemit as p, dba.osklvydejit as v

WHERE p.data_id=v.prijemeviddata_id AND p.id_poradi=v.prijemevidporadi_id

            AND p.obd_id<'2003-01-01' AND v.obd_id>='2003-01-01' AND p.rada_id ='SKL1'

            AND p.data_id=osklprijemit_pom.data_id AND p.id_poradi=osklprijemit_pom.id_poradi

GROUP BY v.prijemevidporadi_id)

 

 

Vydat vše co bylo přijato ve starém roce a dosud nebylo vydáno (staré ceny):

a)        vydat vše co je na skladě (např. výdejka č. SKL1 000001)

b)        z výdejky zrušit položky, které mají vazbu na příjemky z nového roku

 

DELETE FROM dba. osklvydejit

FROM

dba.osklvydejit as v, dba.osklprijemit as p

WHERE v.prijemeviddata_id=p.data_id AND v.prijemevidporadi_id=p.id_poradi

AND v.obd_id='2003-01-01' AND v.age_id='VYD' AND v.rada_id='SKL1' AND v.dokl_id=1 AND p.obd_id='2003-01-01'

 

Vytvořit hlavičku příjemky v novém roce (např. příjemka č. SKL1 000001).
V tabulce osklprijemit_pom změnit č. příjemky dle bodu 6.

UPDATE dba.osklprijemit_pom SET obd_id=’2003-01-01’,dokl_id=1

 

V tabulce osklprijemit_pom změnit pohyb a zvýšit položku id_poradi o vhodné číslo dle nejvyššího id_poradi v databázi (např. o 1 000 000 tak, aby bylo zřejmé, že se jedná o položky příjemky, jejichž id_poradi bylo zvýšeno):

UPDATE dba.osklprijemit_pom SET id_poradi=(id_poradi + 1 000 000),pohyb_id=’pohyb1’

 

Do příjemky SKL1 000001 vložit položky z osklprijemit_pom:

INSERT INTO dba.osklprijemit (SELECT * FROM dba.osklprijemit_pom)

 

 

U výdejek (mimo výdejku SKL1 000001) z nového roku, které mají příjemku ve starém roce zvýšit položky prijemdodporadi_id, prijemevidporadi_id o stejné číslo jako v případě změny pohybu v tabulce osklprijemit_pom :

UPDATE (SELECT * FROM dba.osklvydejit as v, dba.osklprijemit as p

WHERE v.prijemeviddata_id=p.data_id AND v.prijemevidporadi_id=p.id_poradi

      AND v.obd_id=’2003-01-01’ AND v.age_id=’VYD’ AND v.rada_id=’SKL1’

      AND v.dokl_id<>1 AND p.obd_id=’2002-01-01’) as tab

SET prijemdodporadi_id=(prijemdodporadi_id + 1 000 000),

       prijemevidporadi_id=(prijemevidporadi_id + 1 000 000)

 

tím se uvolní příjemky ve starém roce k výdeji a zároveň na výdejkách zůstanou zachovány vazby na faktury a přijaté objednávky.

 

Vydat vše co bylo přijato ve starém roce a nebylo vydáno:

a)        vydat vše co je na skladě (např. výdejka č. SKL1 000002)

b)        z výdejky zrušit položky, které mají vazbu na příjemky z nového roku

DELETE FROM

(SELECT *

FROM dba.osklvydejit as v, dba.osklprijemit as p

WHERE v.prijemeviddata_id=p.data_id AND v.prijemevidporadi_id=p.id_poradi

      AND v.obd_id=’2003-01-01’ AND v.age_id=’VYD’ AND v.rada_id=’SKL1’

      AND v.dokl_id=2 AND p.obd_id=’2003-01-01’) as tab

 

Vytvořit příjemku č. SKL1 000002  z výdejky č. SKL1 000001 (pomocí funkce “Příjem z výdeje”)
Provést kontrolu:

a)        Stav na skladě v novém roce musí být stejný jako před akcí

b)        Hodnota příjemek SKL1 000001 a SKL1 000002 musí být stejná jako hodnota skladu na konci starého roku a stejná jako hodnota výdejek SKL1 000001 a SKL1 000002.

 

Aktualizovat evidenční ceny na příjemkách v novém roce. Akce musí proběhnout pomocí SQL dotazu, protože z příjemek již bylo vydáváno – např. pomocí další pomocné tabulky “omatprecen”, která obsahuje sloupce:

1.        kodmat

2.        newevidcena

 

Tabulka se musí naplnit daty např. z Excelu, kde si zákazník připraví nový ceník. Ten se pak uloží do souboru s oddělovači „  , “ (čárka) – např. C:\ceny.txt

INPUT INTO dba.omatprecen FROM C:\ceny.txt

 

Aktualizace cen:

 

UPDATE

(SELECT material_id,evidcena  FROM dba.osklprijemit

WHERE obd_id=’2003-01-01’ AND rada_id=’SKL1’ AND material_id in

(SELECT kodmat FROM dba.omatprecen)) as tab  SET evidcena=(SELECT newevidcena FROM dba.omatprecen WHERE kodmat=material_id)

 

 

Aktualizovat evidenční ceny na výdejkách v novém roce kromě výdejek SKL 000001 a SKL1 000002 – stejným způsobem jako v předchozím bodě

UPDATE

(SELECT material_id,evidcena

   FROM dba.osklvydejit

WHERE obd_id=’2003-01-01’ AND rada_id=’SKL1’ AND dokl_id <> 1 AND dokl_id<>2

      AND material_id in

(SELECT kodmat FROM dba.omatprecen)) as tab

        SET evidcena=(SELECT newevidcena FROM dba.omatprecen WHERE kodmat=material_id)

 

 

Přeúčtovat všechny příjemky a výdejky v novém roce.

 

Provést zpět import rezervací ze souboru dle bodu 1).

INPUT INTO dba.opobjitrez FROM C:\opobjitrez.txt.

 

Nastavit zpět parametry skladu tak, jak byly před provedením bodu 2).

 

Související témata

Přecenění_skladu