مقدمه

چنانچه برنامه های همکار بخواهند برای انتقال اطلاعات از برنامه خود به سایت بهره بگیرند باید دو پیش نیاز را مد نظر بگیرند تا با استفاده از برنامه ای که برای انتقال اطلاعات نوشته شده این کار انجام گردد .

مرحله اول : ایجاد ویوها

 اولین قدم ایجاد ویوهای مختلف از برنامه مورد نظر برای انتقال به سایت می باشد
{{نکته}} هر ویو دارای فیلدهای الزامی است که باید حتما مقدار دهی شوند سایر فیلدها چنانچه معادلی در برنامه مورد نظر نداشت بایستی بامقادیر نال یا صفر باید پر شوند

ویوهای ضروری

ویو برندها iorder_Brands

BrandERPCode -- کد برند ، varchar ، Not Null
,Coding_Name -- نام برند ، varchar ، Not Null


ویو کالاها iorder_Products

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


ویو بارکد کالا iorder_barcode

ERPCode -- کد کالا ،varchar،ضروری،مرتبط با ویو کالاها،
, BarcodeName -- عنوان بارکد ،Nvarchar ،Not Null،
--- فیلدهای غیرالزامی که باید در ویو وجود داشته باشد و مقداردهی با نال یا صفر شود ---
,KBarCode -- بارکد کالا،varchar ،پیش فرض ''،،
,ProductERPCode -- کد محصول ،varchar،پیش فرض ''، این کد می تواند با کد کالا یکی باشد یا فرق داشته باشد
,KArtNo -- کد فرعی کالا،varchar،پیش فرض ''،،،


ویو مشتریان iorder_customer

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

ویو ویزیتور iorder_visitor

VisitorERPCode -- کد ویزیتور ،int،Not Null،،
,VisitorPass -- پسورد ویزیتور ، varchar ، Not Null، پیش فرض کد ویزیتور
,VisitorName -- نام ویزیتوز ،nvarchar،Not Null،
--- فیلدهای غیرالزامی که باید در ویو وجود داشته باشد و مقداردهی با نال یا صفر شود ---
Depid -- کد شعبه،int،پیش فرض 0 ،،
,ts -- زمان تغییرات،int،پیش فرض 0،،


ویو موجودی کالا iorder_stock

BarcodeERPCode -- کد بارکد ،varchar،Not Null،
,Mojodi -- موجودی ،float،Not Null،
--- فیلدهای غیرالزامی که باید در ویو وجود داشته باشد و مقداردهی با نال یا صفر شود ---
ItemInReq -- موجودی کالای در جریان ثبت ،int،پیش فرض 0،
,warehouseErpCode -- کد انبار ،int،پیش فرض 0 ،

ویو واحد iorder_units

UnitERPCode --کد واحد کالا varchar not null 
UnitName varchar --عنوان varchar(300) null 

ویو واحدو کالا iorder_UnitProducts

UnitERPCode --کد واحد varchar , not null 
ProductERPCode -- کد کالا varchar , not null
CountInPackage --تعداد در واحد,int , not null
isDefault --واحد پیشفرض ,bit,not null


نکته : این ویو ارتباط بین کالا و واحدهای کالا را مشخص می کند.

ویو لیست قیمت iorder_PriceList

ERPCode -- کد ،varchar،not Null ،
,pricelistname -- نام لیست قیمت ،Nvarchar،،،
--- فیلدهای غیرالزامی که باید در ویو وجود داشته باشد و مقداردهی با نال یا صفر شود ---
,isDefault -- پیش فرض ،not null،پیش فرض 0،
,isConsumerPrice -- قیمت مصرف کننده می باشد ؟ ،not null ،پیش فرض 0 ،،

ویو لیست قیمت کالاها iorder_PriceListProduct

PricelistERPCode -- کد لیست قیمت ،int،not null،
,ProductERPCode -- کد محصول ،varchar،not null،،
,pricevalue -- قیمت کالا،money،پیش فرض 0،
,UnitERPCode --واحد کالا،int،NOT NULL

ویوهای غیر ضروری


ویو برچسب ها iorder_tags

TagERPCode -- کد برچسب ، varchar
,BrandERPCode -- کد برند کالا ، varchar
,Coding_Name -- نام برچسب ، nvarchar

ویو برچسب کالاها iorder_producttag

TagERPCode -- کد برچسب ،varchar،
,ProductERPCode -- کد محصول ،varchar،

ویو نوع تسویه مشتریان iorder_payment

PaymentERPCode -- کد نوع تسویه مشتری،int،پیش فرض null،،
,PaymentName -- نام تسویه،Nvarchar،پیش فرض null،،

ویو انبار iorder_anbar

ErpCode -- کد انبار ،int،پیش فرض 0
,anbarName -- نام انبار ، nvarchar


ویو مسیر ویزیت iorder_visitpath

PathCode --کد مسیر ،int،پیش فرض 0 ،،
,THAccCode -- کد مشتری،int،not null،،
,visitor_code -- کد ویزیتور،int،not null ،،
--- فیلدهای غیرالزامی که باید در ویو وجود داشته باشد و مقداردهی با نال یا صفر شود ---
,VisitOrder -- ترتیب ویزیتور،int،پیش فرض 0،،

 ویو برچسب های ویزیتور iorder_visitortag

