LOGO SQL MALZEME STOKLARI

Aşağıdaki sorgu 281 numaraları ambarın anlık stoklarını getirir(stoğu olan ve kullanıdma olan malzemelerin)

SELECT 
  * 
FROM 
  (
    SELECT 
      TOP 100 PERCENT CODE STOK_KODU, 
      NAME STOK_ADI, 
      SPECODE STOK_OZELKODU, 
      ISNULL(
        (
          SELECT 
            SUM(ONHAND) 
          FROM 
            LV_101_01_STINVTOT STITOTS WITH(NOLOCK) 
          WHERE 
            STITOTS.STOCKREF = ITEMS.LOGICALREF 
            AND STITOTS.INVENNO = 281
        ), 
        0
      ) STOK_ADET 
    FROM 
      LG_101_ITEMS ITEMS WITH(NOLOCK) 
    WHERE 
      ACTIVE = 0
  ) as TF 
WHERE 
  STOK_ADET > 0

LOGO SQL SİPARİŞ MİKTAR BEKLEYEN MİKTAR

SELECT  DISTINCT  

  
	(SELECT CAST(C.NR AS VARCHAR)+'-'+C.NAME FROM L_CAPIDIV C WHERE C.FIRMNR=121 AND C.NR = ORFIC.BRANCH) ISYERI,   
/*SLSMC.CODE+'-'+*/SLSMC.DEFINITION_ SIPARIS_SATIS_ELEMANI,
	ORFIC.DATE_ SIPARIS_TARIH,	  
	ORFIC.DOCODE SIPARIS_BELGENO, 
	ORFIC.FICHENO SIPARIS_FISNO, 
	ORFIC.TRADINGGRP SIPARIS_TICARIISLEMGRUBU, 
	ORFIC.SPECODE SIPARIS_OZELKOD, 
	ORFIC.CYPHCODE SIPARIS_YETKIKODU, 
  
	CLNTC.CODE CARI_KOD, 
	CLNTC.DEFINITION_ CARI_AD,
	(SELECT SUM(ORF2.AMOUNT) FROM LG_121_01_ORFLINE ORF2 WHERE ORF2.ORDFICHEREF=ORFIC.LOGICALREF AND LINETYPE=4) FIS_TOPLAM_SIPARIS_MIKTAR,
	(SELECT SUM(ORF2.SHIPPEDAMOUNT) FROM LG_121_01_ORFLINE ORF2 WHERE ORF2.ORDFICHEREF=ORFIC.LOGICALREF AND LINETYPE=4) FIS_TOPLAM_SEVKEDILEN_MIKTAR
	
	/*,
	MALZEME DETAYLARI BAŞ
	USLINE.CODE BIRIM, 
	SERVC.CODE HIZMET_KOD, 
	SERVC.DEFINITION_ HIZMET_AD, 
	OTRNS.AMOUNT SIPARIS_MIKTAR, 
	OTRNS.SHIPPEDAMOUNT SIPARIS_SEVKEDILENMIKTAR
	MALZEME DETAYLARI SON
	*/




	/*, 
	ORFIC.CUSTORDNO,
	ORFIC.STATUS,
	ORFIC.WITHPAYTRANS, 
	ORFIC.FACTORYNR, 
	ORFIC.DEPARTMENT, 
	ORFIC.LOGICALREF, 
	ORFIC.TIME_, 
	ORFIC.SOURCEINDEX, 
	ORFIC.TOTALADDTAX, 
	ORFIC.TRRATE, 
	ORFIC.LINEEXCTYP,
	ORFIC.REPORTRATE, 
	OTRNS.PRCURR, 
	OTRNS.DATE_, 
	OTRNS.SPECODE, 
	OTRNS.SOURCEINDEX, 
	OTRNS.LOGICALREF, 
	OTRNS.ORDFICHEREF, 
	OTRNS.STOCKREF, 
	OTRNS.DETLINE, 
	OTRNS.LINETYPE, 
	OTRNS.REPORTRATE, 
	OTRNS.PRICE, 
	OTRNS.TOTAL, 
	OTRNS.PRPRICE, 
	OTRNS.AMOUNT SIPARIS_MIKTAR, 
	OTRNS.UOMREF, 
	OTRNS.SHIPPEDAMOUNT SIPARIS_SEVKEDILENMIKTAR, 
	OTRNS.CPSTFLAG, 
	OTRNS.CLOSED, 
	OTRNS.ONVEHICLE, 
	OTRNS.DISTRESERVED, 
	OTRNS.LINENO_, 
	OTRNS.UINFO1, 
	OTRNS.UINFO2, 
	OTRNS.ADDTAXAMOUNT,  
	ITMSC.CODE, 
	ITMSC.NAME, 
	ITMSC.ACTIVE, 
	ITMSC.SPECODE, 
	ITMSC.CYPHCODE, 
	ITMSC.PRODUCERCODE, 
	ITMSC.STGRPCODE, 
	ITMSC.LOGICALREF, 
	ITMSC.CARDTYPE, 
	SERVC.LOGICALREF, 
	VARIANT.CODE, 
	VARIANT.NAME,
	CLNTC.SPECODE, 
	CLNTC.CYPHCODE, 
	CLNTC.ACTIVE, 
	CLNTC.LOGICALREF, 
	USLINE.LOGICALREF, 
	USLINE.WIDTHREF, 
	USLINE.LENGTHREF, 
	USLINE.HEIGHTREF, 
	USLINE.AREAREF, 
	USLINE.VOLUMEREF, 
	USLINE.WEIGHTREF, 
	USLINE.UNITSETREF, 
	USLINE.MAINUNIT, 
	USLINE.CONVFACT1, 
	USLINE.CONVFACT2, 
	USLINE.CODE, 
	PROJECT.CODE, 
	PROJECT.NAME, 
	PROJECT.LOGICALREF, 
	SHPINF.CODE, 
	SHPINF.NAME  */
