Skocz do zawartości


Close Open
Close Open
Zdjęcie

Subiekt zestawieni sprzedaży z kosztami


  • Please log in to reply
49 replies to this topic

#21 loginmarcin

loginmarcin

    Kandydat

  • Forumowicze
  • PipPip
  • 41 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Katowice, Polska

Napisany 19 kwiecień 2010 - 21:07


AND
(dok__Dokument. dok_MagId IN ({DB:SELECT uz_IdMagazynu FROM pd_Uzytkownik.uz_Id}))

1. Przede wszystkim nie IN bo będzie tam tylko jedna wartość a nie zbiór wartości. Czyli zastępujemy IN znakiem '='
2. Nie stosuj kontrolki DB bo skoro użytkownik może wybrać tylko jedną wartość to 'de facto' nie ma wyboru :). Tam ma być zwykły select
3. Zapytanie : z jakiej tabeli ma pobrać dane ? Chyba raczej z pd_Uzytkownik. A dalej zapytanie rozbuduj o klauzulę WHERE uz_Id=......
4. Przeczytałeś w helpie dotyczącym zestawień sql o zmiennych globalnych ?


próbuje i dalej nic :(dok__Dokument. dok_MagId = (SELECT uz_IdMagazynu FROM pd_Uzytkownik WHERE uz_Id= {ID_UZYTKOWNIKA} ))

help

#22 birds22

birds22

    Entuzjasta

  • Forumowicze
  • PipPipPipPipPipPipPip
  • 1332 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Zduńska Wola

Napisany 19 kwiecień 2010 - 21:20

Zapytanie jest OK.
Czy użytkownik, na którym próbujesz ma przypisany domyślny magazyn? Czy na jego magazynie była sprzedaż ?
Sławek

#23 loginmarcin

loginmarcin

    Kandydat

  • Forumowicze
  • PipPip
  • 41 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Katowice, Polska

Napisany 19 kwiecień 2010 - 21:29

Faktycznie musiałem ustawić domyślny magazyn teraz jest ok. DZ
Chciałbym jeszcze zasięgnąć porady na temat zastosowania dwóch okresów wyboru np styczeń 2009 , styczeń 2010, czy do takiego zapytania trzeba użyć UNION

#24 birds22

birds22

    Entuzjasta

  • Forumowicze
  • PipPipPipPipPipPipPip
  • 1332 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Zduńska Wola

Napisany 19 kwiecień 2010 - 21:40

Myślę, że można spokojnie użyć Union. Zmień tylko nazwę drugiej kontrolki z Data na np Data2 aby były dwa wybory
Sławek

#25 loginmarcin

loginmarcin

    Kandydat

  • Forumowicze
  • PipPip
  • 41 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Katowice, Polska

Napisany 19 kwiecień 2010 - 21:59

Czy jest jakieś zapytanie które może dać wynik z zapytania SELECT - UNION ALL SELECT np porównanie dwóch okresów sprzedaży z wynikiem różnicy poniżej?

#26 birds22

birds22

    Entuzjasta

  • Forumowicze
  • PipPipPipPipPipPipPip
  • 1332 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Zduńska Wola

Napisany 20 kwiecień 2010 - 09:51

Po prostu dodaj następne złączenie UNION i zapytanie wyliczające różnicę z tych dwóch

Czyli będzie to coś w stylu:

select 'pozycja 1',netto=200, brutto=300
union all
select 'pozycja 2',netto=100, brutto=200
union all
select 'różnica', t1.netto-t2.netto as netto, t1.brutto-t2.brutto as brutto
from
(select netto=200, brutto=300)t1,
(select netto=100, brutto=200)t2

Sławek

#27 blindGuardian

blindGuardian

    Kandydat

  • Forumowicze
  • PipPip
  • 32 Postów:

Napisany 21 kwiecień 2010 - 23:05

