Βήματα
1. Δημιουργήστε μια νέα προβολή με τα στοιχεία του Header όπως στο υπόδειγμα.

Εικόνα 15
2. Προσθέστε Τίτλο (Αποτελέσματα)
3. Προσθέστε Νέα Εγγραφή επιλέγοντας σύνολο και Τίτλο «Πωλήσεις (Query)» Στην στήλη «Φόρμουλα» από τις … ανοίξτε το Περιβάλλον Εργασίας Συγγραφής Κώδικα Στον «Τύπο εγγραφής» Επιλέξτε Script και αντιγράψτε τον παρακάτω κώδικα.
function main() {
var args= new scDbCommandArgs();
args.Add("@CompanyID",sc$PnLScriptParams.GetCompany());
args.Add("@dtFrom",sc$PnLScriptParams.GetDateFrom());
args.Add("@dtTo",sc$PnLScriptParams.GetSelectedDateTo());
var cmpBranch = sc$PnLScriptParams.GetSelectedCompanyBranch();
if (sc$Context.IsNullOrEmpty(cmpBranch) == 1 || cmpBranch == '00000000-0000-0000-0000-000000000000' ) {
var text = sc$Context.GetConstant("CompanyQuery");
}
else {
args.Add("@companyBranch",cmpBranch);
var text = sc$Context.GetConstant("BranchQuery");
}
var cstmID = sc$PnLScriptParams.GetSelectedCustomer();
// Ελεγχος αν πρόκειται για PnL που αφορά πελάτη.
if ( sc$Context.IsNullOrEmpty(cstmID) == 0 ) {
args.Add("@CstmID",cstmID);
var text = sc$Context.GetConstant("CustomerQuery");
}
return sc$Db.ExecuteScalar(text, args);
}
Στην συνέχεια στο Tab «Σταθερές» προσθέστε τρείς (3) νέες εγγραφές με τύπο σταθεράς «Sql» Στην κάθε μία από αυτές θα δώσετε το αντίστοιχο όνομα και θα αντιγράψετε το Query που δίνεται για την κάθε μία
CompanyQuery
SELECT
COALESCE(SUM([ITEMACCUM].[HESALVALUE]),0) [SALVALUE]
FROM (
SELECT
[HEITEMACCUMULATORS].[HESALVALUE] [HESALVALUE]
FROM [HEITEMACCUMULATORS] WITH(NOLOCK)
INNER JOIN [HECOMPWAREHOUSES] WITH(NOLOCK) on ([HEITEMACCUMULATORS].[HECBWHID] = [HECOMPWAREHOUSES].[HEID])
INNER JOIN [HEITEMS] WITH(NOLOCK) on ([HEITEMACCUMULATORS].[HEITEMID] = [HEITEMS].[HEID])
WHERE (
[HEITEMS].[HECOMPID] = @CompanyID AND
[HEITEMACCUMULATORS].[HEDATE] >= @dtFrom AND
[HEITEMACCUMULATORS].[HEDATE] <= @dtTo AND
[HEITEMS].[HETYPE] in ('0', '1') AND
[HEITEMS].[HEKIND] <> 4 AND
[HECOMPWAREHOUSES].[HELASTLEVEL] = 1 AND
[HEPERIODKIND] = 2) ) [ITEMACCUM]
BranchQuery
SELECT
COALESCE(SUM([ITEMACCUM].[HESALVALUE]),0) [SALVALUE]
FROM (
SELECT
[HEITEMACCUMULATORS].[HESALVALUE] [HESALVALUE]
FROM [HEITEMACCUMULATORS] WITH(NOLOCK)
INNER JOIN [HECOMPWAREHOUSES] WITH(NOLOCK) ON ([HEITEMACCUMULATORS].[HECBWHID] = [HECOMPWAREHOUSES].[HEID])
INNER JOIN [HEITEMS] WITH(NOLOCK) ON ([HEITEMACCUMULATORS].[HEITEMID] = [HEITEMS].[HEID])
WHERE (
[HEITEMS].[HECOMPID] = @CompanyID AND
[HECOMPWAREHOUSES].[HECMBRID] = @companyBranch AND
[HEITEMACCUMULATORS].[HEDATE] >= @dtFrom AND
[HEITEMACCUMULATORS].[HEDATE] <= @dtTo AND
[HEITEMS].[HETYPE] in ('0', '1') AND
[HEITEMS].[HEKIND] <> 4 AND
[HECOMPWAREHOUSES].[HELASTLEVEL] = 1 AND
[HEPERIODKIND] = 2) ) [ITEMACCUM]
CustomerQuery
SELECT
COALESCE(SUM([ITEMTRANS].[HESALVALUE]), 0) [SALVALUE]
FROM (
SELECT
[ITTR].[HEDATE],
[ITTR].[HEPERIODKIND],
[ITTR].[HEITEMID],
(
[ITTR].[HESALVALUE] * [ITTR].[HESALVALSIGN]) [HESALVALUE]
FROM [HEITEMTRANS] [ITTR] WITH(NOLOCK)
INNER JOIN [HECOMPWAREHOUSES] [CBWH] WITH(NOLOCK) ON ([ITTR].[HECBWHID] = [CBWH].[HEID])
INNER JOIN [HEITEMS] [ITEM] WITH(NOLOCK) ON ([ITTR].[HEITEMID] = [ITEM].[HEID])
INNER JOIN [HEDOCENTRIES] [DENT] WITH(NOLOCK) ON ([ITTR].[HEDENTID] = [DENT].[HEID])
INNER JOIN [HECOMMERCIALENTRIES] [CENT] WITH(NOLOCK) ON ([DENT].[HEID] = [CENT].[HEDENTID] AND [CENT].[HECOMMTYPE] = 0 AND
[CENT].[HEBILLCSTMID] = @CstmID)
INNER JOIN [HECUSTOMERBRANCHES] [CSBR] WITH(NOLOCK) ON ([CENT].[HEBILLCSBRID] = [CSBR].[HEID])
INNER JOIN [HETRADERBRANCHES] [TRBR] WITH(NOLOCK) ON ([CSBR].[HETRBRID] = [TRBR].[HEID])
WHERE (
[ITTR].[HECOMPID] = @CompanyID AND
[ITTR].[HEDATE] >= @dtFrom and [ITTR].[HEDATE] <= @dtTo AND
[ITTR].[HEITEMTYPE] in ('0', '1') AND [ITEM].[HEKIND] <> 4 AND
[CBWH].[HELASTLEVEL] = 1 AND
[ITTR].[HEPERIODKIND] = 2) ) [ITEMTRANS]
4. Προσθέστε νέα γραμμή στην προβολή αυτή την φορά όμως στον Τομέα επιλέξτε «Predefined value». Και στην στήλη «Προκαθορισμένες Αξίες» επιλέξτε «Πωλήσεις».
5. Προσθέστε νέα γραμμή με «Τομέα» «Σύνολο» από τις … ανοίξτε το Περιβάλλον Εργασίας Συγγραφής Κώδικα. Στον «Τύπο εγγραφής» Επιλέξτε Formula και αντιγράψτε τον παρακάτω κώδικα. sc$PnLScriptParams.GetElementValue("02")- sc$PnLScriptParams.GetElementValue("03");
(Όπως στο υπόδειγμα Εικόνα 14)
6. Εκτελέστε την προβολή «SalesValueExample». (Χρηματοοικονομικά->Οικονομικά στοιχεία->Profit and Loss)
Σημείωση:
Όταν θα εκτελεστεί η προβολή το Query που έχει επιλεγεί μέσω του κώδικα θα τρέξει μία φορά αν ζητηθούν συγκεντρωτικά δεδομένα και πολλαπλές φορές με διαφορετικές παραμέτρους ανά περίοδο.