FROM 
  LG_121_01_ORFICHE ORFIC WITH(NOLOCK) 
  LEFT OUTER JOIN LG_121_SHIPINFO SHPINF WITH(NOLOCK) ON (
    ORFIC.SHIPINFOREF = SHPINF.LOGICALREF
  ) 
  LEFT OUTER JOIN LG_121_01_ORFLINE OTRNS WITH(NOLOCK) ON (
    ORFIC.LOGICALREF = OTRNS.ORDFICHEREF
  ) 
  LEFT OUTER JOIN LG_121_ITEMS ITMSC WITH(NOLOCK) ON (
    OTRNS.STOCKREF = ITMSC.LOGICALREF
  ) 
  LEFT OUTER JOIN LG_121_SRVCARD SERVC WITH(NOLOCK) ON (
    OTRNS.STOCKREF = SERVC.LOGICALREF
  ) 
  LEFT OUTER JOIN LG_121_VARIANT VARIANT WITH(NOLOCK) ON (
    OTRNS.VARIANTREF = VARIANT.LOGICALREF
  ) 
  LEFT OUTER JOIN LG_121_CLCARD CLNTC WITH(NOLOCK) ON (
    OTRNS.CLIENTREF = CLNTC.LOGICALREF
  ) 
  LEFT OUTER JOIN LG_121_UNITSETL USLINE WITH(NOLOCK) ON (OTRNS.UOMREF = USLINE.LOGICALREF) 
  LEFT OUTER JOIN LG_121_PROJECT PROJECT WITH(NOLOCK) ON (
    OTRNS.PROJECTREF = PROJECT.LOGICALREF
  ) 
   LEFT OUTER JOIN LG_SLSMAN SLSMC WITH(NOLOCK) ON (
    ORFIC.SALESMANREF = SLSMC.LOGICALREF
  ) 
WHERE 
  (
    ORFIC.WITHPAYTRANS IN (1)
  ) 
  AND (
    ORFIC.STATUS IN (4)
  ) 
  AND (
    ORFIC.WITHPAYTRANS IN (1)
  )  
  AND ORFIC.TRCODE = 1 
  AND (SLSMC.CODE IN ( /*M=*/'2021/2022' ,/*G*/ '2021-22'))  
 