Hej, to mój pierwszy post:) więc się nie wkurzajcie jak zadam banalne pytanie:). Mam podobny problem związany z usługami w subiekcie które wykazują koszt 0zl. W konsekwencji ogólna marża np. z danego miesiąca jest zawyżona Czy istnieje jakaś możliwość aby się pozbyć tego nie traktując usług jako towary? Czy można zrobić tak aby pozycja "sprzedaż razem" która jest na samym dole w zestawieniu Sprzedaż według asortymentu i kontrahentów była wyliczana z pominięciem usług/towarów które mają koszt 0zł, np. przez wprowadzenie odpowiedniego zapytania SQL.

p.s. zapytania SQL można używać w Subiekcie lub poprzez edycje plików(jeśli tak, to jak to się robi?które to pliki?) czy trzeba przez narzędzia serwera MSSQL?

Proszę o odpowiedz:) bardzo mi na tym zależy:)

#28 birds22

birds22

    Entuzjasta

  • Forumowicze
  • PipPipPipPipPipPipPip
  • 1332 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Zduńska Wola

Napisany 22 kwiecień 2010 - 06:26

Czy można zrobić tak aby pozycja "sprzedaż razem" która jest na samym dole w zestawieniu Sprzedaż według asortymentu i kontrahentów była wyliczana z pominięciem usług/towarów które mają koszt 0zł, np. przez wprowadzenie odpowiedniego zapytania SQL.

Wystarczy w zestawieniu jako "rodzaj elementu" odznaczyć usługi i nie będą one zliczane

p.s. zapytania SQL można używać w Subiekcie lub poprzez edycje plików(jeśli tak, to jak to się robi?które to pliki?) czy trzeba przez narzędzia serwera MSSQL?

Moduł Zestawienia - -> Dodaj zestawienie SQL
Sławek

#29 blindGuardian

blindGuardian

    Kandydat

  • Forumowicze
  • PipPip
  • 32 Postów:

Napisany 22 kwiecień 2010 - 09:05

Dzięki za info.
Jeśli chodzi o dodanie zapytań to ja nie mam takiej opcji w Zestawieniach. (Wersja Subiekta 1.22(1.2200.0.1914)

#30 birds22

birds22

    Entuzjasta

  • Forumowicze
  • PipPipPipPipPipPipPip
  • 1332 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Zduńska Wola

Napisany 22 kwiecień 2010 - 10:00

Zestawienia -> Prawy przycisk myszy - >Dodaj zestawienie SQL
Sławek

#31 blindGuardian

blindGuardian

    Kandydat

  • Forumowicze
  • PipPip
  • 32 Postów:

Napisany 22 kwiecień 2010 - 12:25

Ponownie mówię: Wielkie dzięki:) za info. Samo przeglądanie bazy Subiekta(np. w celu wyszukania nazw tabel)to już muszę narzędziem serwera SQL bo przez Subiekta się nie da, tak?

p.s. mam jeszcze jeden problem:) nie wiem czy związany z zapytaniami SQL. Muszę stworzyć użytkownika który nie widzi dokumentów wystawionych przez pozostałych użytkowników. W Słowniki->Personel nie mogłem tego znaleźć.

#32 birds22

birds22

    Entuzjasta

  • Forumowicze
  • PipPipPipPipPipPipPip
  • 1332 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Zduńska Wola

Napisany 22 kwiecień 2010 - 15:19

Samo przeglądanie bazy Subiekta(np. w celu wyszukania nazw tabel)to już muszę narzędziem serwera SQL bo przez Subiekta się nie da, tak?

Niby się da ale jest to nie bardzo wygodne

Muszę stworzyć użytkownika który nie widzi dokumentów wystawionych przez pozostałych użytkowników. W Słowniki->Personel nie mogłem tego znaleźć.

Wg mnie nie da się tego zrobić
Sławek

#33 blindGuardian

blindGuardian

    Kandydat

  • Forumowicze
  • PipPip
  • 32 Postów:

Napisany 29 kwiecień 2010 - 15:57

