چنانچه برنامه های همکار بخواهند برای انتقال اطلاعات از برنامه خود به سایت بهره بگیرند باید دو پیش نیاز را مد نظر بگیرند تا با استفاده از برنامه ای که برای انتقال اطلاعات نوشته شده این کار انجام گردد .
اولین قدم ایجاد ویوهای مختلف از برنامه مورد نظر برای انتقال به سایت می باشد
{{نکته}} هر ویو دارای فیلدهای الزامی است که باید حتما مقدار دهی شوند سایر فیلدها چنانچه معادلی در برنامه مورد نظر نداشت بایستی بامقادیر نال یا صفر باید پر شوند
BrandERPCode -- کد برند ، varchar ، Not Null ,Coding_Name -- نام برند ، varchar ، Not Null |
ERPCode -- کد کالا ، varchar ، Not Null ,BrandERPCode -- کد برند کالا ، varchar ، Not Null ،( مرتبط با کد ویوی برندها ) ,K_Name -- نام کالا ، nvarchar ، Not Null ,K_price_sail -- قیمت فروش ،money،Not Null ,K_price_sail2 -- قیمت فروش 2 ،money ،پیش فرض 0، ,K_price_sail3 -- قیمت فروش 3 ،money ،پیش فرض 0، ,K_price_sail4 -- قیمت فروش 4 ،money ،پیش فرض 0، ,EndUserPrice --قیمت فروش مصرف کننده ،money ،پیش فرض 0، --- فیلدهای غیرالزامی که باید در ویو وجود داشته باشد و مقداردهی با نال یا صفر شود --- TagERPCode -- کد برچسب کالا،varchar ،Null،، ,TagName --نام برچسب،varchar ،Null،، ,PCSPerBox -- تعداد در کارتن،int،پیش فرض 0 ،، ,PCsPerPack --تعداد در پک،int،پیش فرض 0 ،، ,JustSalePack -- پک فروش ،int،پیش فرض 0 ،، ,ProductStatus --وضعیت محصول،int،پیش فرض 0 ،، ,ProductID -- کد محصول،int،پیش فرض 0 ،، ,PcompanyID --کد شرکت،int،پیش فرض 0 ،، ,TimeStmpChanges -- زمان تغییر،int،پیش فرض 0 ،، ,MaxOrder --حداکثر سفارش ,int , not null پیشفرض 0 ,MinOrder --حداقل سفارش , int , not null پیشفرض 0 نکته 0 در فیلدهای MaxOrder و MinOrder بدین معنی است که محدودیتی در حداقل و حداکثر فروش نمی باشد ,TaxERPCode --رفرنس مالیات (از ویوی iorder_TaxGroups ) , null |
ERPCode -- کد کالا ،varchar،ضروری،مرتبط با ویو کالاها، , BarcodeName -- عنوان بارکد ،Nvarchar ،Not Null، --- فیلدهای غیرالزامی که باید در ویو وجود داشته باشد و مقداردهی با نال یا صفر شود --- ,KBarCode -- بارکد کالا،varchar ،پیش فرض ''،، ,ProductERPCode -- کد محصول ،varchar،پیش فرض ''، این کد می تواند با کد کالا یکی باشد یا فرق داشته باشد ,KArtNo -- کد فرعی کالا،varchar،پیش فرض ''،،، |
CustomerErpCode -- کد مشتری ، varchar ،Not Null،، , T_Name -- نام مشتری ،nvarchar،Not Null،، , partnumber -- کد بخش ،int،Not Null، پیش فرض 1 --- فیلدهای غیرالزامی که باید در ویو وجود داشته باشد و مقداردهی با نال یا صفر شود --- ,DepID -- کد شعبه ،int،پیش فرض 0 ، ,T_Tel -- شماره تلفن،varchar،پیش فرض ''، ,MobileNum -- شماره همراه،varchar،پیش فرض ''، ,T_Address -- آدرس،varchar،پیش فرض ''، ,T_Credit -- اعتبار اولیه،money،پیش فرض 0،، ,CreditMondeh -- مانده اعتبار،money،، ,HasReturnChk -- دارای چک برگشتی،،، ,ThMandeh -- مانده حساب مشتری،money،،، ,RaasDate -- تاریخ راس،varchar،پیش فرض ''، ,CustomerPriceListERPCode -- کد لیست قیمت مشتری،int،پیش فرض Null، ,PayLength -- نوع تسویه مشتری،int،پیش فرض 0، ,LastOrderDate -- آخرین تاریخ سفارش،پیش فرض ''،، ,Rfid -- آراف آی دی،varchar،پیش فرض ''، ,EldestDue -- آخرین تاریخ تسویه،varchar،پیش فرض ''، FirstName --نام مشتری,varchar,null LastName --نام خانوادگی ,varchar,null MSTID --برچسب مشتری varchar,null AccountStatus -- وضعیت فعال یا غیر فعال بودن حساب ,smallint ,پیشفرض 1 iOrder_idCustomer--شناسه مشتری در سایت bigint,null,پیشفرض NULL |
VisitorERPCode -- کد ویزیتور ،int،Not Null،، ,VisitorPass -- پسورد ویزیتور ، varchar ، Not Null، پیش فرض کد ویزیتور ,VisitorName -- نام ویزیتوز ،nvarchar،Not Null، --- فیلدهای غیرالزامی که باید در ویو وجود داشته باشد و مقداردهی با نال یا صفر شود --- Depid -- کد شعبه،int،پیش فرض 0 ،، ,ts -- زمان تغییرات،int،پیش فرض 0،، |
BarcodeERPCode -- کد بارکد ،varchar،Not Null، ,Mojodi -- موجودی ،float،Not Null، --- فیلدهای غیرالزامی که باید در ویو وجود داشته باشد و مقداردهی با نال یا صفر شود --- ItemInReq -- موجودی کالای در جریان ثبت ،int،پیش فرض 0، ,warehouseErpCode -- کد انبار ،int،پیش فرض 0 ، |
UnitERPCode --کد واحد کالا varchar not null UnitName varchar --عنوان varchar(300) null |
UnitERPCode --کد واحد varchar , not null ProductERPCode -- کد کالا varchar , not null CountInPackage --تعداد در واحد,int , not null isDefault --واحد پیشفرض ,bit,not null |
نکته : این ویو ارتباط بین کالا و واحدهای کالا را مشخص می کند.
ERPCode -- کد ،varchar،not Null ، ,pricelistname -- نام لیست قیمت ،Nvarchar،،، --- فیلدهای غیرالزامی که باید در ویو وجود داشته باشد و مقداردهی با نال یا صفر شود --- ,isDefault -- پیش فرض ،not null،پیش فرض 0، ,isConsumerPrice -- قیمت مصرف کننده می باشد ؟ ،not null ،پیش فرض 0 ،، |
PricelistERPCode -- کد لیست قیمت ،int،not null، ,ProductERPCode -- کد محصول ،varchar،not null،، ,pricevalue -- قیمت کالا،money،پیش فرض 0، ,UnitERPCode --واحد کالا،int،NOT NULL |
TagERPCode -- کد برچسب ، varchar ,BrandERPCode -- کد برند کالا ، varchar ,Coding_Name -- نام برچسب ، nvarchar |
TagERPCode -- کد برچسب ،varchar، ,ProductERPCode -- کد محصول ،varchar، |
PaymentERPCode -- کد نوع تسویه مشتری،int،پیش فرض null،، ,PaymentName -- نام تسویه،Nvarchar،پیش فرض null،، |
ErpCode -- کد انبار ،int،پیش فرض 0 ,anbarName -- نام انبار ، nvarchar |
PathCode --کد مسیر ،int،پیش فرض 0 ،، ,THAccCode -- کد مشتری،int،not null،، ,visitor_code -- کد ویزیتور،int،not null ،، --- فیلدهای غیرالزامی که باید در ویو وجود داشته باشد و مقداردهی با نال یا صفر شود --- ,VisitOrder -- ترتیب ویزیتور،int،پیش فرض 0،، |
linename -- نام لاین ،nvarchar،پیش فرض null،، ,VisitorERPCode -- کد ویزیتور،int،پیش فرض null، |
TaxERPCode-- کد نوع مالیات،varchar،not null،، ,TaxDesc-- عنوان،varchar،not null ,TaxValue -- مقدار ,not null,int |
هنگامی که کاربر با تبلت سفارش از مشتری می گیرد اطلاعات سفارش در دو جدول ذخیره می شوند که پس از انتقال از تبلت به برنامه ، فاکتور یا سفارش مشتری ایجاد می شود.
در این اس پی باید اطلاعات از جداول هدر و دیتیل سفارشات دریافت گردد و سپس بوسیله روالی در جداول مربوطه به سیستم حسابداری ثبت گردد.برای پیاده سازی این کار میتوان ابتدا یک کرسر تعریف کرد واطلاعات هدر ها را دریافت نممود سپس با دریافت هر رکورد در کرسر به ثبت دیتیل های آن سفارش پرداخت .
نکته مهم اینکه در دستوری که اطلاعات هدر را دریافت میکند باید دارای شرط زیر باشد:
select * from T_TblSFATransferOrderHeaders where IsInserted=0 |
پس از اینکه یک رکورد توسط کرسر دریافت شد به ثبت دیتیل های آن سطر از هدر ها می پردازیم و در شرط دریافت دیتیل ها نیز شرط زیر را چک میکنیم که رکورد های تکراری ثبت نکند.
select * from T_TblSFATransferOrderDetails where IsInserted=0 |
نکته مهم : درصورتی که در سیستم حسابداری موجودی ها در زمان ثبت سفارش تغییر می کند باید در این اس پی این روال نیز انجام گردد.
بعد از ذخیره اطلاعات هدر و دیتیل در سیستم حسابداری باید دستور زیر اجرا گردد تا از ورود اطلاعات تکراری جلوگیری شود:
update T_TblSFATransferOrderHeaders set MISPInvCode = @MisPInv_Code ,IsInserted =1 Where idorder = @idorder update T_TblSFATransferOrderDetails set MISPInvCode = @MisPInv_Code ,IsInserted =1 Where idorder = @idorder--@idorder شماره سفارش است که بعوان پارمتر از کرسر جدول هدر دریافت میگردد --@MisPInv_Code کدی سفارشی است که در سیستم حسابداری ثبت شده است |
کد اس کیو ال جدول هدر
CREATE TABLE [dbo].[T_TblSFATransferOrderHeaders]( [ID] [int] IDENTITY(1,1) NOT NULL, [idOrder] [nvarchar](50) NULL, [idStatus] [nvarchar](50) NULL, [idCompany] [nvarchar](50) NULL, [idCustomer] [nvarchar](50) NULL, [idAgent] [nvarchar](50) NULL, [OrderID] [nvarchar](50) NULL, [ItemCount] [nvarchar](50) NULL, [StartTime] [nvarchar](50) NULL, [EndTime] [nvarchar](50) NULL, [DueKind] [nvarchar](50) NULL, [Content] [nvarchar](100) NULL, [LatitudePoint] [nvarchar](50) NULL, [LongitudePoint] [nvarchar](50) NULL, [FactorType] [nvarchar](50) NULL, [Emergency] [nvarchar](50) NULL, [CustomerErpCode] [nvarchar](50) NULL, [ERPVisitorID] [nvarchar](50) NULL, [IsInserted] [bit] NULL, [AnbarErpCode] [int] NULL, [MisPInvCode] [nvarchar](50) NULL, [TimeStamp] [nvarchar](50) NULL, [DateInsert] [datetime] NULL, [TS] [timestamp] NOT NULL, CONSTRAINT [PK_T_TblSFATransferOrderHeaders] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[T_TblSFATransferOrderHeaders] ADD DEFAULT ((0)) FOR [IsInserted] GO ALTER TABLE [dbo].[T_TblSFATransferOrderHeaders] ADD DEFAULT (getdate()) FOR [DateInsert] GO |
ساختار جدول اقلام سفارش T_TblSFATransferOrderDetails
CREATE TABLE [dbo].[T_TblSFATransferOrderDetails]( [ID] [int] IDENTITY(1,1) NOT NULL, [idOrderDetail] [nvarchar](50) NULL, [HeaderID] [int] NULL, [idOrder] [int] NULL, [idProduct] [nvarchar](50) NULL, [ProductCount] [nvarchar](50) NULL, [ProductCountConfirm] [nvarchar](50) NULL, [ProductDescription] [nvarchar](50) NULL, [ProductERPCode] [nvarchar](50) NULL, [ProductID] [nvarchar](50) NULL, [PCmpanyID] [nvarchar](50) NULL, [PBarcodeID] [nvarchar](50) NULL, [IsInserted] [bit] NULL, [MisPInvCode] [nvarchar](50) NULL, [TS] [timestamp] NOT NULL, CONSTRAINT [PK_T_TblSFATransferOrderDetails] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[T_TblSFATransferOrderDetails] ADD DEFAULT ((0)) FOR [IsInserted] GO |
با استفاده از اطلاعات مربوط به این دو جدول می توان اقدام به ثبت فاکتور در برنامه موردنظر کرد
نمونه کد اس پی ذخیره سفارشات
Create PROCEDURE [dbo].[PTC_SFA_SaveOrder] AS declare @idorder bigint declare @idCustomer varchar(5) declare @starttime smalldatetime declare @ErpVisitorID VARCHAR(5) declare @Id bigint declare @TmpId bigint declare @AutoIdH bigint update T_TblSFATransferOrderHeaders set IsInserted = 0 where IsInserted= 1 and isnull(MisPInvCode,'') ='' DECLARE InsertOrderHa_cursor CURSOR FOR SELECT idOrder , CustomerErpCode , StartTime,ERPVisitorID FROM T_TblSFATransferOrderHeaders WHERE isinserted =0 OPEN InsertOrderHa_cursor FETCH NEXT FROM InsertOrderHa_cursor into @idorder,@idCustomer,@starttime,@ErpVisitorID WHILE @@FETCH_STATUS = 0 BEGIN insert into tblHOrder(PdaAutoId,CustomerCode,PdaRegDate,VisitorCode,KindFlag) values (@idorder,@idCustomer,@starttime,@ErpVisitorID,'0') set @TmpId=(select PdaAutoId from tblHOrder where PdaAutoId=@idorder) if (@TmpId <> 0 ) begin set @AutoIdH =@@IDENTITY insert into tblDOrder (AutoId,StockCode,Qty,Price) (select @AutoIdH,ProductERPCode,ProductCount, 0 from T_TblSFATransferOrderDetails where idOrder=@idorder) end update A set MISPInvCode = @AutoIdH ,IsInserted =1 from T_TblSFATransferOrderDetails A WHERE idOrder=@idOrder Update [T_TblSFATransferOrderHeaders] set MisPInvCode= @AutoIdH , IsInserted = 1 where idOrder=@idOrder FETCH NEXT FROM InsertOrderHa_cursor into @idorder,@idCustomer,@starttime,@ErpVisitorID END CLOSE InsertOrderHa_cursor DEALLOCATE InsertOrderHa_cursor |
کد اس کیو ال جدول مشتری
CREATE TABLE [dbo].[T_TblSFATransferCustomers]( [ID] [int] IDENTITY(1,1) NOT NULL, [PaymentERPCode] [int] NULL, [idCustomer] [int] NULL, [CustomerName] [nvarchar](250) NULL, [FirstName] [nvarchar](250) NULL, [LastName] [nvarchar](250) NULL, [idUser] [int] NULL, [idPayment] [int] NULL, [idCompany] [int] NULL, [LatitudePoint] [nvarchar](250) NULL, [LongitudePoint] [nvarchar](250) NULL, [LastOrderDate] [nvarchar](250) NULL, [VisitPeriod] [nvarchar](250) NULL, [LastVisit] [nvarchar](250) NULL, [Credit] [nvarchar](250) NULL, [RemainCredit] [nvarchar](250) NULL, [Balance] [nvarchar](250) NULL, [RFID] [nvarchar](250) NULL, [ReturnCheck] [nvarchar](250) NULL, [AccountStatus] [nvarchar](250) NULL, [LiquidationDate] [nvarchar](250) NULL, [EldestDue] [nvarchar](250) NULL, [MaturityDate] [nvarchar](250) NULL, [PriceKind] [int] NULL, [isDefault] [int] NULL, [TimeStamp] [nvarchar](250) NULL, [isDeleted] [int] NULL, [Address] [nvarchar](250) NULL, [PhoneNumber] [nvarchar](250) NULL, [MobileNumber] [nvarchar](250) NULL, [PaymentType] [nvarchar](250) NULL, [CustomerErpCode] [nvarchar](250) NULL, [StoreType] [nvarchar](250) NULL, [City] [nvarchar](250) NULL, [Region] [nvarchar](250) NULL, [idUserCreator] [int] NULL, [VisitorERPCode] [int] NULL, [IsInserted] [bit] NULL, [depid] [int] NULL) ON [PRIMARY] |
با استفاده از اطلاعات مربوط به این جدول می توان اقدام به ثبت مشتری جدید از تبلت در برنامه موردنظر کرد
پس از ثبت مشتری در تبلت و بروز رسانی باید در سیستم حسابداری مقصد که قرار است اطلاعات مشتری در آن ثبت شود اس پی با نام زیر ایجاد شود که اطلاعات مربوط به مشتریان جدید را از جدول فوق دریافت کند و سپس آنها را در سیستم حسابداری ذخیره کند.
اس پی ثبت مشتری مشتری
در این اس پی باید اطلاعات از جدول T_TblSFATransferCustomers دریافت گردد و برای دریافت اطلاعات می توان بر روی جدول T_TblSFATransferCustomers کرسر تعریف گردد و سپس اطلاعات در جدول مقصد مشتریان ثبت گردد
نکته مهم : در کرسر تعریف شده باید شرط زیر قرار گیرد تا در هر زمان فقط مشتریانی ثبت شوند که تاحالا ثبت نشده باشند
نکته مهم : پس از ثبت مشتری در سیستم حسابداری باید کد مربوط به مشتری که در سیستم حسابداری ثبت شده است را بعنوان کد مشتری در جدول T_TblSFATransferCustomers قرار دهیم ، بعبارتی بعد از درج باید این کار را بکنیم :
SELECT * from T_TblSFATransferCustomers where isinserted = 0 |
update T_TblSFATransferCustomers set IsInserted=1 ,CustomerERPCode=کد دریافتی از سیسیتم حسابداری where ID=@idcustomer پارامتری است که در قسمت سلکت از جدول مشتریان دریافت می گردد |
درصورتی که در سیستم حسابداری مورد نظر سفارش دارای وضعیت های مختلفی می باشد می توانید این اس پی را در سیستم حسابدرای ایجاد کرده تا پس از تغییر وضعیت در سیستم حسابداری در سایت نیز این تغییرات قابل مشاهده باشد.وضعیت ها در برنامه آی ار در ابتدا در جدول tblsfaorderposiion قرار میگیرند و در زمان دریافت سفارشات اس پی بصورت خودکار فراخوانی می گردد و اطلاعات این جدول از روی جدول مربوط به وضعیت های سفارشات در سیستم حسابدرای آپدیت می شود.
CREATE TABLE [dbo].[tblsfaorderposiion]( [ID] [int] IDENTITY(1,1) NOT NULL, [idOrder] [int] NULL] -- کد سفارش درسایت [ErpCode] [nvarchar](100) NULL, -- کد ثبت شده سفارش درسیستم حسابداری [ErpStatus] [nvarchar](500) NULL, --وضعیت [ts] [timestamp] NOT NULL --زمان تغییرات) ON [PRIMARY] |
لازم به ذکر است که اطلاعات این جدول بصورت خودکار در زمان درج سفارشات ایجاد می شود.
در این اس پی باید جدول فوق با جدول مربوط به وضعیت سفارشات جوین بخورد و وضعیت موجود آپدیت شود مانند مثال زیر :
update tblsfaorderposiion set erpstatus = C.positiondesc from tblsfaorderposiion A inner join tblOrderStatus on A.erpcode = B.erpcode where isnull(erpstatus,'') <> C.erpstatus |
در این مرحله اغلب مشکلاتی که بری مشتریان بوجود می آید شناسایی شده و به رفع موارد آنها می پردازیم.
روال کار بدین صورت است که برای هر مورد از مشکلات باید یک ویو ایجاد شود که شامل تمام اطلاعات آن مشکل باشد . ودر نهایت یک اس پی باید ایجاد شود که خروجی حاصله از بررسی این ویوها را به نمایش بگذارد.
یکی از عمده مشکلاتی که برای مشتریان بوجود می آید بحث ویزیتور-مشتری می باشد،بدین معنی که مشتری در سیستم خود ویزیتور یا مشتری داشته باشد که آنها را در سایت یا تبلت نتواند ببیند . دلیل این مشکل می تواند موارد زیر باشد :
1 ) مشتری یا ویزیتور مورد نظر در لیست مربوط به مشتری یا ویزیتور در سیستم حسابداری نباشد.
2 ) مشتری یا ویزیتور در سیسیتم حسابداری دارای شرطی باشند که ویزیتور و مشتری مورد نظر آن را دارا نباشند.برای مثال اگر شخصی در سیستم حسابداری غیر فعال شده باشد و در ویوی مشتریان این شرط گذاشته شده باشد که فقط مشتریان فعال به ویوی مشتریان اضافه گرددند پس قاعدتا نباید این مشتری در لیست بیاید.
موارد مشابه مورد ویزیتور-مشتری می باشد
همانطور که قبلا بحث شد هر کالا داری یک برچسب می باشد یا بعبارتی هر برچسب کالاهایی دارد که زیر مجموعه آن می باشند و این مورد زمانی پیش می آید که این اتفاق نیفتد،مثلا در سیستم حسابداری کالایی زیر مجموعه یک برچسب باشد ولی در سایت اینگونه نباشد.
از جایی که در اکثر سیستم های حسابداری قیمت کالا برای مشتریان تفاوت دارد . این مورد به پشتیبانی موارد قیمت کالا و مشتری می پردازدبدین صورت که با انتخاب مشتری و کالا قیمت های کالا و قیمت انتخاب شده برای مشتری نمایش داده می شود.
یکی دیگر از مواردی است که احتمال بوجود آمدن آن زیاد می باشد و مربوط به موجودی کالا در تبلت می شود . بدین صورت که با بررسی موجودی در سیستم حسابداری و موجودی در تبلت به مقایسه این دو می پردازد.
این مورد برای بررسی اینکه آیا سفارشات در سیستم حسابداری ثبت شده اند یا خیر بکار میرود بدین صورت که با بررسی فیلد MisPinvCOde در جدول T_TblSFATransferOrderHeaders و T_TblSFATransferOrderDetails می توان این موضوع را متوجه شد بدین صورت که درصورتی این فیلد مقدار داشت یعنی اطلاعات این سفارشات درسیستم حسابداری ثبت شده است.
=== ویو های مربوط به پشتیبانی ===
{{نکته}} دستور اس کیو الی که برای ایجاد ویوها نشان داده شده است فقط برای این است که با تعداد فیلدها آشناشوید و اسم جداول و نام فیلدهای آنها فرضی می باشد .
{{نکته}} منظور از محدودیت همان شرط در قسمت انتهایی دستور SELECT می باشد.
{{نکته}} درصورتی که در سیستم حسابداری فیلدهایی موجود است که باید به کاربر اطلاع داده شود که بتواند خطای رخ داده شده را حل کند باید این فیلدها به ویوهای مربوطه اضافه گردد و در اس پی Sfa_Support_MisSp نیز از این فیلدها استفاده گردد.درضمن اضافه کردن فیلد با ویوها باید با هماهنگی انجام شود تا در فرم مربوط به پشتیبانی در برنامه تغییرات اعمال گردد.
این ویو دقیقا مشابه ویوی انبارها می باشد با این تفات که تعداد فیلدهای آن کمتر است و دراین ویو دیگر محدودیتی برای انبارها نداریم.
CREATE view iorder_support_Anbar as select A_name as Name , a_code ERPCode From tblanbar |
این ویو دقیقا مشابه ویوی مشتریان می باشد با این تفات که تعداد فیلدهای آن کمتر است و دراین ویو دیگر محدودیتی برای مشتریان نداریم.
CREATE view iorder_support_Customer as SELECT ERPCode, as Name FROM tblCustomer |
این ویو دقیقا مشابه ویوی کالامی باشد با این تفات که تعداد فیلدهای آن کمتر است و دراین ویو دیگر محدودیتی برای کالا نداریم.
CREATE view iorder_support_product as SELECT K_Code as ERPCode,K_Name as Name from tblKala </source> *'''ویوی پشتیبانی برچسب ها- iorder_support_tag''' این ویو دقیقا مشابه ویوی برچسب ها می باشد با این تفات که تعداد فیلدهای آن کمتر است و دراین ویو دیگر محدودیتی برای برچسب ها نداریم. <source lang="Sql"> CREATE view iorder_support_tag as select T_Code as ERPCode,T_Name as Name from tblTags |
این ویو دقیقا مشابه ویوی ویزیتورها می باشد با این تفات که تعداد فیلدهای آن کمتر است و دراین ویو دیگر محدودیتی برای ویزیتورها نداریم.
CREATE view iorder_support_visitor as select AS ERPCode,v_Name as Name , v_pass as PocketPassword ,v_isactive as IsActive from tblVisitor |
در این اس پی باید بر اساس پارامترهای ورودی که دارد در جدوال مربوط به سیستم حسابداری جستجو انجام دهیم
نمونه اس پی به حالت زیر می باشد :
create proc Sfa_Support_MisSp @CustomerERPCode varchar(50) ='', -- کد مشتری @VisitorERPCode varchar(50)='', --کد ویزیتور @ProductERPCode varchar(50)='', --کد کالا @TagERPCode varchar(50)='', --برچسب @AnbarERPCode varchar(50)='' --کد انبار AS begin create table #tblResult( isOK bit, retStr nvarchar(500), description nvarchar(1000) default '' ) if (@CustomerERPCode <> '') begin --دراین قسمت با توجه به فیلدهایی که در جدول مشتریان لازم است --بررسی شود جستجو انجام میدهیم --واگر شرط مورد درست بود به شکل زیر عمل می کنیم insert into #tblResult values (1,'شرط درست است','متن راهنما در اینجا قرار میگیرد') --واگر شرط مورد درست نبود به شکل زیر عمل می کنیم insert into #tblResult values (0,'شرط درست نیست','متن راهنما در اینجا قرار میگیرد-دلیل بروز خطا') end if (@VisitorERPCode <> '') begin --دراین قسمت با توجه به فیلدهایی که در جدول ویزیتور لازم است --بررسی شود جستجو انجام میدهیم --واگر شرط مورد درست بود به شکل زیر عمل می کنیم insert into #tblResult values (1,'شرط درست است','متن راهنما در اینجا قرار میگیرد') --واگر شرط مورد درست نبود به شکل زیر عمل می کنیم insert into #tblResult values (0,'شرط درست نیست','متن راهنما در اینجا قرار میگیرد-دلیل بروز خطا') end if (@ProductERPCode <> '') begin --دراین قسمت با توجه به فیلدهایی که در جدول کالا لازم است --بررسی شود جستجو انجام میدهیم --واگر شرط مورد درست بود به شکل زیر عمل می کنیم insert into #tblResult values (1,'شرط درست است','متن راهنما در اینجا قرار میگیرد') --واگر شرط مورد درست نبود به شکل زیر عمل می کنیم insert into #tblResult values (0,'شرط درست نیست','متن راهنما در اینجا قرار میگیرد-دلیل بروز خطا') end --کالا-مشتری if (@ProductERPCode <> '' AND @CustomerERPCode <> '') begin --دراین قسمت به بررسی قیمت کالای انتخاب شده برای مشتری می پردازیم --بدین صورت که درسیستم حسابداری در جداول مربوطه قیمت کالا را برای --مشتری مورد نظر با پیامی مناسب به جدول اینزرت میکنیم #tblResult --و درضمن می توان لیست قیمت های کالارا نیز در این لیست به کاربر نشان داد end --ویزیتور و مشتری if (@CustomerERPCode <> '' AND @VisitorERPCode<> '') begin --طبق مواردی که قبلا گفته شده است هر ویزیتور می تواند برنامه ویزیت داشته باشد --اگر در سیستم حسابداری برای ویزیتورها لاین تعریف شده و مسیر ویزیت --یعنی هر ویزیتور فقط می تواند محدوده خودش را ویزیت کند --در این قسمت با استفاده از کد مشتری و کد ویزیتور بررسی می کنیم که آیا این ویزیتور --می تواند این مشتری را ویزیت کند یا خیر و با پیامی مناسب خروجی را در جدول اینزت می کنیم end --ویزیتور و کالا if (@ProductERPCode <> '' AND @VisitorERPCode <> '') begin --این قسمت همانند مشتری و ویزیتور است با این تفاوت که به بررسی لاین فروش ویزیتور می باشد --بدین معنی که ویزیتور فقط امکان فروش کالاهای خاصی را دارد end --کالا و انبار if (@ProductERPCode <> '' AND @AnbarERPCode <> '') begin --در این قسمت اگر در سیستم حسابداری انبار مفهومی داشته باشد --باید با توجه به کالای انتخاب شده و کد انبار مورد نظر موجودی --کالا را در سیستم حسابداری و در انبار به کاربر با پیامی مناسب در جدول اینزرت کند end select * from #tblResult drop table #tblResult END end |
در کل منظور از این اس پی این است که باتوجه به بررسی ها یک جدول به خروجی بدهد تا در فرم پشتیبانی برای کاربر به نمایش در بیاید و منظوراز عدد 1 و 0 در فیلد isok جدول tblResult# بدین معنی است که آن سطر از جدول به درستی کارش انجام شده است یا نه |