SELECT 
  CASE WHEN ORFICHE.TRCODE = 1 THEN 'Satış/Pazarlama Siparişleri' WHEN ORFICHE.TRCODE = 2 THEN 'Alış/Satınalma Siparişleri' ELSE 'Diğer' END AS 'Sipariş Türü', 
  ORFICHE.DATE_ AS 'Fiş Tarihi', 
  ORFICHE.FICHENO AS 'Fiş No', 
  CLCARD.CODE AS 'Cari Kodu', 
  CLCARD.DEFINITION_ as 'Cari Adı', 
  ITEMS.CODE AS 'Stok Kodu', 
  ITEMS.DEFINITION_ AS 'Stok Adı', 
  ORFLINE.AMOUNT AS 'Sipariş Miktar', 
  ISNULL(
    (
      select 
        sum(amount) 
      FROM 
        LG_121_01_STLINE 
      WHERE 
        ORDTRANSREF = ORFLINE.LOGICALREF
    ), 
    0
  ) SEVKMIKTAR 
FROM 
  LG_121_01_ORFICHE ORFICHE 
  INNER JOIN LG_121_01_ORFLINE ORFLINE ON ORFICHE.LOGICALREF = ORFLINE.ORDFICHEREF 
  AND ORFICHE.CLIENTREF = ORFLINE.CLIENTREF 
  INNER JOIN LG_121_CLCARD CLCARD ON ORFICHE.CLIENTREF = CLCARD.LOGICALREF 
  INNER JOIN LG_121_SRVCARD ITEMS ON ORFLINE.STOCKREF = ITEMS.LOGICALREF 
WHERE 
  (ORFLINE.CANCELLED = 0) 
  AND (ORFLINE.STATUS = 4) 
  AND (ORFLINE.CLOSED = 0)


C# Devexpress Xaf Notları

Eğer BusinnesObjects Class XPObject üzerinden inherit oluyorsa (varsayılan BaseObject) Detail viewde oid alanı gelmekte. Bunu gizlemek için Module\Module.cs eklenmeli;

typesInfo.FindTypeInfo(typeof(XPObject)).KeyMember.AddAttribute(new BrowsableAttribute(false));

OnSaving()de otomatik kod ataması için DistributedIdGeneratorHelper.Generate kullanımı;

https://supportcenter.devexpress.com/ticket/details/e4904/how-to-generate-a-sequential-and-user-friendly-identifier-field-within-an-xpo-business

C# Devexpress xaf snippets