Dzięki za info:)
Jeśli chodzi o tego użytkownika który nie widzi dokumentów wystawionych przez pozostałych , wydaje mi się że należałoby zmodyfikować plik Subiekt.xml, jednak na razie się za to nie zabierałem.

Poza tym mam mały problem --> chce zrobić takie zestawienie:

data "Sprzedaż Netto Towary" "Sprzedaż Netto Usługi" "Sprzedaż Netto Ogółem" "Koszt Ogółem" Zysk Marża


data ma być w formacie np. "kwiecień 2010" ,
czy dałoby się żeby bez wklepywania kolejnych linijek sql-owych wyświetlało mi następny rekord-miesiąc (jeden miesiąc to jeden wers)

Aby wyliczyć koszt ogółem muszę do kosztów dodać cenę zakupu usług--> usługa1 jest warta 15zl a usluga2 19zl , które trzeba przemnożyć przez ilość wydanych usług.. jak się nazywa tabela z wykazem sprzedanych usług?

#34 birds22

birds22

    Entuzjasta

  • Forumowicze
  • PipPipPipPipPipPipPip
  • 1332 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Zduńska Wola

Napisany 29 kwiecień 2010 - 19:53

Jeśli chodzi o tego użytkownika który nie widzi dokumentów wystawionych przez pozostałych , wydaje mi się że należałoby zmodyfikować plik Subiekt.xml, jednak na razie się za to nie zabierałem.

A mi się wydaje, że nie. Chyba, że chcesz zupełnie wyłączyć z menu możliwość obejrzenia wystawionych dokumentów (które i tak można podejrzeć gdzie indziej)

...chce zrobić takie zestawienie:
data "Sprzedaż Netto Towary" "Sprzedaż Netto Usługi" "Sprzedaż Netto Ogółem" "Koszt Ogółem" Zysk Marża
data ma być w formacie np. "kwiecień 2010" ,
czy dałoby się żeby bez wklepywania kolejnych linijek sql-owych wyświetlało mi następny rekord-miesiąc (jeden miesiąc to jeden wers)

Zainteresuj się funkcją dbo.fnNazwaOkresu
Zobacz co dostaniesz w wyniku zapytania:
Select dbo.fnNazwaOkresu('mm', '2001-01-01')

jak się nazywa tabela z wykazem sprzedanych usług?


select * from dok_pozycja d where d.ob_TowRodzaj=2

Sławek

#35 blindGuardian

blindGuardian

    Kandydat

  • Forumowicze
  • PipPip
  • 32 Postów:

Napisany 30 kwiecień 2010 - 00:32

Poszedłem w innym kierunku troszkę :rolleyes:
Jednak mam problem:) czemu "Sprzedaż Ogółem" nie jest równa sumie sprzedaży z Zestawienia "Sprzedaż wg asortymentu" albo "Sprzedaż wg asortymentu i kontrahenta"?oczywiście nie mam założonych żadnych filtrów na zestawienia subiektowe.
Nie używając dok_pozycja jest chyba łatwiej bo w tejże tabeli nie ma daty wystawienia i bym pewnie musiał łączyć z inną tabelą tabelę ->dok_pozycja

SELECT
p."Sprzedaż Netto Towary",
p."Sprzedaż Netto Przesyłek",
p."Sprzedaż Ogółem",
p."Koszt Ogółem",
p."Sprzedaż Ogółem" - p."Koszt Ogółem" as Zysk,
(p."Sprzedaż Ogółem" - p."Koszt Ogółem")/"Sprzedaż Ogółem"*100 as Marża
FROM
(SELECT
SUM (case when ob_TowRodzaj=1 then ob_WartNetto else 0 end ) as "Sprzedaż Netto Towary",
SUM (case when (ob_TowId=478 OR ob_TowId=479) then ob_WartNetto else 0 end ) as "Sprzedaż Netto Przesyłek",
SUM (ob_WartNetto) as "Sprzedaż Ogółem",
SUM (ob_WartMag) + SUM(case when (ob_TowId=478) then ob_ilosc else 0 end)*15+SUM(case when (ob_TowId=479) then ob_ilosc else 0 end)*20 as "Koszt Ogółem"
FROM vwZstSprzWgKhnt
WHERE dok_dataWyst BETWEEN '2010-03-01' AND '2010-03-31'
) as p