linename -- نام لاین ،nvarchar،پیش فرض null،،
,VisitorERPCode -- کد ویزیتور،int،پیش فرض null،

ویو انواع مالیات iorder_TaxGroups

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 کدی سفارشی است که در سیستم حسابداری ثبت شده است


ساختار جدول سربرگ سفارش T_TblSFATransferOrderHeaders


 کد اس کیو ال جدول هدر 

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


اس پی ایجاد مشتری جدید

'''ساختار جدول مشتری T_TblSFATransferCustomers'''

کد اس کیو ال جدول مشتری

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]


با استفاده از اطلاعات مربوط به این جدول می توان اقدام به ثبت مشتری جدید از تبلت در برنامه موردنظر کرد
پس از ثبت مشتری در تبلت و بروز رسانی باید در سیستم حسابداری مقصد که قرار است اطلاعات مشتری در آن ثبت شود اس پی با نام زیر ایجاد شود که اطلاعات مربوط به مشتریان جدید را از جدول فوق دریافت کند و سپس آنها را در سیستم حسابداری ذخیره کند.

ساختار اس پی PTC_SFA_SaveCustomer

اس پی ثبت مشتری مشتری
در این اس پی باید اطلاعات از جدول T_TblSFATransferCustomers دریافت گردد و برای دریافت اطلاعات می توان بر روی جدول T_TblSFATransferCustomers کرسر تعریف گردد و سپس اطلاعات در جدول مقصد مشتریان ثبت گردد
نکته مهم : در کرسر تعریف شده باید شرط زیر قرار گیرد تا در هر زمان فقط مشتریانی ثبت شوند که تاحالا ثبت نشده باشند
نکته مهم : پس از ثبت مشتری در سیستم حسابداری باید کد مربوط به مشتری که در سیستم حسابداری ثبت شده است را بعنوان کد مشتری در جدول T_TblSFATransferCustomers قرار دهیم ، بعبارتی بعد از درج باید این کار را بکنیم :

SELECT * from T_TblSFATransferCustomers where isinserted = 0 


update T_TblSFATransferCustomers set IsInserted=1 ,CustomerERPCode=کد دریافتی از سیسیتم حسابداری
where ID=@idcustomer پارامتری است که در قسمت سلکت از جدول مشتریان دریافت می گردد


اس پی تغییر وضعیت سفارش

درصورتی که در سیستم حسابداری مورد نظر سفارش دارای وضعیت های مختلفی می باشد می توانید این اس پی را در سیستم حسابدرای ایجاد کرده تا پس از تغییر وضعیت در سیستم حسابداری در سایت نیز این تغییرات قابل مشاهده باشد.وضعیت ها در برنامه آی ار در ابتدا در جدول tblsfaorderposiion قرار میگیرند و در زمان دریافت سفارشات اس پی بصورت خودکار فراخوانی می گردد و اطلاعات این جدول از روی جدول مربوط به وضعیت های سفارشات در سیستم حسابدرای آپدیت می شود.

ساختار جدول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]


لازم به ذکر است که اطلاعات این جدول بصورت خودکار در زمان درج سفارشات ایجاد می شود.


ساختار اس پی PTC_SFA_UpdateOrderStatus

در این اس پی باید جدول فوق با جدول مربوط به وضعیت سفارشات جوین بخورد و وضعیت موجود آپدیت شود مانند مثال زیر :

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 نیز از این فیلدها استفاده گردد.درضمن اضافه کردن فیلد با ویوها باید با هماهنگی انجام شود تا در فرم مربوط به پشتیبانی در برنامه تغییرات اعمال گردد.


ویوی پشتیبانی انبار - iorder_support_Anbar

این ویو دقیقا مشابه ویوی انبارها می باشد با این تفات که تعداد فیلدهای آن کمتر است و دراین ویو دیگر محدودیتی برای انبارها نداریم.

CREATE view iorder_support_Anbar as
select A_name as Name , a_code ERPCode
From tblanbar


ویوی پشتیبانی مشتریان- iorder_support_Customer

این ویو دقیقا مشابه ویوی مشتریان می باشد با این تفات که تعداد فیلدهای آن کمتر است و دراین ویو دیگر محدودیتی برای مشتریان نداریم.


CREATE view iorder_support_Customer as
SELECT ERPCode, as Name
FROM tblCustomer


ویوی پشتیبانی محصولات- iorder_support_product

این ویو دقیقا مشابه ویوی کالامی باشد با این تفات که تعداد فیلدهای آن کمتر است و دراین ویو دیگر محدودیتی برای کالا نداریم.


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


ویوی پشتیبانی ویزیتور- iorder_support_visitor


این ویو دقیقا مشابه ویوی ویزیتورها می باشد با این تفات که تعداد فیلدهای آن کمتر است و دراین ویو دیگر محدودیتی برای ویزیتورها نداریم.

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# بدین معنی است که آن سطر از جدول به درستی کارش انجام شده است یا نه


 اس پی مربوط به بررسی موارد پشتیبانی Sfa_Support_MisSp