propxaf.snippet:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>propxaf</Title>
      <Shortcut>propxaf</Shortcut>
      <Description>Insert a property in XPO</Description>
      <Author>Llamachant Technology Ltd.</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>type</ID>
          <ToolTip>Property type</ToolTip>
          <Default>string</Default>
        </Literal>
        <Literal>
          <ID>property</ID>
          <ToolTip>Property name</ToolTip>
          <Default>Name</Default>
        </Literal>
      </Declarations>
      <Code Language="csharp">
        <![CDATA[
		private $type$ _$property$;
        public $type$ $property$ 
        { 
          get { return _$property$;} 
          set { SetPropertyValue<$type$>(nameof($property$), ref _$property$, value); } 
        }

			$end$]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

propxafCollection.snippet:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>propxafCollection</Title>
      <Shortcut>propxafCollection</Shortcut>
      <Description>Insert a collection in XPO</Description>
      <Author>Llamachant Technology Ltd.</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>type</ID>
          <ToolTip>Remote Property type</ToolTip>
          <Default>DomainObject</Default>
        </Literal>
        <Literal>
          <ID>property</ID>
          <ToolTip>Collection Property name</ToolTip>
          <Default>MyProperty</Default>
        </Literal>
      </Declarations>
      <Code Language="csharp">
        <![CDATA[
        [Association]
        public XPCollection<$type$> $property$ {
          get { return GetCollection<$type$>(nameof($property$)); }
        }
			$end$]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

propxafCollectionAggregated.snippet

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>propxafCollectionAggregated</Title>
      <Shortcut>propxafCollectionAggregated</Shortcut>
      <Description>Insert an aggregated collection (No link/unlink) in XPO</Description>
      <Author>Llamachant Technology Ltd.</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>type</ID>
          <ToolTip>Remote Property Type</ToolTip>
          <Default>DomainObject</Default>
        </Literal>
        <Literal>
          <ID>property</ID>
          <ToolTip>Collection Property Name</ToolTip>
          <Default>CollectionName</Default>
        </Literal>
      </Declarations>
      <Code Language="csharp">
        <![CDATA[
        [DevExpress.Xpo.Aggregated, Association]
        public XPCollection<$type$> $property$ {
          get { return GetCollection<$type$>(nameof($property$)); }
        }
			$end$]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

propxafCust.snippet

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>propxafCust</Title>
      <Shortcut>propxafCust</Shortcut>
      <Description>Insert a custom object with default Name property</Description>
      <Author>Llamachant Technology Ltd.</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>class</ID>
          <ToolTip>Class Name</ToolTip>
          <Default>CustomObject</Default>
        </Literal>
		<Literal>
		  <ID>classtype</ID>
		  <ToolTip>XPO Base Object Type (BaseObject, XPCustomObject, XPLiteObject, etc.)</ToolTip>
		  <Default>BaseObject</Default>
		</Literal>
      </Declarations>
      <Code Language="csharp">
        <![CDATA[
		[DefaultProperty("Name")]
		public class $class$ : $classtype$
		{
			public $class$(Session session) : base(session) { }
			private string _Name;
			public string Name
			{
				get { return _Name; }
				set { SetPropertyValue<string>("Name", ref _Name, value); }
			}
		}

			$end$]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

propxafOne.snippet

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>propxafOne</Title>
      <Shortcut>propxafOne</Shortcut>
      <Description>Insert a property with a One to Many relationship in XPO</Description>
      <Author>Llamachant Technology Ltd.</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>type</ID>
          <ToolTip>Property Type</ToolTip>
          <Default>DomainObject</Default>
        </Literal>
        <Literal>
          <ID>property</ID>
          <ToolTip>Property Name</ToolTip>
          <Default>MyProperty</Default>
        </Literal>
      </Declarations>
      <Code Language="csharp">
	   <![CDATA[
		private $type$ _$property$;
		[Association]
        public $type$ $property$ 
        { 
          get { return _$property$;} 
          set { SetPropertyValue<$type$>(nameof($property$), ref _$property$, value); } 
        }

			$end$]]>       
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

propxafPersistentAlias.snippet

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>propxafPersistentAlias</Title>
      <Shortcut>propxafPersistentAlias</Shortcut>
      <Description>Insert a persistent alias property in XPO</Description>
      <Author>Llamachant Technology Ltd.</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
	<Literal>
          <ID>expression</ID>
          <ToolTip>Alias Expression</ToolTip>
          <Default></Default>
        </Literal>
        <Literal>
          <ID>type</ID>
          <ToolTip>Property Type</ToolTip>
          <Default>string</Default>
        </Literal>
        <Literal>
          <ID>property</ID>
          <ToolTip>Property Name</ToolTip>
          <Default>Name</Default>
        </Literal>
		<Literal>
          <ID>converttype</ID>
          <ToolTip>Convert to Type</ToolTip>
          <Default>Int32</Default>
        </Literal>
      </Declarations>
      <Code Language="csharp">
        <![CDATA[
	[PersistentAlias("$expression$")]
        public $type$ $property$ 
        { 
          get { return Convert.To$converttype$(EvaluateAlias(nameof($property$))); } 
        }
			$end$]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

https://www.llamachant.com/single-documents/code-snippets/

C# Open Excel File

        public static object OpenFile(string fileName)
        {
            if (!File.Exists(fileName))
            {
                MessageBox.Show("File not found");
                return null;
            }
            string connectionString = string.Empty;
            const string Excel03ConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'";
            const string Excel07ConString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'";
            switch (Path.GetExtension(fileName))
            {
                case ".xls": //Excel 97-03
                    connectionString = string.Format(Excel03ConString, fileName);
                    break;
                case ".xlsx": //Excel 07
                    connectionString = string.Format(Excel07ConString, fileName);
                    break;
            }

            OleDbConnection con = new OleDbConnection(connectionString);
            con.Open();
            DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            var adapter = new OleDbDataAdapter(string.Format("select * from [{0}]", dt.Rows[0]["TABLE_NAME"].ToString()), connectionString);
            var ds = new DataSet();
            const string tableName = "excelData";
            adapter.Fill(ds, tableName);
            DataTable data = ds.Tables[tableName];
            return data;
        }
    }