#36 birds22

birds22

    Entuzjasta

  • Forumowicze
  • PipPipPipPipPipPipPip
  • 1332 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Zduńska Wola

Napisany 30 kwiecień 2010 - 06:50

Dlatego, że są korekty, zwroty itp

SUM(ob_WartNetto * ob_Znak)

Sławek

#37 blindGuardian

blindGuardian

    Kandydat

  • Forumowicze
  • PipPip
  • 32 Postów:

Napisany 02 maj 2010 - 13:33

dzięki za info:) a jak wyświetlać w pętli zapytania(wymagane jest aby początkiem zapytania był SELECT)?
Zależy mi na tym aby każdego nowego miesiąca dodawała się linijka z tego miesiąca, a nie chce tego stale dodawać przez UNION.

dzięki za info:) a jak wyświetlać w pętli zapytania(wymagane jest aby początkiem zapytania był SELECT)?
Zależy mi na tym aby każdego nowego miesiąca dodawała się linijka z tego miesiąca, a nie chce tego stale dodawać przez UNION.

kurcze...nadal coś jest nie tak:) sprzedaż towarów jest ok, ale koszt towarów nie zgadza się z kosztem w Zestawieniach sprzedaży, o dziwo różnica jest bardzo mała ale jest:)(po prostu wcześniej nie zauważyłem że końcówka liczby jest inna)
Poza tym nie wiem jak przerobić datę poprzez funkcję dbo.fnNazwaOkresu aby mi wyświetlało z takiego czegoś: 2010-02-01 takie coś: 2010 luty
Oprócz tego chce jeszcze zrobić tą pętlę:) ale nie mogę nic wpisać przed napisem SELECT :(

SELECT
'2010 '+dbo.fnNazwaMiesiaca('2010-02-01') as Data,
p."Sprzedaż Towary",
p."Koszt Towary",
p."Sprzedaż Towary"- p."Koszt Towary" as "Zysk Towary",
p."Sprzedaż Usługi",
p."Koszt Usługi",
p."Sprzedaż Ogółem",
p."Koszt Ogółem",
p."Sprzedaż Ogółem" - p."Koszt Ogółem" as Zysk,
(p."Sprzedaż Ogółem" - p."Koszt Ogółem")/"Sprzedaż Ogółem"*100 as Marża
FROM
(SELECT
SUM (case when ob_TowRodzaj=1 then (ob_WartNetto*ob_Znak) else 0 end ) as "Sprzedaż Towary",
SUM (case when ob_TowRodzaj=1 then (ob_WartMag*ob_Znak) else 0 end) as "Koszt Towary",
SUM (case when (ob_TowRodzaj=2) then ob_WartNetto else 0 end ) as "Sprzedaż Usługi",
SUM(case when (ob_TowId=478) then ob_ilosc else 0 end)*10+SUM(case when (ob_TowId=479) then ob_ilosc else 0 end)*15 as "Koszt Usługi",
SUM (ob_WartNetto*ob_Znak) as "Sprzedaż Ogółem",
SUM (ob_WartMag*ob_Znak) + SUM(case when (ob_TowId=478) then ob_ilosc else 0 end)*10+SUM(case when (ob_TowId=479) then ob_ilosc else 0 end)*15 as "Koszt Ogółem"
FROM vwZstSprzWgKhnt
WHERE dok_dataWyst BETWEEN '2010-02-01' AND '2010-02-28'
) as p


Proszę o pomoc:)

#38 birds22

birds22

    Entuzjasta

  • Forumowicze
  • PipPipPipPipPipPipPip
  • 1332 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Zduńska Wola

Napisany 02 maj 2010 - 20:00

kurcze...nadal coś jest nie tak:) sprzedaż towarów jest ok, ale koszt towarów nie zgadza się z kosztem w Zestawieniach sprzedaży, o dziwo różnica jest bardzo mała ale jest:)(po prostu wcześniej nie zauważyłem że końcówka liczby jest inna)

I może być różnica w przypadku kiedy są korekty faktur zakupu dla pozycji, które są już sprzedane. ob_WartMag nie uwzględnia tej korekty. Przemyśl/wypróbuj tę sytuację (najlepiej się to robi na pustej bazie danych). Pomocna będzie Ci funkcja dbo.fnZestSub_KosztSpr

Poza tym nie wiem jak przerobić datę poprzez funkcję dbo.fnNazwaOkresu aby mi wyświetlało z takiego czegoś: 2010-02-01 takie coś: 2010 luty

Funkcja z pierwszym argumentem 'mm' wyświetla datę w postaci '2010 02 luty' i wg mnie to jest bardzo fajny format bo się dobrze sortuje.
Jeżeli chcesz po swojemu to albo własna funkcja albo osobno wyciągnij rok i później miesiąc.

Oprócz tego chce jeszcze zrobić tą pętlę:) ale nie mogę nic wpisać przed napisem SELECT :(


Zainteresuj się raczej GROUP BY
Sławek

#39 blindGuardian

blindGuardian

    Kandydat

  • Forumowicze
  • PipPip
  • 32 Postów:

Napisany 02 maj 2010 - 22:11

dzięki za info :)

to jakie parametry można pakować do tej funkcji fnNazwaOkresu oprócz 'mm' bo coś żaden nie pasowałem który na czuja wpisywałem?

spójrz na moje inne zapytanie i zweryfikuj:) jak możesz.
chciałem wyświetlić sprzedaż towarów z numerem dokumentu na którym zostały dodane oraz z kontrahentem...która to tabela zawiera listę kontrahentów bo coś nie mogę znaleźć :rolleyes: ?
SELECT
vwZstSprzWgKhnt.dok_DataWyst as Data,
vwZstSprzWgKhnt.dok_wystawil as Wystawiający,
dok__Dokument.dok_NrPelny as Dokument,
tw__Towar.tw_Nazwa as Towar,
vwZstSprzWgKhnt.ob_ilosc as ilość,
ob_WartNetto*ob_Znak as Sprzedaż,
ob_WartMag*ob_Znak as Koszt,
ob_WartNetto*ob_Znak -ob_WartMag*ob_Znak as Zysk,
(ob_WartNetto*ob_Znak -ob_WartMag*ob_Znak)/ob_WartNetto*ob_Znak As Marża
FROM vwZstSprzWgKhnt, dok__Dokument, tw__Towar
WHERE vwZstSprzWgKhnt.ob_ilosc>0 AND vwZstSprzWgKhnt.ob_TowRodzaj<>2
AND vwZstSprzWgKhnt.dok_DataWyst BETWEEN '2010-04-01' AND GETDATE()
AND vwZstSprzWgKhnt.dok_Id=dok__Dokument.dok_Id
AND vwZstSprzWgKhnt.ob_TowId=tw__Towar.tw_Id

p.s. co to jest dok_Podtyp w tabeli vwZstSprzWhKhnt?

#40 birds22

birds22

    Entuzjasta

  • Forumowicze
  • PipPipPipPipPipPipPip
  • 1332 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Zduńska Wola

Napisany 03 maj 2010 - 10:51

która to tabela zawiera listę kontrahentów bo coś nie mogę znaleźć :rolleyes: ?


kh__kontrahent
adr_Ewid


BTW

Najlepiej ściągnij sobie dokumentację bazy
http://forum.programypc.pl - tu po zalogowaniu masz do wersji 1.16 - na początek może być
Sławek




0 Użytkowników czyta ten temat

0 użytkowników, 0 gości, 0 anonimowych użytkowników