first commit
This commit is contained in:
commit
1f74791394
30
Api/Docker/.dockerignore
Normal file
30
Api/Docker/.dockerignore
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
**/.classpath
|
||||
**/.dockerignore
|
||||
**/.env
|
||||
**/.git
|
||||
**/.gitignore
|
||||
**/.project
|
||||
**/.settings
|
||||
**/.toolstarget
|
||||
**/.vs
|
||||
**/.vscode
|
||||
**/*.*proj.user
|
||||
**/*.dbmdl
|
||||
**/*.jfm
|
||||
**/azds.yaml
|
||||
**/bin
|
||||
**/charts
|
||||
**/docker-compose*
|
||||
**/Dockerfile*
|
||||
**/node_modules
|
||||
**/npm-debug.log
|
||||
**/obj
|
||||
**/secrets.dev.yaml
|
||||
**/values.dev.yaml
|
||||
LICENSE
|
||||
README.md
|
||||
!**/.gitignore
|
||||
!.git/HEAD
|
||||
!.git/config
|
||||
!.git/packed-refs
|
||||
!.git/refs/heads/**
|
||||
19
Api/Docker/docker-compose.dcproj
Normal file
19
Api/Docker/docker-compose.dcproj
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" Sdk="Microsoft.Docker.Sdk">
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectVersion>2.1</ProjectVersion>
|
||||
<DockerTargetOS>Windows</DockerTargetOS>
|
||||
<DockerPublishLocally>False</DockerPublishLocally>
|
||||
<ProjectGuid>76c0f8bd-cfb9-410b-91fb-6277ccd70521</ProjectGuid>
|
||||
<DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
|
||||
<DockerServiceUrl>{Scheme}://{ServiceIPAddress}{ServicePort}</DockerServiceUrl>
|
||||
<DockerServiceName>OnlineSalesAutoCrop.coreapi</DockerServiceName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<None Include="docker-compose.override.yml">
|
||||
<DependentUpon>docker-compose.yml</DependentUpon>
|
||||
</None>
|
||||
<None Include="docker-compose.yml" />
|
||||
<None Include=".dockerignore" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
10
Api/Docker/docker-compose.override.yml
Normal file
10
Api/Docker/docker-compose.override.yml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
services:
|
||||
OnlineSalesAutoCrop.coreapi:
|
||||
environment:
|
||||
- ASPNETCORE_ENVIRONMENT=Development
|
||||
- ASPNETCORE_HTTP_PORTS=8080
|
||||
ports:
|
||||
- "8080"
|
||||
volumes:
|
||||
- ${APPDATA}/Microsoft/UserSecrets:C:\Users\ContainerUser\AppData\Roaming\Microsoft\UserSecrets:ro
|
||||
- ${APPDATA}/Microsoft/UserSecrets:C:\Users\ContainerAdministrator\AppData\Roaming\Microsoft\UserSecrets:ro
|
||||
6
Api/Docker/docker-compose.yml
Normal file
6
Api/Docker/docker-compose.yml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
services:
|
||||
OnlineSalesAutoCrop.coreapi:
|
||||
image: ${DOCKER_REGISTRY-}OnlineSalesAutoCropcoreapi
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Api\OnlineSalesAutoCrop.CoreAPI\Dockerfile
|
||||
11
Api/Docker/launchSettings.json
Normal file
11
Api/Docker/launchSettings.json
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"profiles": {
|
||||
"Docker Compose": {
|
||||
"commandName": "DockerCompose",
|
||||
"commandVersion": "1.0",
|
||||
"serviceActions": {
|
||||
"OnlineSalesAutoCrop.coreapi": "StartDebugging"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1
Api/Docker/obj/Docker/ContainerToolsExceptions.json
Normal file
1
Api/Docker/obj/Docker/ContainerToolsExceptions.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
[{"ContainerToolsException.ErrorCode":"","ContainerToolsException.HResult":"-2146233088"},{"ContainerToolsException.ErrorCode":"","ContainerToolsException.HResult":"-2146233088"},{"ContainerToolsException.ErrorCode":"","ContainerToolsException.HResult":"-2146233088"},{"ContainerToolsException.ErrorCode":"","ContainerToolsException.HResult":"-2146233088"},{"ContainerToolsException.ErrorCode":"","ContainerToolsException.HResult":"-2146233088"},{"ContainerToolsException.ErrorCode":"","ContainerToolsException.HResult":"-2146233088"},{"ContainerToolsException.ErrorCode":"","ContainerToolsException.HResult":"-2146233088"}]
|
||||
0
Api/Docker/obj/Docker/DOCKER_REGISTRY.cache
Normal file
0
Api/Docker/obj/Docker/DOCKER_REGISTRY.cache
Normal file
1
Api/Docker/obj/Docker/PrerequisiteFailureTelemetry.json
Normal file
1
Api/Docker/obj/Docker/PrerequisiteFailureTelemetry.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"PrerequisiteCheckName":"Microsoft.Docker.Prerequisites.DockerForWindowsInstalledPrerequisite","HasWarning":false,"HasError":true,"Properties":null}
|
||||
13
Api/OnlineSalesAutoCrop.CoreAPI.Models/Constants.cs
Normal file
13
Api/OnlineSalesAutoCrop.CoreAPI.Models/Constants.cs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
namespace OnlineSalesAutoCrop.CoreAPI.Models
|
||||
{
|
||||
public static class Constants
|
||||
{
|
||||
public const string TranSideDecrease = "D";
|
||||
public const string TranSideIncrease = "C";
|
||||
|
||||
public const string UserId = "UserId";
|
||||
public const string LoginId = "LoginId";
|
||||
public const string BatchEnabled = "BatchEnabled";
|
||||
public const string ParamCantBeNull = "Parameter value is null.";
|
||||
}
|
||||
}
|
||||
703
Api/OnlineSalesAutoCrop.CoreAPI.Models/Enums.cs
Normal file
703
Api/OnlineSalesAutoCrop.CoreAPI.Models/Enums.cs
Normal file
|
|
@ -0,0 +1,703 @@
|
|||
using System;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models
|
||||
{
|
||||
public enum EnumBonusType : short
|
||||
{
|
||||
[Description("Discount")]
|
||||
Discount = 1,
|
||||
|
||||
[Description("Product")]
|
||||
Product = 2,
|
||||
|
||||
[Description("Gift Item")]
|
||||
GiftItem = 3,
|
||||
|
||||
[Description("Discount On Value")]
|
||||
DiscountOnValue = 4
|
||||
}
|
||||
|
||||
public enum EnumSPCalcMethod : short
|
||||
{
|
||||
[Description("One Slab Only")]
|
||||
OneSlabOnly = 1,
|
||||
|
||||
[Description("Remaining")]
|
||||
Remaining = 2
|
||||
}
|
||||
|
||||
public enum EnumOfferBasis : short
|
||||
{
|
||||
[Description("Invoice Value")]
|
||||
InvoiceValue = 1,
|
||||
|
||||
[Description("Product Combination")]
|
||||
ProductCombination = 2,
|
||||
|
||||
[Description("ProductBundle")]
|
||||
ProductBundle = 3,
|
||||
}
|
||||
|
||||
public enum EnumSalesUnit : short
|
||||
{
|
||||
[Description("Piece")]
|
||||
Pcs = 1,
|
||||
|
||||
[Description("Value")]
|
||||
Value = 2,
|
||||
|
||||
[Description("Weight")]
|
||||
Weight = 3,
|
||||
|
||||
[Description("Carton")]
|
||||
Ctn = 4,
|
||||
|
||||
[Description("Volume")]
|
||||
Volume = 5,
|
||||
|
||||
[Description("Line Count")]
|
||||
LineCount = 6
|
||||
}
|
||||
|
||||
public enum EnumBmProcessType : short
|
||||
{
|
||||
[Description("Batch Disabled")]
|
||||
None = 0,
|
||||
|
||||
[Description("Manually Selected")]
|
||||
Manual = 1,
|
||||
|
||||
[Description("FIFO Method (First in First out")]
|
||||
FIFO = 2,
|
||||
|
||||
[Description("LIFO Method (Last in First out")]
|
||||
LIFO = 3
|
||||
}
|
||||
|
||||
public enum EnumSalesPromotionType : short
|
||||
{
|
||||
[Description("Invoice value")]
|
||||
InvoiceValue = 1,
|
||||
|
||||
[Description("SKU purchase")]
|
||||
SkuPurchase = 2
|
||||
}
|
||||
|
||||
public enum EnumAbsentType : short
|
||||
{
|
||||
[Description("Leave")]
|
||||
LeaveEntry = 1,
|
||||
|
||||
[Description("Late")]
|
||||
Late = 2,
|
||||
|
||||
[Description("Client Visit")]
|
||||
ClientVisit = 3,
|
||||
|
||||
[Description("Home Office")]
|
||||
HomeOffice = 4
|
||||
}
|
||||
|
||||
public enum EnumFaMovementType : short
|
||||
{
|
||||
[Description("Fixed Asset Installation")]
|
||||
Installation = 1,
|
||||
|
||||
[Description("Fixed Asset Transfer")]
|
||||
Transfer = 2
|
||||
}
|
||||
|
||||
public enum EnumDepreciationCalcMode : short
|
||||
{
|
||||
[Description("Yearly")]
|
||||
Yearly = 0,
|
||||
|
||||
[Description("Monthly")]
|
||||
Monthly = 1
|
||||
}
|
||||
|
||||
public enum EnumFaTranType : short
|
||||
{
|
||||
[Description("Fixed Asset Write Off")]
|
||||
WriteOff = 1,
|
||||
|
||||
[Description("Fixed Asset Sales")]
|
||||
Sales = 2,
|
||||
|
||||
[Description("Add Value to Fixed Asset")]
|
||||
AddValue = 3,
|
||||
|
||||
[Description("Reduce Value from Fixed Asset")]
|
||||
ReduceValue = 4
|
||||
}
|
||||
|
||||
public enum EnumStockType : short
|
||||
{
|
||||
[Description("Sound Stock")]
|
||||
Sound = 1,
|
||||
|
||||
[Description("Damage Stock")]
|
||||
Damage = 2,
|
||||
|
||||
[Description("Expired Stock")]
|
||||
Expired = 3,
|
||||
|
||||
[Description("Booked Stock")]
|
||||
Booked = 4
|
||||
}
|
||||
|
||||
public enum EnumItemType : short
|
||||
{
|
||||
[Description("Services")]
|
||||
Service = 1,
|
||||
|
||||
[Description("Consumables")]
|
||||
Consumables = 2,
|
||||
|
||||
[Description("Goods")]
|
||||
Goods = 3,
|
||||
|
||||
[Description("Fixed Assets")]
|
||||
FixedAssets = 4
|
||||
}
|
||||
|
||||
public enum EnumGLSpecialHead : short
|
||||
{
|
||||
//Controls
|
||||
Assets = 1,
|
||||
Liabilities = 2,
|
||||
Income = 3,
|
||||
Expenditure = 4,
|
||||
|
||||
//Groups
|
||||
CashAccountGroup = 5,
|
||||
BankAccountGroup = 6,
|
||||
PurchaseAccount = 7,
|
||||
ProfitBroughtForwardGroup = 8,
|
||||
LossBroughtForwardGroup = 9,
|
||||
|
||||
//Sub groups
|
||||
ProfitBroughtForwardSubGroup = 10,
|
||||
LossBroughtForwardSubGroup = 11,
|
||||
|
||||
//Posting
|
||||
ProfitBroughtForward = 12,
|
||||
LossBroughtForward = 13,
|
||||
}
|
||||
|
||||
public enum EnumAitVatRateOf : short
|
||||
{
|
||||
[Description("Product Type")]
|
||||
ProductType = 1,
|
||||
|
||||
[Description("Fixed Asset Category")]
|
||||
FixedAssetCategory = 2
|
||||
}
|
||||
|
||||
public enum EnumSkuPriceType : short
|
||||
{
|
||||
[Description("Cost/Purchase Price")]
|
||||
CostPrice = 1,
|
||||
|
||||
[Description("Selling Price")]
|
||||
SellingPrice = 2,
|
||||
|
||||
[Description("Maximum Retail Price (MRP)")]
|
||||
MRP = 3
|
||||
}
|
||||
|
||||
public enum EnumSkuParamType : short
|
||||
{
|
||||
[Description("VAT")]
|
||||
Vat = 1,
|
||||
|
||||
[Description("SD")]
|
||||
Sd = 2,
|
||||
|
||||
[Description("Commission")]
|
||||
Commission = 3
|
||||
}
|
||||
|
||||
public enum EnumWOStatus : short
|
||||
{
|
||||
[Description("Draft")]
|
||||
Draft = 1,
|
||||
|
||||
[Description("Authorized")]
|
||||
Authorized = 2,
|
||||
|
||||
[Description("Partial Received")]
|
||||
Partial = 3,
|
||||
|
||||
[Description("Full Received")]
|
||||
Full = 4,
|
||||
|
||||
[Description("Frozen")]
|
||||
Frozen = 5
|
||||
}
|
||||
|
||||
public enum EnumDepreciationType : short
|
||||
{
|
||||
[Description("None")]
|
||||
None = 0,
|
||||
|
||||
[Description("Straight Line")]
|
||||
StraightLine = 1,
|
||||
|
||||
[Description("Recursive")]
|
||||
Recursive = 2
|
||||
}
|
||||
|
||||
public enum EnumClientType : short
|
||||
{
|
||||
[Description("Client")]
|
||||
Client = 1,
|
||||
|
||||
[Description("Supplier")]
|
||||
Supplier = 2,
|
||||
|
||||
[Description("Client & Supplier")]
|
||||
Both = 3
|
||||
}
|
||||
|
||||
public enum EnumGLReportLevel : short
|
||||
{
|
||||
[Description("Top")]
|
||||
Top = 1,
|
||||
|
||||
[Description("Group")]
|
||||
Group = 2,
|
||||
|
||||
[Description("Sub Group")]
|
||||
SubGroup = 3,
|
||||
|
||||
[Description("Sub Total")]
|
||||
SubTotal = 4
|
||||
}
|
||||
|
||||
public enum EnumLookupType : short
|
||||
{
|
||||
[Description("Order Type")]
|
||||
OrderType = 1,
|
||||
|
||||
[Description("Job Type")]
|
||||
JobType = 2,
|
||||
|
||||
[Description("Voucher Type")]
|
||||
VoucherType = 3,
|
||||
|
||||
[Description("Inventory Type")]
|
||||
InventoryType = 4,
|
||||
|
||||
[Description("Goods Type")]
|
||||
GoodsType = 5,
|
||||
|
||||
[Description("Unit of Measure")]
|
||||
UoM = 6,
|
||||
|
||||
[Description("Anomaly Reason")]
|
||||
AnomalyReason = 7,
|
||||
|
||||
[Description("Designation")]
|
||||
Designation = 8,
|
||||
|
||||
[Description("Stock Take Reason")]
|
||||
StockTakeReason = 9,
|
||||
|
||||
[Description("Department")]
|
||||
Department = 10,
|
||||
|
||||
[Description("Leave Type")]
|
||||
LeaveType = 11,
|
||||
|
||||
[Description("Asset Type")]
|
||||
AssetType = 12,
|
||||
|
||||
[Description("Login Remarks")]
|
||||
LoginRemarks = 13,
|
||||
|
||||
[Description("Logout Remarks")]
|
||||
LogoutRemarks = 14,
|
||||
|
||||
[Description("Security Categories")]
|
||||
SecurityCategories = 15,
|
||||
|
||||
[Description("SalesPoint Type")]
|
||||
SalesPointType = 16,
|
||||
|
||||
[Description("Blood Group")]
|
||||
BloodGroup = 17,
|
||||
|
||||
[Description("Unit Type")]
|
||||
UnitType = 18,
|
||||
|
||||
[Description("Product Hierarchy Level")]
|
||||
ProductHierarchyLevel = 19,
|
||||
|
||||
[Description("Channel Hierarchy Level")]
|
||||
ChannelHierarchyLevel = 20,
|
||||
|
||||
[Description("Market Hierarchy Level")]
|
||||
MarketHierarchyLevel = 21,
|
||||
|
||||
[Description("Customer Grade")]
|
||||
CustomerGrade = 22,
|
||||
|
||||
[Description("Price Type")]
|
||||
PriceType = 23,
|
||||
|
||||
[Description("Product VAT SD Commission")]
|
||||
ProductVatSdCommission = 24,
|
||||
|
||||
[Description("External Product Level")]
|
||||
ExternalProductLevel = 25,
|
||||
|
||||
[Description("Ideal Working Hours")]
|
||||
IdealWorkingHours = 26,
|
||||
|
||||
[Description("Ramadan Working Hours")]
|
||||
RamadanWorkingHours = 27,
|
||||
}
|
||||
|
||||
public enum EnumInstrumentType : short
|
||||
{
|
||||
[Description("Cheque")]
|
||||
Cheque = 1,
|
||||
|
||||
[Description("EFT")]
|
||||
EFT = 2,
|
||||
|
||||
[Description("Cash Deposit")]
|
||||
CashDeposit = 3
|
||||
}
|
||||
|
||||
public enum EnumSalesInstrumentType : short
|
||||
{
|
||||
[Description("None")]
|
||||
None = 0,
|
||||
|
||||
[Description("Cash")]
|
||||
CashDeposit = 1,
|
||||
|
||||
[Description("EFT")]
|
||||
EFT = 2,
|
||||
|
||||
[Description("Cheque")]
|
||||
Cheque = 3,
|
||||
|
||||
[Description("PO/DD")]
|
||||
POorDD = 4,
|
||||
|
||||
[Description("MFS")]
|
||||
MFS = 5,
|
||||
|
||||
[Description("Online Transfer")]
|
||||
OnlineTransfer = 6,
|
||||
|
||||
[Description("Card/Debit Card")]
|
||||
CreditOrDebitCard = 7
|
||||
}
|
||||
|
||||
public enum EnumPurchaseType : short
|
||||
{
|
||||
[Description("Cash Purchase")]
|
||||
Cash = 1,
|
||||
|
||||
[Description("Purchase to Pay")]
|
||||
P2P = 2,
|
||||
|
||||
[Description("Fixed Asset")]
|
||||
FixedAssets = 3
|
||||
}
|
||||
|
||||
public enum EnumInvoiceStatus : short
|
||||
{
|
||||
[Description("New Invoice")]
|
||||
New = 1,
|
||||
|
||||
[Description("Partial Payment Received")]
|
||||
Partial = 2,
|
||||
|
||||
[Description("Full Payment Received")]
|
||||
Full = 3,
|
||||
|
||||
[Description("Frozen")]
|
||||
Frozen = 4
|
||||
}
|
||||
|
||||
public enum EnumInvoiceP2PStatus : short
|
||||
{
|
||||
[Description("New Invoice")]
|
||||
New = 1,
|
||||
|
||||
[Description("Invoice Authorized")]
|
||||
Authorised = 2,
|
||||
|
||||
[Description("Partial Payment Received")]
|
||||
Partial = 3,
|
||||
|
||||
[Description("Full Payment Received")]
|
||||
Full = 4,
|
||||
|
||||
[Description("Frozen")]
|
||||
Frozen = 5
|
||||
}
|
||||
|
||||
public enum EnumPOStatus : short
|
||||
{
|
||||
[Description("New Purchase Order")]
|
||||
New = 1,
|
||||
|
||||
[Description("Partial Bill Submitted")]
|
||||
Partial = 2,
|
||||
|
||||
[Description("Full Bill Submitted")]
|
||||
Full = 3,
|
||||
|
||||
[Description("Frozen")]
|
||||
Frozen = 4
|
||||
}
|
||||
|
||||
public enum EnumOrderType : short
|
||||
{
|
||||
[Description("PO")]
|
||||
PO = 1,
|
||||
|
||||
[Description("WO")]
|
||||
WO = 2,
|
||||
|
||||
[Description("Contract")]
|
||||
Contract = 3,
|
||||
|
||||
[Description("E-mail")]
|
||||
EMail = 4,
|
||||
|
||||
[Description("Verbal")]
|
||||
Verbal = 5
|
||||
}
|
||||
|
||||
public enum EnumJobType : short
|
||||
{
|
||||
[Description("New Development")]
|
||||
NewDevelopment = 1,
|
||||
|
||||
[Description("CR")]
|
||||
CR = 2,
|
||||
|
||||
[Description("AMC/MMC")]
|
||||
AMC_MMC = 3,
|
||||
|
||||
[Description("Product Sales")]
|
||||
Product_Sales = 4,
|
||||
|
||||
[Description("SAAS")]
|
||||
SAAS = 5,
|
||||
|
||||
[Description("Server Rental")]
|
||||
Server_Rental = 6,
|
||||
|
||||
[Description("PAAS Support")]
|
||||
PAAS_Support = 7,
|
||||
|
||||
[Description("Rollout")]
|
||||
Rollout = 8,
|
||||
|
||||
[Description("Training")]
|
||||
Training = 9,
|
||||
|
||||
[Description("BPO")]
|
||||
BPO = 10,
|
||||
|
||||
[Description("Commission")]
|
||||
Commission = 11,
|
||||
|
||||
[Description("Consultation")]
|
||||
Consultation = 12,
|
||||
|
||||
[Description("Other")]
|
||||
Other = 13
|
||||
}
|
||||
|
||||
public enum EnumLoginStatus : short
|
||||
{
|
||||
[Description("Success")]
|
||||
Success = 0,
|
||||
|
||||
[Description("Error")]
|
||||
Error = 1,
|
||||
|
||||
[Description("Unsuccessful")]
|
||||
Unsuccessful = 2,
|
||||
|
||||
[Description("Version Mismatch")]
|
||||
VersionMismatch = 3
|
||||
}
|
||||
|
||||
public enum EnumEmployeeType : short
|
||||
{
|
||||
[Description("Employee")]
|
||||
Employee = 1,
|
||||
|
||||
[Description("Project Leader")]
|
||||
ProjectLeader = 2,
|
||||
|
||||
[Description("Project Manager")]
|
||||
ProjectManager = 4,
|
||||
|
||||
[Description("Developer")]
|
||||
Developer = 8,
|
||||
|
||||
[Description("Support Manager")]
|
||||
Support = 16,
|
||||
|
||||
[Description("QA Manager")]
|
||||
QA = 32
|
||||
}
|
||||
|
||||
public enum EnumGlCodeType : short
|
||||
{
|
||||
[Description("Bank Account")]
|
||||
BankAccount = 1,
|
||||
|
||||
[Description("Income Account")]
|
||||
Income = 2,
|
||||
|
||||
[Description("VAT Account")]
|
||||
Vat = 3,
|
||||
|
||||
[Description("AIT Account")]
|
||||
Ait = 4,
|
||||
|
||||
[Description("Purchase VAT Account")]
|
||||
PurchaseVat = 5,
|
||||
|
||||
[Description("VAT Payable Account")]
|
||||
VatPayable = 6,
|
||||
|
||||
[Description("AIT Payable Account")]
|
||||
AitPayable = 7,
|
||||
|
||||
[Description("Cash in Hand Account")]
|
||||
CashInHand = 8,
|
||||
|
||||
[Description("Damage Goods Expense Account")]
|
||||
DamageExpense = 9,
|
||||
|
||||
[Description("Fixed Asset Sales Account")]
|
||||
FixedAssetSales = 10,
|
||||
|
||||
[Description("Accumulated Depreciation Account")]
|
||||
AccumulatedDepreciation = 11
|
||||
}
|
||||
|
||||
public enum EnumGlAccountType : short
|
||||
{
|
||||
[Description("Not Applicable")]
|
||||
None = 0,
|
||||
|
||||
[Description("Income Account")]
|
||||
Income = 1,
|
||||
|
||||
[Description("Liability Account")]
|
||||
Liability = 2
|
||||
}
|
||||
|
||||
public enum EnumAuthenticationMethod : short
|
||||
{
|
||||
[Description("Not Applicable")]
|
||||
None = 0,
|
||||
|
||||
[Description("Via Email")]
|
||||
Email = 1,
|
||||
|
||||
[Description("Via Mobile SMS")]
|
||||
MobileSMS = 2,
|
||||
|
||||
[Description("Third Party Authenticator")]
|
||||
ThirdPartyAuthenticator = 3
|
||||
}
|
||||
|
||||
[Flags]
|
||||
public enum EnumStatus : short
|
||||
{
|
||||
[Description("Initiated")]
|
||||
Initiated = 1,
|
||||
|
||||
[Description("Rejected")]
|
||||
Rejected = 2,
|
||||
|
||||
[Description("Authenticated")]
|
||||
Authenticated = 4,
|
||||
|
||||
[Description("Authorized")]
|
||||
Authorized = 8,
|
||||
|
||||
[Description("Inactive")]
|
||||
Inactive = 16
|
||||
}
|
||||
|
||||
public enum EnumAccessStatus : short
|
||||
{
|
||||
[Description("First Time")]
|
||||
FirstTime = 1,
|
||||
|
||||
[Description("Logged In")]
|
||||
LoggedIn = 2,
|
||||
|
||||
[Description("Logged Out")]
|
||||
LoggedOut = 3
|
||||
}
|
||||
|
||||
public enum EnumCOALevelId : short
|
||||
{
|
||||
[Description("Control")]
|
||||
Control = 1,
|
||||
|
||||
[Description("Group")]
|
||||
Group = 2,
|
||||
|
||||
[Description("Subgroup")]
|
||||
Subgroup = 3,
|
||||
|
||||
[Description("Posting")]
|
||||
Posting = 4
|
||||
}
|
||||
|
||||
public enum EnumCacheType
|
||||
{
|
||||
[Description("None")]
|
||||
None = 0,
|
||||
|
||||
[Description("In Memory")]
|
||||
InMemory = 1,
|
||||
|
||||
|
||||
[Description("Sql Server")]
|
||||
SqlServer = 2,
|
||||
|
||||
[Description("Redis")]
|
||||
Redis = 3,
|
||||
}
|
||||
|
||||
public enum EnumSalesType : short
|
||||
{
|
||||
[Description("Direct Sales")]
|
||||
DirectSales = 1,
|
||||
|
||||
[Description("Order Sales")]
|
||||
OrderSales = 2
|
||||
}
|
||||
|
||||
public enum EnumInvoiceSource : short
|
||||
{
|
||||
[Description("From Application")]
|
||||
FromApplication = 1,
|
||||
|
||||
[Description("From Mobile")]
|
||||
FromMobile = 2,
|
||||
|
||||
[Description("From Others")]
|
||||
FromOthers = 3,
|
||||
}
|
||||
}
|
||||
363
Api/OnlineSalesAutoCrop.CoreAPI.Models/Global/AppSettings.cs
Normal file
363
Api/OnlineSalesAutoCrop.CoreAPI.Models/Global/AppSettings.cs
Normal file
|
|
@ -0,0 +1,363 @@
|
|||
using Ease.NetCore.DataAccess;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Global
|
||||
{
|
||||
/// <summary>
|
||||
/// AppSettings
|
||||
/// </summary>
|
||||
public class AppSettings
|
||||
{
|
||||
/// <summary>
|
||||
/// Default Database Connection to be used
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string DefaultDB { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Used to dec from User info got over http
|
||||
/// </summary>
|
||||
public string CipherSecretKey { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value that indicates whether a cookie is inaccessible by client-side script.
|
||||
/// </summary>
|
||||
public bool CookieHttpOnly { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value that indicates whether to transmit the cookie using Secure Sockets Layer (SSL)--that is, over HTTPS only.
|
||||
/// </summary>
|
||||
public bool CookieSecure { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the max-age for the cookie in minutes.
|
||||
/// </summary>
|
||||
public int CookieLifeTime { get; set; } = 360;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the value for the SameSite attribute of the cookie.
|
||||
/// -1: No SameSite field will be set, the client should follow its default cookie policy.
|
||||
/// 0: Indicates the client should disable same-site restrictions.
|
||||
/// 1: Indicates the client should send the cookie with "same-site" requests, and with "cross-site" top-level navigations.
|
||||
/// 2: Indicates the client should only send the cookie with "same-site" requests.
|
||||
/// </summary>
|
||||
public int CookieSameSite { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// For Jwt Token
|
||||
/// </summary>
|
||||
public string JwtCryptoKey { get; set; }
|
||||
public string JwtIssuer { get; set; }
|
||||
public string JwtAudience { get; set; }
|
||||
public bool JwtValidateIssuer { get; set; }
|
||||
public bool JwtValidateAudience { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Folder management
|
||||
/// </summary>
|
||||
public string UploadFolder { get; set; }
|
||||
public string ProfileImageFolder { get; set; }
|
||||
public string ReportFolder { get; set; }
|
||||
public string FileProcessFolder { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// For user password
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string PwdSecretKey { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// For SMS Management
|
||||
/// </summary>
|
||||
public string SmsSecretKey { get; set; }
|
||||
public string SmsApiUrl { get; set; }
|
||||
public string SmsAccessInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Email management
|
||||
/// </summary>
|
||||
public int EmailPort { get; set; }
|
||||
public bool EmailEnableSsl { get; set; }
|
||||
public string EmailHost { get; set; }
|
||||
public string EmailSenderName { get; set; }
|
||||
public string EmailSenderIp { get; set; }
|
||||
public string EmailSenderId { get; set; }
|
||||
|
||||
private string _emailSenderPwd;
|
||||
public string EmailSenderPwd
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(_emailSenderPwd) || string.IsNullOrEmpty(PwdSecretKey))
|
||||
return string.Empty;
|
||||
|
||||
string secretKey = GlobalFunctions.ConvertFromBase64String(PwdSecretKey);
|
||||
return Ease.NetCore.Utility.Global.CipherFunctions.DecryptByAES(privateKey: secretKey, publicKey: secretKey, data: _emailSenderPwd, input: 2);
|
||||
}
|
||||
set { _emailSenderPwd = value; }
|
||||
}
|
||||
public string EmailBcc { get; set; }
|
||||
public string EmailErrorLogPath { get; set; }
|
||||
public bool EmailUseDefaultCredentials { get; set; }
|
||||
public int EmailTlsVersion { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// CORS CorsHeaders
|
||||
/// </summary>
|
||||
public string CorsHeaders { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// CORS CorsMethods
|
||||
/// </summary>
|
||||
public string CorsMethods { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// CORS CorsOrigins
|
||||
/// </summary>
|
||||
public string CorsOrigins { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Logger enabled if the is there is value
|
||||
/// </summary>
|
||||
public string LoggerPath { get; set; }
|
||||
public int LoggerMinLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Database connection Hangfire
|
||||
/// </summary>
|
||||
private string _hangfireDb;
|
||||
public string HangfireDb
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(_hangfireDb) || string.IsNullOrEmpty(PwdSecretKey))
|
||||
return string.Empty;
|
||||
|
||||
string secretKey = GlobalFunctions.ConvertFromBase64String(PwdSecretKey);
|
||||
return Ease.NetCore.Utility.Global.CipherFunctions.DecryptByAES(privateKey: secretKey, publicKey: secretKey, data: _hangfireDb, input: 2);
|
||||
}
|
||||
set { _hangfireDb = value; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
// <summary>
|
||||
/// Use for caching
|
||||
/// </summary>
|
||||
public EnumCacheType CacheType { get; set; } = EnumCacheType.InMemory;
|
||||
public string CacheUrl { get; set; }
|
||||
public string CacheSchemaName { get; set; }
|
||||
public string CacheTableName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// What's app messaging
|
||||
/// </summary>
|
||||
public string WaSenderId { get; set; }
|
||||
public string WaAuthToken { get; set; }
|
||||
public string WaAccountSid { get; set; }
|
||||
public string WaMsgSvcSid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Rabbit MQ Information
|
||||
/// </summary>
|
||||
public string RabbitMQHost { get; set; }
|
||||
public string RabbitMQUser { get; set; }
|
||||
|
||||
private string _rabbitMQPwd;
|
||||
public string RabbitMQPwd
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(_rabbitMQPwd) || string.IsNullOrEmpty(PwdSecretKey))
|
||||
return string.Empty;
|
||||
|
||||
string secretKey = GlobalFunctions.ConvertFromBase64String(PwdSecretKey);
|
||||
return Ease.NetCore.Utility.Global.CipherFunctions.DecryptByAES(privateKey: secretKey, publicKey: secretKey, data: _rabbitMQPwd, input: 2);
|
||||
}
|
||||
set { _rabbitMQPwd = value; }
|
||||
}
|
||||
public int RabbitMQPort { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Rate Limit by Ip Address
|
||||
/// </summary>
|
||||
public string RLName { get; set; }
|
||||
public int RLQueueLimit { get; set; }
|
||||
public int RLPermitLimit { get; set; }
|
||||
public int RLWindowInSecond { get; set; }
|
||||
public bool RLAutoReplenishment { get; set; }
|
||||
public int RLQueueProcessingOrder { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// AI Service Information
|
||||
/// </summary>
|
||||
private string _apiKeyOpenAI;
|
||||
public string ApiKeyOpenAI
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(_apiKeyOpenAI) || string.IsNullOrEmpty(PwdSecretKey))
|
||||
return string.Empty;
|
||||
|
||||
string secretKey = GlobalFunctions.ConvertFromBase64String(PwdSecretKey);
|
||||
return Ease.NetCore.Utility.Global.CipherFunctions.DecryptByAES(privateKey: secretKey, publicKey: secretKey, data: _apiKeyOpenAI, input: 2);
|
||||
}
|
||||
set { _apiKeyOpenAI = value; }
|
||||
}
|
||||
public string AIModel { get; set; }
|
||||
public string AICustomBaseUrl { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Google API Key
|
||||
/// </summary>
|
||||
private string _apiKeyGoogle;
|
||||
public string ApiKeyGoogle
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(_apiKeyGoogle) || string.IsNullOrEmpty(PwdSecretKey))
|
||||
return string.Empty;
|
||||
|
||||
string secretKey = GlobalFunctions.ConvertFromBase64String(PwdSecretKey);
|
||||
return Ease.NetCore.Utility.Global.CipherFunctions.DecryptByAES(privateKey: secretKey, publicKey: secretKey, data: _apiKeyGoogle, input: 2);
|
||||
}
|
||||
set { _apiKeyGoogle = value; }
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Product Hierarchy Maximum Level
|
||||
/// </summary>
|
||||
public int PHMaxLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Channel Hierarchy Maximum Level
|
||||
/// </summary>
|
||||
public int CHMaxLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Market Hierarchy Maximum Level
|
||||
/// </summary>
|
||||
public int MHMaxLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Market Hierarchy Maximum Level
|
||||
/// </summary>
|
||||
public int EPMaxLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Use to view payslip
|
||||
/// </summary>
|
||||
public string PayslipPath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// AD ie Active Domain Settings
|
||||
/// </summary>
|
||||
public ADSettings ADConfig { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Api Settings
|
||||
/// </summary>
|
||||
[Required]
|
||||
public ApiSettings API { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Swagger Setting
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Swagger Swagger { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// DB Connection Node
|
||||
/// </summary>
|
||||
[Required]
|
||||
public List<DbConnectionNode> DbConfig { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Default DB Connection Node
|
||||
/// </summary>
|
||||
public DbConnectionNode DefaultConnection => GetConnectionNode(DefaultDB);
|
||||
|
||||
/// <summary>
|
||||
/// DB Connection Node by name
|
||||
/// </summary>
|
||||
/// <param name="key">Connection node name</param>
|
||||
/// <returns></returns>
|
||||
public DbConnectionNode GetConnectionNode(string key)
|
||||
{
|
||||
if (string.IsNullOrEmpty(key))
|
||||
key = DefaultDB;
|
||||
|
||||
if (DbConfig == null || DbConfig.Count <= 0 || string.IsNullOrEmpty(key))
|
||||
return null;
|
||||
|
||||
return DbConfig.FirstOrDefault(x => x.ConnectionNode.Key == key);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class DbConnectionNode
|
||||
{
|
||||
public ConnectionNode ConnectionNode { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class ADSettings
|
||||
{
|
||||
public bool Enabled { get; set; }
|
||||
public string Domain { get; set; }
|
||||
public string Path { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class ApiSettings
|
||||
{
|
||||
[Required]
|
||||
public string Title { get; set; }
|
||||
|
||||
public string Description { get; set; }
|
||||
|
||||
public ApiContact Contact { get; set; }
|
||||
|
||||
public string TermsOfServiceUrl { get; set; }
|
||||
|
||||
public ApiLicense License { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class ApiContact
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string Email { get; set; }
|
||||
public string Url { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class ApiLicense
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string Url { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class Swagger
|
||||
{
|
||||
[Required]
|
||||
public bool Enabled { get; set; }
|
||||
}
|
||||
}
|
||||
52
Api/OnlineSalesAutoCrop.CoreAPI.Models/Global/ExcelReader.cs
Normal file
52
Api/OnlineSalesAutoCrop.CoreAPI.Models/Global/ExcelReader.cs
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
using ExcelDataReader;
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Global
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static class ExcelReader
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="fileSpec"></param>
|
||||
/// <param name="firstRowColumnHeader"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="Exception"></exception>
|
||||
public static DataSet GetDataSetFromFile(string fileSpec, bool firstRowColumnHeader)
|
||||
{
|
||||
try
|
||||
{
|
||||
DataSet ds;
|
||||
using FileStream stream = File.Open(fileSpec, FileMode.Open, FileAccess.Read);
|
||||
using (IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream))
|
||||
{
|
||||
ds = reader.AsDataSet();
|
||||
foreach (DataTable table in ds.Tables)
|
||||
{
|
||||
if (firstRowColumnHeader && table.Rows.Count > 0)
|
||||
{
|
||||
object[] columns = table.Rows[0].ItemArray;
|
||||
table.Rows.RemoveAt(0);
|
||||
for (int colIdx = 0; colIdx < columns.Length; colIdx++)
|
||||
{
|
||||
table.Columns[colIdx].ColumnName = $"{columns[colIdx]}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stream.Close();
|
||||
|
||||
return ds;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
110
Api/OnlineSalesAutoCrop.CoreAPI.Models/Global/ExcelTools.cs
Normal file
110
Api/OnlineSalesAutoCrop.CoreAPI.Models/Global/ExcelTools.cs
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
using DocumentFormat.OpenXml;
|
||||
using DocumentFormat.OpenXml.Packaging;
|
||||
using DocumentFormat.OpenXml.Spreadsheet;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using A = DocumentFormat.OpenXml.Drawing;
|
||||
using Xdr = DocumentFormat.OpenXml.Drawing.Spreadsheet;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Global
|
||||
{
|
||||
internal static class ExcelTools
|
||||
{
|
||||
private static PartTypeInfo GetImagePartTypeByBitmap(byte[] bytes)
|
||||
{
|
||||
byte[] tiff = "II*"u8.ToArray(); // TIFF
|
||||
byte[] tiff2 = "MM*"u8.ToArray(); // TIFF
|
||||
byte[] jpeg = [255, 216, 255]; // jpeg
|
||||
byte[] bmp = Encoding.ASCII.GetBytes("BM"); // BMP
|
||||
byte[] gif = Encoding.ASCII.GetBytes("GIF"); // GIF
|
||||
byte[] png = [137, 80, 78, 71]; // PNG
|
||||
|
||||
if (bmp.SequenceEqual(bytes.Take(bmp.Length)))
|
||||
return ImagePartType.Bmp;
|
||||
else if (gif.SequenceEqual(bytes.Take(gif.Length)))
|
||||
return ImagePartType.Gif;
|
||||
else if (png.SequenceEqual(bytes.Take(png.Length)))
|
||||
return ImagePartType.Png;
|
||||
else if (tiff.SequenceEqual(bytes.Take(tiff.Length)))
|
||||
return ImagePartType.Tiff;
|
||||
else if (tiff2.SequenceEqual(bytes.Take(tiff2.Length)))
|
||||
return ImagePartType.Tiff;
|
||||
else if (jpeg.SequenceEqual(bytes.Take(jpeg.Length)))
|
||||
return ImagePartType.Jpeg;
|
||||
|
||||
throw new InvalidOperationException("Image type could not be determined.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="worksheetPart"></param>
|
||||
/// <param name="stream"></param>
|
||||
/// <param name="imgDescription"></param>
|
||||
/// <param name="colNumber"></param>
|
||||
/// <param name="rowNumber"></param>
|
||||
public static void AddImage(WorksheetPart worksheetPart, Stream stream, string imgDescription, int colNumber, int rowNumber)
|
||||
{
|
||||
var drawingsPart = worksheetPart.DrawingsPart;
|
||||
drawingsPart ??= worksheetPart.AddNewPart<DrawingsPart>();
|
||||
|
||||
if (!worksheetPart.Worksheet.ChildElements.OfType<Drawing>().Any())
|
||||
worksheetPart.Worksheet.AppendChild(new Drawing { Id = worksheetPart.GetIdOfPart(drawingsPart) });
|
||||
|
||||
drawingsPart.WorksheetDrawing ??= new Xdr.WorksheetDrawing();
|
||||
var worksheetDrawing = drawingsPart.WorksheetDrawing;
|
||||
|
||||
ImagePart imagePart;
|
||||
long extentsCx = 0, extentsCy = 0;
|
||||
using (MemoryStream ms = new())
|
||||
{
|
||||
stream.Position = 0;
|
||||
stream.CopyTo(ms);
|
||||
stream.Position = 0;
|
||||
#pragma warning disable CA1416 // Validate platform compatibility
|
||||
using Bitmap bmp = new(ms);
|
||||
imagePart = drawingsPart.AddImagePart(GetImagePartTypeByBitmap(ms.ToArray()));
|
||||
imagePart.FeedData(stream);
|
||||
|
||||
extentsCx = bmp.Width * (long)(914400 / bmp.HorizontalResolution);
|
||||
extentsCy = bmp.Height * (long)(914400 / bmp.VerticalResolution);
|
||||
#pragma warning restore CA1416 // Validate platform compatibility
|
||||
}
|
||||
|
||||
uint nvpId = worksheetDrawing.Descendants<Xdr.NonVisualDrawingProperties>().Any() ? (UInt32Value)worksheetDrawing.Descendants<Xdr.NonVisualDrawingProperties>().Max(p => p.Id.Value) + 1 : 1U;
|
||||
Xdr.OneCellAnchor oneCellAnchor = new(
|
||||
new Xdr.FromMarker
|
||||
{
|
||||
ColumnId = new Xdr.ColumnId((colNumber - 1).ToString()),
|
||||
RowId = new Xdr.RowId((rowNumber - 1).ToString()),
|
||||
ColumnOffset = new Xdr.ColumnOffset("0"),
|
||||
RowOffset = new Xdr.RowOffset("0")
|
||||
},
|
||||
new Xdr.Extent { Cx = extentsCx, Cy = extentsCy },
|
||||
new Xdr.Picture(
|
||||
new Xdr.NonVisualPictureProperties(
|
||||
new Xdr.NonVisualDrawingProperties { Id = nvpId, Name = "Picture " + nvpId, Description = imgDescription },
|
||||
new Xdr.NonVisualPictureDrawingProperties(new A.PictureLocks { NoChangeAspect = true })
|
||||
),
|
||||
new Xdr.BlipFill(
|
||||
new A.Blip { Embed = drawingsPart.GetIdOfPart(imagePart), CompressionState = A.BlipCompressionValues.Print },
|
||||
new A.Stretch(new A.FillRectangle())
|
||||
),
|
||||
new Xdr.ShapeProperties(
|
||||
new A.Transform2D(
|
||||
new A.Offset { X = 0, Y = 0 },
|
||||
new A.Extents { Cx = extentsCx, Cy = extentsCy }
|
||||
),
|
||||
new A.PresetGeometry { Preset = A.ShapeTypeValues.Rectangle }
|
||||
)
|
||||
),
|
||||
new Xdr.ClientData()
|
||||
);
|
||||
|
||||
worksheetDrawing.Append(oneCellAnchor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Global
|
||||
{
|
||||
public class ErrorHandlingMiddleware(RequestDelegate next, ILoggerFactory loggerFactory)
|
||||
{
|
||||
private readonly RequestDelegate _next = next;
|
||||
private readonly ILogger _logger = loggerFactory.CreateLogger<ErrorHandlingMiddleware>();
|
||||
|
||||
public async Task Invoke(HttpContext context)
|
||||
{
|
||||
try
|
||||
{
|
||||
await _next(context);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await HandleExceptionAsync(context, ex);
|
||||
}
|
||||
}
|
||||
|
||||
private Task HandleExceptionAsync(HttpContext context, Exception exception)
|
||||
{
|
||||
var code = HttpStatusCode.InternalServerError; // 500 if unexpected
|
||||
|
||||
if (exception is ArgumentNullException)
|
||||
code = HttpStatusCode.BadRequest;
|
||||
else if (exception is ArgumentException)
|
||||
code = HttpStatusCode.BadRequest;
|
||||
else if (exception is UnauthorizedAccessException)
|
||||
code = HttpStatusCode.Unauthorized;
|
||||
|
||||
_logger.LogError($"GLOBAL ERROR HANDLER::HTTP:{code}::{exception.Message}");
|
||||
|
||||
var result = JsonConvert.SerializeObject(exception, Formatting.Indented);
|
||||
|
||||
context.Response.Clear();
|
||||
context.Response.ContentType = "application/json";
|
||||
context.Response.StatusCode = (int)code;
|
||||
return context.Response.WriteAsync(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
678
Api/OnlineSalesAutoCrop.CoreAPI.Models/Global/GlobalFunctions.cs
Normal file
678
Api/OnlineSalesAutoCrop.CoreAPI.Models/Global/GlobalFunctions.cs
Normal file
|
|
@ -0,0 +1,678 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models.Objects.Systems;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Runtime.Versioning;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Global
|
||||
{
|
||||
public static class GlobalFunctions
|
||||
{
|
||||
#region Menu Related Functions
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="parent"></param>
|
||||
/// <param name="srcData"></param>
|
||||
private static void MakeHierarchy(GroupPermission parent, List<GroupPermission> srcData)
|
||||
{
|
||||
try
|
||||
{
|
||||
IEnumerable<GroupPermission> children = srcData.Where(x => x.ParentId == parent.ModuleId);
|
||||
parent.Children.AddRange(children);
|
||||
foreach (GroupPermission child in parent.Children)
|
||||
{
|
||||
MakeHierarchy(parent: child, srcData: srcData);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static Menu HierarchicalMenu()
|
||||
{
|
||||
Menu menu = [];
|
||||
|
||||
Menu flatMenu = BuildMenu();
|
||||
IEnumerable<GroupPermission> data = flatMenu.Where(x => string.IsNullOrEmpty(x.ParentId) || string.IsNullOrWhiteSpace(x.ParentId));
|
||||
menu.AddRange(data);
|
||||
|
||||
foreach (GroupPermission parent in menu)
|
||||
{
|
||||
MakeHierarchy(parent: parent, srcData: flatMenu);
|
||||
}
|
||||
|
||||
return menu;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static Menu BuildMenu()
|
||||
{
|
||||
Menu menu = [];
|
||||
|
||||
#region System Setup
|
||||
|
||||
menu.BeginGroup("ELIT.1", "System Setup", "fa fa-sun-o");
|
||||
menu.MenuItem("ELIT.1.3", "Label Setting", "fa fa-sliders", "labelsetting", true);
|
||||
menu.MenuItem("ELIT.1.1", "System Information", "fa fa-cog", "thissystem", true);
|
||||
menu.MenuItem("ELIT.1.1A", "Sales Dashboard", false);
|
||||
menu.MenuItem("ELIT.1.1B", "Accounting Dashboard", false);
|
||||
menu.MenuItem("ELIT.1.1C", "Purchase Dashboard", false);
|
||||
menu.MenuItem("ELIT.1.1D", "Fixed Assets Dashboard", false);
|
||||
|
||||
menu.BeginGroup("ELIT.1.2", "User Management", "fa fa-users");
|
||||
menu.MenuItem("ELIT.1.2.1", "Groups", "fa fa-address-book-o", "groups", true);
|
||||
menu.MenuItem("ELIT.1.2.2", "Users", "fa fa-address-card-o", "users", true);
|
||||
menu.MenuItem("ELIT.1.2.3", "Reset Password", false);
|
||||
menu.MenuItem("ELIT.1.2.4", "Force Logout", "fa fa-address-card-o", "forcelogout", true);
|
||||
menu.MenuItem("ELIT.1.2.5", "View Other's Access log", false);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.MenuItem("ELIT.1.3A", "Lookup Data", "fa fa-sliders", "lookupdata", true);
|
||||
menu.MenuItem("ELIT.1.4", "Custom Report Setup", "fa fa-table", "customreports", true);
|
||||
|
||||
menu.BeginGroup("ELIT.1.5", "Basic Setup", "fa fa-wrench");
|
||||
menu.MenuItem("ELIT.1.5.1", "Clients", "fa fa-address-card-o", "clients", true);
|
||||
menu.MenuItem("ELIT.1.5.2", "Suppliers", "fa fa-credit-card", "suppliers", true);
|
||||
menu.MenuItem("ELIT.1.5.2A", "Allow to Set Cash Purchase Suppliers", false);
|
||||
menu.MenuItem("ELIT.1.5.3", "Employees", "fa fa-user-plus", "employees", true);
|
||||
menu.MenuItem("ELIT.1.5.4", "Project Leads", "fa fa-user-circle-o", "projectleads", true);
|
||||
menu.MenuItem("ELIT.1.5.5", "Project Managers", "fa fa-user-circle-o", "projectmgts", true);
|
||||
menu.MenuItem("ELIT.1.5.6", "Projects", "fa fa-product-hunt", "projects", true);
|
||||
menu.MenuItem("ELIT.1.5.7", "Stores", "fa fa-pencil-square", "stores", true);
|
||||
menu.MenuItem("ELIT.1.5.7A", "Allow to Set Central Store", false);
|
||||
menu.MenuItem("ELIT.1.5.8", "Banks & Branches", "fa fa-university", "bankbranches", true);
|
||||
menu.MenuItem("ELIT.1.5.9", "Bank Accounts", "fa fa-credit-card", "bankaccounts", true);
|
||||
menu.MenuItem("ELIT.1.5.10", "GL Codes", "fa fa-book", "glcodes", true);
|
||||
menu.MenuItem("ELIT.1.5.11", "User Clients & Projects", "fa fa-product-hunt", "userprojects", true);
|
||||
menu.MenuItem("ELIT.1.5.12", "User Suppliers", "fa fa-product-hunt", "usersuppliers", true);
|
||||
menu.MenuItem("ELIT.1.5.15", "Edit Code (All Setups)", false);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.EndGroup();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Athentication Process
|
||||
|
||||
menu.BeginGroup("ELIT.2", "Authentication Process", "fa fa-cogs");
|
||||
menu.MenuItem("ELIT.2.1", "Authentication", "fa fa-check", "authentications", true);
|
||||
menu.MenuItem("ELIT.2.2", "Authorization", "fa fa-check-square-o", "authorizations", true);
|
||||
menu.MenuItem("ELIT.2.3", "Deactivation", "fa fa-window-close-o", "deactivations", true);
|
||||
menu.MenuItem("ELIT.2.4", "Pending Authentication", string.Empty, "pendingauth", false);
|
||||
menu.EndGroup();
|
||||
|
||||
#endregion
|
||||
|
||||
#region General Ledger
|
||||
|
||||
menu.BeginGroup("ELIT.3", "General Ledger", "fa fa-university");
|
||||
|
||||
menu.BeginGroup("ELIT.3.1", "Basic Setup", "fa fa-wrench");
|
||||
menu.MenuItem("ELIT.3.1.1", "Chart of Accounts", "fa fa-th-list", "chartofaccounts", true);
|
||||
menu.MenuItem("ELIT.3.1.2", "Fix GL Balance", "fa fa-wrench", "fixBalance", true);
|
||||
menu.MenuItem("ELIT.3.1.3", "GL Head Identification", "fa fa-cog", "identifyglhead", true);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.BeginGroup("ELIT.3.2", "Transactions", "fa fa-building");
|
||||
menu.MenuItem("ELIT.3.2.1", "GL Transactions", "fa fa-archive", "gltrans", true);
|
||||
menu.MenuItem("ELIT.3.2.2", "Upload Auto Voucher", "fa fa-upload", "gltranav", true);
|
||||
menu.MenuItem("ELIT.3.2.3", "Year End Process", "fa fa-cog", "yearendprocess", true);
|
||||
menu.MenuItem("ELIT.3.2.4", "Undo Year End", "fa fa-undo", "undoyearend", true);
|
||||
menu.MenuItem("ELIT.3.2.5", "Authorize Transactions", "fa fa-check-square", "authgltrans", true);
|
||||
menu.MenuItem("ELIT.3.2.6", "Special Delete of GL Transaction", false);
|
||||
menu.MenuItem("ELIT.3.2.7", "Rollback Transactions", "fa fa-undo", "rollbackgltrans", true);
|
||||
menu.MenuItem("ELIT.3.2.8", "Dashboard Processor", "fa fa-cog", "dbprocessor", true);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.BeginGroup("ELIT.3.3", "Reports", "fa fa-newspaper-o");
|
||||
menu.MenuItem("ELIT.3.3.1", "Ledger", "fa fa-file-text-o", "glledger", true);
|
||||
menu.MenuItem("ELIT.3.3.2", "Monthly Turnover", "fa fa-file-text-o", "turnover", true);
|
||||
menu.MenuItem("ELIT.3.3.3", "Trial Balance", "fa fa-file-text-o", "trialbalance", true);
|
||||
menu.MenuItem("ELIT.3.3.8", "Income & Expenditure", "fa fa-file-text-o", "incomeexpense", true);
|
||||
menu.MenuItem("ELIT.3.3.4", "Day Book", "fa fa-file-text-o", "daybook", true);
|
||||
menu.MenuItem("ELIT.3.3.5", "Bank/Cash Book", "fa fa-file-text-o", "bankcashbook", true);
|
||||
menu.MenuItem("ELIT.3.3.6", "Schedule", "fa fa-file-text-o", "glschedule", true);
|
||||
menu.MenuItem("ELIT.3.3.7", "Previous Final Reports", "fa fa-file-text-o", "prvfinalreports", true);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.EndGroup();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Order To Cash
|
||||
|
||||
menu.BeginGroup("ELIT.4", "Order To Cash", "fa fa-money");
|
||||
|
||||
menu.BeginGroup("ELIT.4.1", "Basic Setup", "fa fa-wrench");
|
||||
menu.MenuItem("ELIT.4.1.1", "Income GL Codes", "fa fa-pencil-square-o", "incomeglcodes", true);
|
||||
menu.MenuItem("ELIT.4.1.2", "VAT Liability GL Codes", "fa fa-pencil-square", "vatglcodes", true);
|
||||
menu.MenuItem("ELIT.4.1.3", "AIT GL Codes", "fa fa-book", "aitglcodes", true);
|
||||
menu.MenuItem("ELIT.4.1.10", "Edit Code (All Setups)", false);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.BeginGroup("ELIT.4.2", "Regular Activities", "fa fa-building");
|
||||
menu.MenuItem("ELIT.4.2.1", "Purchase Orders", "fa fa-smile-o", "purchaseorders", true);
|
||||
menu.MenuItem("ELIT.4.2.2", "Invoices", "fa fa-share-square", "invoices", true);
|
||||
menu.MenuItem("ELIT.4.2.3", "Payments", "fa fa-money", "payments", true);
|
||||
menu.MenuItem("ELIT.4.2.4", "Freeze PO/Invoice", "fa fa-archive", "archivepoinvs", true);
|
||||
menu.MenuItem("ELIT.4.2.5", "PO Attachment", false);
|
||||
menu.MenuItem("ELIT.4.2.6", "Payment Confirmation", false);
|
||||
menu.MenuItem("ELIT.4.2.7", "Special Edit of PO/Invoice", false);
|
||||
menu.MenuItem("ELIT.4.2.8", "VAT Challan Update", "fa fa-sliders", "updvatchlano2c", true);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.BeginGroup("ELIT.4.3", "Reports", "fa fa-newspaper-o");
|
||||
menu.MenuItem("ELIT.4.3.1", "GL Vouchers", "fa fa-th-list", "glvouchers", true);
|
||||
menu.MenuItem("ELIT.4.3.2", "Transactional Reports", "fa fa-file-text-o", "txnreports", true);
|
||||
menu.MenuItem("ELIT.4.3.3", "Contract Expiry Report", "fa fa-file-text-o", "contexpryreports", true);
|
||||
menu.MenuItem("ELIT.4.3.4", "Customized Report", "fa fa-file-text-o", "customreporto2c", true);
|
||||
menu.MenuItem("ELIT.4.3.5", "Client Ledger", "fa fa-file-text-o", "clientledgero2c", true);
|
||||
menu.MenuItem("ELIT.4.3.6", "Monthly Trends", "fa fa-file-text-o", "monthlytrendso2c", true);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.EndGroup();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Sales
|
||||
|
||||
menu.BeginGroup("ELIT.9", "Sales System", "fa fa-sitemap");
|
||||
|
||||
menu.BeginGroup("ELIT.9.1", "Basic Setup", "fa fa-wrench");
|
||||
menu.MenuItem("ELIT.9.1.1", "Market Hierarchies", "fa fa-pencil-square", "markethierarchies", true);
|
||||
menu.MenuItem("ELIT.9.1.2", "Sales Points", "fa fa-pencil-square", "salespoints", true);
|
||||
menu.MenuItem("ELIT.9.1.2A", "Allow to Set Central Warehouse", false);
|
||||
menu.MenuItem("ELIT.9.1.3", "Product Hierarchies", "fa fa-pencil-square", "producthierarchies", true);
|
||||
menu.MenuItem("ELIT.9.1.4", "Brands", "fa fa-pencil-square", "brands", true);
|
||||
menu.MenuItem("ELIT.9.1.5", "SKUs", "fa fa-pencil-square", "skus", true);
|
||||
menu.MenuItem("ELIT.9.1.6", "Channel Hierarchies", "fa fa-pencil-square", "channelhierarchies", true);
|
||||
menu.MenuItem("ELIT.9.1.7", "Customers", "fa fa-pencil-square", "customers", true);
|
||||
menu.MenuItem("ELIT.9.1.8", "Sales Officers", "fa fa-pencil-square", "salesofficers", true);
|
||||
menu.MenuItem("ELIT.9.1.9", "Product Prices", "fa fa-pencil-square", "skupricess", true);
|
||||
menu.MenuItem("ELIT.9.1.10", "Product VAT-SD-Comm", "fa fa-pencil-square", "skuvattaxes", true);
|
||||
menu.MenuItem("ELIT.9.1.11", "Customer Credit", "fa fa-pencil-square", "customercredit", true);
|
||||
menu.MenuItem("ELIT.9.1.12", "External Products", "fa fa-pencil-square", "extnlproducts", true);
|
||||
menu.MenuItem("ELIT.9.1.13", "Sales Promotions", "fa fa-pencil-square", "salespromotions", true);
|
||||
menu.MenuItem("ELIT.9.1.14", "Order Authorization Limit", "fa fa-pencil-square", "ordrauthlimit", true);
|
||||
menu.MenuItem("ELIT.9.1.30", "Edit Code (All Setups)", false);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.BeginGroup("ELIT.9.2", "Regular Activities", "fa fa-building");
|
||||
menu.MenuItem("ELIT.9.2.1", "Customer Opening Balance", "fa fa-puzzle-piece", "slscustsopnbal", true);
|
||||
menu.MenuItem("ELIT.9.2.1A", "Authorize Customer Opening Balance", false);
|
||||
menu.MenuItem("ELIT.9.2.2", "Customer Adjustment", "fa fa-pencil-square", "slscustsadjustment", true);
|
||||
menu.MenuItem("ELIT.9.2.2A", "Authorize Customer Adjustment", false);
|
||||
menu.MenuItem("ELIT.9.2.3", "Initial Stock", "fa fa-puzzle-piece", "slsinitstocks", true);
|
||||
menu.MenuItem("ELIT.9.2.3A", "Authorize Initial Stock", false);
|
||||
menu.MenuItem("ELIT.9.2.4", "Receive Stocks", "fa fa-reply-all", "slsrcvstocks", true);
|
||||
menu.MenuItem("ELIT.9.2.4A", "Authorize Receive Stocks", false);
|
||||
menu.MenuItem("ELIT.9.2.5", "Sales Orders", "fa fa-pencil-square", "slsorders", true);
|
||||
menu.MenuItem("ELIT.9.2.5A", "Authorize Sales Order", false);
|
||||
menu.MenuItem("ELIT.9.2.6", "Spot Sales", "fa fa-pencil-square", "slsdirectinvoices", true);
|
||||
menu.MenuItem("ELIT.9.2.6A", "Authorize Spot Sales", false);
|
||||
menu.MenuItem("ELIT.9.2.7", "Sales Invoices", "fa fa-pencil-square", "slsinvoices", true);
|
||||
menu.MenuItem("ELIT.9.2.7A", "Authorize Sales Invoice", false);
|
||||
menu.MenuItem("ELIT.9.2.8", "Payment Against Invoices", "fa fa-archive", "slsinvpayments", true);
|
||||
menu.MenuItem("ELIT.9.2.8A", "Authorize Payment Against Invoice", false);
|
||||
menu.MenuItem("ELIT.9.2.9", "Stock Transfers", "fa fa-archive", "slsstockxfers", true);
|
||||
menu.MenuItem("ELIT.9.2.9A", "Authorize Stock Transfer", false);
|
||||
menu.MenuItem("ELIT.9.2.10", "Receive Transferred Stocks", "fa fa-archive", "slsstockxferrcvs", true);
|
||||
menu.MenuItem("ELIT.9.2.10A", "Authorize Transferred Stock", false);
|
||||
menu.MenuItem("ELIT.9.2.11", "Fix Transfer Anomalies", "fa fa-archive", "slsstockxferanmls", true);
|
||||
menu.MenuItem("ELIT.9.2.11A", "Authorize Transfer Anomaly", false);
|
||||
menu.MenuItem("ELIT.9.2.12", "Sales Return", "fa fa-archive", "slsrtnstocks", true);
|
||||
menu.MenuItem("ELIT.9.2.12A", "Authorize Return Stock", false);
|
||||
menu.MenuItem("ELIT.9.2.13", "Damage Stocks", "fa fa-archive", "slsdmgstocks", true);
|
||||
menu.MenuItem("ELIT.9.2.13A", "Authorize Damage Stock", false);
|
||||
menu.MenuItem("ELIT.9.2.14", "Stock Take", "fa fa-archive", "slsstocktakes", true);
|
||||
menu.MenuItem("ELIT.9.2.14A", "Authorize Stock Take", false);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.BeginGroup("ELIT.9.3", "Reports", "fa fa-newspaper-o");
|
||||
menu.MenuItem("ELIT.9.3.1", "Customer Balance", "fa fa-th-list", "salescustbalance", true);
|
||||
menu.MenuItem("ELIT.9.3.2", "Customer Ledger", "fa fa-th-list", "salescustledger", true);
|
||||
menu.MenuItem("ELIT.9.3.3", "Current Stock", "fa fa-file-text-o", "salescurrentstock", true);
|
||||
menu.MenuItem("ELIT.9.3.4", "Stock Ledger", "fa fa-th-list", "salesstockledger", true);
|
||||
|
||||
menu.EndGroup();
|
||||
|
||||
menu.EndGroup();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Purchase To Pay
|
||||
|
||||
menu.BeginGroup("ELIT.5", "Purchase To Pay", "fa fa-shopping-cart");
|
||||
|
||||
menu.BeginGroup("ELIT.5.1", "Basic Setup", "fa fa-wrench");
|
||||
menu.MenuItem("ELIT.5.1.1", "Product Types", "fa fa-address-card-o", "prodtypes", true);
|
||||
menu.MenuItem("ELIT.5.1.2", "Products", "fa fa-university", "products", true);
|
||||
menu.MenuItem("ELIT.5.1.3", "WO Terms & Conditions", "fa fa-pencil-square-o", "woterms", true);
|
||||
menu.MenuItem("ELIT.5.1.4", "VAT & AIT Rates", "fa fa-user-circle-o", "aitvatratep2p", true);
|
||||
menu.MenuItem("ELIT.5.1.10", "Edit Code (Basic Setup)", false);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.BeginGroup("ELIT.5.2", "Regular Activities", "fa fa-building");
|
||||
menu.MenuItem("ELIT.5.2.0", "Initial Stock", "fa fa-puzzle-piece", "initstocksp2p", true);
|
||||
menu.MenuItem("ELIT.5.2.0B", "Authorize Initial Stock", false);
|
||||
menu.MenuItem("ELIT.5.2.13", "Purchase Requisitions", "fa fa-puzzle-piece", "purchrequisitionsp2p", true);
|
||||
menu.MenuItem("ELIT.5.2.13A", "Authorize Purchase Requisition", false);
|
||||
menu.MenuItem("ELIT.5.2.1", "Issue Work Orders", "fa fa-smile-o", "workordersp2p", true);
|
||||
menu.MenuItem("ELIT.5.2.1A", "Work Order Attachment", false);
|
||||
menu.MenuItem("ELIT.5.2.1B", "Authorize Work Order", false);
|
||||
menu.MenuItem("ELIT.5.2.1C", "Freeze Work Order", false);
|
||||
menu.MenuItem("ELIT.5.2.12", "Advance Payments", "fa fa-money", "advpaymntsp2p", true);
|
||||
menu.MenuItem("ELIT.5.2.12A", "Authorize Advance Payment", false);
|
||||
menu.MenuItem("ELIT.5.2.2", "Receive Items at CS", "fa fa-reply-all", "stksrcvdatcsp2p", true);
|
||||
menu.MenuItem("ELIT.5.2.2A", "Authorize Receive Items at CS", false);
|
||||
menu.MenuItem("ELIT.5.2.3", "Receive Invoices", "fa fa-money", "invoicesp2p", true);
|
||||
menu.MenuItem("ELIT.5.2.3A", "Invoice Attachment", false);
|
||||
menu.MenuItem("ELIT.5.2.3B", "Authorize Invoice", false);
|
||||
menu.MenuItem("ELIT.5.2.4", "Cash Purchase", "fa fa-archive", "cashpurchases", true);
|
||||
menu.MenuItem("ELIT.5.2.4A", "Invoice Attachment", false);
|
||||
menu.MenuItem("ELIT.5.2.4B", "Authorize Cash Purchase", false);
|
||||
menu.MenuItem("ELIT.5.2.5", "Payment Against Invoice", "fa fa-archive", "paymentsp2p", true);
|
||||
menu.MenuItem("ELIT.5.2.5A", "Authorize Payment Against Invoice", false);
|
||||
menu.MenuItem("ELIT.5.2.6", "Goods Transfer", "fa fa-archive", "gdstransfers", true);
|
||||
menu.MenuItem("ELIT.5.2.6A", "Authorize Goods Transfer", false);
|
||||
menu.MenuItem("ELIT.5.2.7", "Receive Goods Transfer", "fa fa-archive", "gdsreceives", true);
|
||||
menu.MenuItem("ELIT.5.2.7A", "Authorize Receive Goods Transfer", false);
|
||||
menu.MenuItem("ELIT.5.2.8", "Fix Transfer Anomalies", "fa fa-archive", "transferanomalies", true);
|
||||
menu.MenuItem("ELIT.5.2.8A", "Authorize Transfer Anomalies", false);
|
||||
menu.MenuItem("ELIT.5.2.9", "Consumption of Goods", "fa fa-archive", "gdscnsmpnsp2p", true);
|
||||
menu.MenuItem("ELIT.5.2.9A", "Authorize Consumption of Goods", false);
|
||||
menu.MenuItem("ELIT.5.2.10", "Damage of Goods", "fa fa-archive", "gdsdamagesp2p", true);
|
||||
menu.MenuItem("ELIT.5.2.10A", "Authorize Damage of Goods", false);
|
||||
menu.MenuItem("ELIT.5.2.11", "Stock Take of Goods", "fa fa-archive", "stocktakes", true);
|
||||
menu.MenuItem("ELIT.5.2.11A", "Authorize Stock Take of Goods", false);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.BeginGroup("ELIT.5.3", "Reports", "fa fa-newspaper-o");
|
||||
menu.MenuItem("ELIT.5.3.1", "GL Vouchers", "fa fa-th-list", "glvouchersp2p", true);
|
||||
menu.MenuItem("ELIT.5.3.2", "Current Stock", "fa fa-file-text-o", "currentstockp2p", true);
|
||||
menu.MenuItem("ELIT.5.3.3", "Stock Ledger", "fa fa-file-text-o", "stockledgerp2p", true);
|
||||
menu.MenuItem("ELIT.5.3.4", "Supplier Ledger", "fa fa-file-text-o", "supplierledgerp2p", true);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.EndGroup();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Fixed Assets
|
||||
|
||||
menu.BeginGroup("ELIT.6", "Fixed Assets", "fa fa-sitemap");
|
||||
|
||||
menu.BeginGroup("ELIT.6.1", "Basic Setup", "fa fa-wrench");
|
||||
menu.MenuItem("ELIT.6.1.1", "Asset Types", "fa fa-address-card-o", "assettypes", true);
|
||||
menu.MenuItem("ELIT.6.1.2", "Asset Categories", "fa fa-university", "assetcategories", true);
|
||||
menu.MenuItem("ELIT.6.1.3", "Asset Items", "fa fa-credit-card", "assetitems", true);
|
||||
menu.MenuItem("ELIT.6.1.6", "Asset Hierarchies", "fa fa-credit-card", "assethierarchies", true);
|
||||
menu.MenuItem("ELIT.6.1.4", "Locations", "fa fa-pencil-square", "locations", true);
|
||||
menu.MenuItem("ELIT.6.1.5", "VAT & AIT Rates", "fa fa-user-circle-o", "aitvatratefa", true);
|
||||
menu.MenuItem("ELIT.6.1.10", "Edit Code (Basic Setup)", false);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.BeginGroup("ELIT.6.2", "Regular Activities", "fa fa-building");
|
||||
menu.MenuItem("ELIT.6.2.0", "Initial Fixed Assets", "fa fa-puzzle-piece", "initstocksfa", true);
|
||||
menu.MenuItem("ELIT.6.2.0B", "Authorize Initial Fixed Assets", false);
|
||||
menu.MenuItem("ELIT.6.2.15", "Purchase Requisitions", "fa fa-puzzle-piece", "purchrequisitionsfa", true);
|
||||
menu.MenuItem("ELIT.6.2.15A", "Authorize Purchase Requisition", false);
|
||||
menu.MenuItem("ELIT.6.2.1", "Issue Work Orders", "fa fa-smile-o", "workordersfa", true);
|
||||
menu.MenuItem("ELIT.6.2.1A", "Work Order Attachment", false);
|
||||
menu.MenuItem("ELIT.6.2.1B", "Authorize Work Order", false);
|
||||
menu.MenuItem("ELIT.6.2.1C", "Freeze Work Order", false);
|
||||
menu.MenuItem("ELIT.6.2.14", "Advance Payments", "fa fa-money", "advpaymntsfa", true);
|
||||
menu.MenuItem("ELIT.6.2.14A", "Authorize Advance Payment", false);
|
||||
menu.MenuItem("ELIT.6.2.2", "Received Items At CS", "fa fa-reply-all", "stksrcvdatcsfa", true);
|
||||
menu.MenuItem("ELIT.6.2.2A", "Authorize Receive Items at CS", false);
|
||||
menu.MenuItem("ELIT.6.2.3", "Receive Invoices", "fa fa-money", "invoicesfa", true);
|
||||
menu.MenuItem("ELIT.6.2.3A", "Invoice Attachment", false);
|
||||
menu.MenuItem("ELIT.6.2.3B", "Authorize Invoice", false);
|
||||
menu.MenuItem("ELIT.6.2.4", "Payment Against Invoice", "fa fa-archive", "paymentsfa", true);
|
||||
menu.MenuItem("ELIT.6.2.4A", "Authorize Payment Against Invoice", false);
|
||||
menu.MenuItem("ELIT.6.2.5", "Item Acquisition", "fa fa-smile-o", "itemsacquisition", true);
|
||||
menu.MenuItem("ELIT.6.2.5A", "Update Item Data", "fa fa-smile-o", "updfaitmdescription", true);
|
||||
menu.MenuItem("ELIT.6.2.6", "Item Installation", "fa fa-share-square", "astinstalns", true);
|
||||
menu.MenuItem("ELIT.6.2.6A", "Authorize Item Installation", false);
|
||||
menu.MenuItem("ELIT.6.2.7", "Transfer Fixed Asset", "fa fa-money", "assetxfers", true);
|
||||
menu.MenuItem("ELIT.6.2.7A", "Authorize Transfer Fixed Asset", false);
|
||||
menu.MenuItem("ELIT.6.2.8", "Write Off", "fa fa-archive", "astwriteoffs", true);
|
||||
menu.MenuItem("ELIT.6.2.8A", "Authorize Write Off", false);
|
||||
menu.MenuItem("ELIT.6.2.9", "Asset Sales", "fa fa-archive", "astsales", true);
|
||||
menu.MenuItem("ELIT.6.2.9A", "Authorize Asset Sales", false);
|
||||
menu.MenuItem("ELIT.6.2.10", "Add Asset Value", "fa fa-archive", "astaddvalues", true);
|
||||
menu.MenuItem("ELIT.6.2.10A", "Authorize Add Asset Value", false);
|
||||
menu.MenuItem("ELIT.6.2.11", "Reduce Asset Value", "fa fa-archive", "assetreducesvalue", true);
|
||||
menu.MenuItem("ELIT.6.2.11A", "Authorize Reduce Asset Value", false);
|
||||
menu.MenuItem("ELIT.6.2.12", "No Depreciation Mark", "fa fa-user-circle-o", "nodeprnmark", true);
|
||||
menu.MenuItem("ELIT.6.2.13", "Depreciation Calculation", "fa fa-user-circle-o", "calcdepreciation", true);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.BeginGroup("ELIT.6.3", "Reports", "fa fa-newspaper-o");
|
||||
menu.MenuItem("ELIT.6.3.1", "GL Vouchers", "fa fa-th-list", "glvouchersfa", true);
|
||||
menu.MenuItem("ELIT.6.3.2", "Current Stock", "fa fa-file-text-o", "currentstockfa", true);
|
||||
menu.MenuItem("ELIT.6.3.3", "Stock Ledger", "fa fa-file-text-o", "stockledgerfa", true);
|
||||
menu.MenuItem("ELIT.6.3.4", "Item Details", "fa fa-file-text-o", "faitemdetail", true);
|
||||
menu.MenuItem("ELIT.6.3.5", "Fixed Asset List", "fa fa-file-text-o", "faitemsatglance", true);
|
||||
menu.MenuItem("ELIT.6.3.6", "Waiting Acquisition", "fa fa-file-text-o", "faitemswtngaqstn", true);
|
||||
menu.MenuItem("ELIT.6.3.7", "Acquired Assets", "fa fa-file-text-o", "faitemsacquire", true);
|
||||
menu.MenuItem("ELIT.6.3.8", "Waiting Installation", "fa fa-file-text-o", "faitemswtnginstall", true);
|
||||
menu.MenuItem("ELIT.6.3.9", "No Depreciation Marked", "fa fa-file-text-o", "faitemsnodprn", true);
|
||||
menu.MenuItem("ELIT.6.3.10", "Depreciation Report", "fa fa-file-text-o", "faitemsdprnrpt", true);
|
||||
menu.MenuItem("ELIT.6.3.11", "Supplier Ledger", "fa fa-file-text-o", "fasupplierledger", true);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.EndGroup();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Project Management
|
||||
|
||||
menu.BeginGroup("ELIT.7", "Task Management", "fa fa-users");
|
||||
|
||||
menu.BeginGroup("ELIT.7.1", "Basic Setup", "fa fa-wrench");
|
||||
menu.MenuItem("ELIT.7.1.1", "Developers", "fa fa-user-circle-o", "developers", true);
|
||||
menu.MenuItem("ELIT.7.1.2", "Support Teams", "fa fa-user-circle-o", "supportteams", true);
|
||||
menu.MenuItem("ELIT.7.1.2A", "QA Teams", "fa fa-user-circle-o", "qateams", true);
|
||||
menu.MenuItem("ELIT.7.1.3", "Priorities", "fa fa-check-square-o", "priorities", true);
|
||||
menu.MenuItem("ELIT.7.1.4", "Task Statuses", "fa fa-pencil-square", "taskstatuses", true);
|
||||
menu.MenuItem("ELIT.7.1.5", "Task Categories", "fa fa-check-square-o", "taskcategories", true);
|
||||
menu.MenuItem("ELIT.7.1.6", "Task Types", "fa fa-check-square-o", "tasktypes", true);
|
||||
menu.MenuItem("ELIT.7.1.7", "Team Spaces", "fa fa-user-circle-o", "teamspaces", true);
|
||||
menu.MenuItem("ELIT.7.1.8", "Team Spaces Attributes", false);
|
||||
menu.MenuItem("ELIT.7.1.9", "User Projects", "fa fa-product-hunt", "tsuserprojects", true);
|
||||
menu.MenuItem("ELIT.7.1.10", "Edit Code (All Setups)", false);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.BeginGroup("ELIT.7.2", "Regular Activities", "fa fa-building");
|
||||
menu.MenuItem("ELIT.7.2.1", "Tasks", "fa fa-smile-o", "tasks", true);
|
||||
menu.MenuItem("ELIT.7.2.1A", "Complete Task", false);
|
||||
menu.MenuItem("ELIT.7.2.2", "My Tasks", "fa fa-tasks", "mytasks", true);
|
||||
menu.MenuItem("ELIT.7.2.2A", "Allow Edit Task Time", false);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.BeginGroup("ELIT.7.3", "Reports", "fa fa-newspaper-o");
|
||||
menu.MenuItem("ELIT.7.3.1", "Task Reports", "fa fa-file-text-o", "taskreport", true);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.EndGroup();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Attendance System
|
||||
|
||||
menu.BeginGroup("ELIT.8", "Attendance System", "fa fa-calendar");
|
||||
|
||||
menu.BeginGroup("ELIT.8.1", "Basic Setup", "fa fa-wrench");
|
||||
menu.MenuItem("ELIT.8.1.1", "Ip/Mac Entries", "fa fa-user-circle-o", "ipmacentries", true);
|
||||
menu.MenuItem("ELIT.8.1.1A", "Authorize Ip/Mac", false);
|
||||
menu.MenuItem("ELIT.8.1.2", "Holiday Calendar", "fa fa-calendar", "calendar", true);
|
||||
menu.MenuItem("ELIT.8.1.3", "Ramadan Calendar", "fa fa-calendar", "ramadan", true);
|
||||
menu.MenuItem("ELIT.8.1.15", "Special Edit/Delete", false);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.BeginGroup("ELIT.8.2", "Regular Activities", "fa fa-building");
|
||||
menu.MenuItem("ELIT.8.2.1", "Employee Leaves", "fa fa-smile-o", "empleaves", true);
|
||||
menu.MenuItem("ELIT.8.2.1A", "Authorize Leave", false);
|
||||
menu.MenuItem("ELIT.8.2.2", "Late Entries", "fa fa-tasks", "emplates", true);
|
||||
menu.MenuItem("ELIT.8.2.3", "Client Visits", "fa fa-tasks", "empclntvsts", true);
|
||||
menu.MenuItem("ELIT.8.2.4", "Home Offices", "fa fa-tasks", "emphmofcs", true);
|
||||
menu.MenuItem("ELIT.8.2.4A", "Authorize Home Office", false);
|
||||
menu.MenuItem("ELIT.8.2.5", "View All Employees Absent", false);
|
||||
menu.MenuItem("ELIT.8.2.6", "Asset Bookings", "fa fa-tasks", "assetbookings", true);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.BeginGroup("ELIT.8.3", "Reports", "fa fa-newspaper-o");
|
||||
menu.MenuItem("ELIT.8.3.1", "Login History", "fa fa-tasks", "loginhistory", true);
|
||||
menu.MenuItem("ELIT.8.3.2", "Attendance Reports", "fa fa-file-text-o", "atnreports", true);
|
||||
menu.EndGroup();
|
||||
|
||||
menu.EndGroup();
|
||||
|
||||
#endregion
|
||||
|
||||
return menu;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Miscellaneous functions
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="text"></param>
|
||||
/// <param name="width"></param>
|
||||
/// <returns></returns>
|
||||
[SupportedOSPlatform("windows")]
|
||||
private static float GetHeight(string text, float width)
|
||||
{
|
||||
Font subFont = new(familyName: "Arial", emSize: 8f, style: FontStyle.Regular);
|
||||
StringFormat sf = new();
|
||||
int sysWidth = Convert.ToInt32(width * 100f);
|
||||
Graphics g = Graphics.FromHwnd(IntPtr.Zero);
|
||||
SizeF newSz = g.MeasureString(text, subFont, sysWidth, sf);
|
||||
|
||||
return (newSz.Height / 100f);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="reportType"></param>
|
||||
/// <param name="rdlc"></param>
|
||||
/// <param name="compare"></param>
|
||||
/// <returns></returns>
|
||||
internal static string GetReportFileName(short reportType, bool rdlc, bool compare)
|
||||
{
|
||||
string fileName;
|
||||
if (rdlc)
|
||||
{
|
||||
fileName = reportType switch
|
||||
{
|
||||
3 => "rptCashflow{0}.rdlc",
|
||||
2 => "rptBalanceSheet{0}.rdlc",
|
||||
_ => "rptProfitLoss{0}.rdlc",
|
||||
};
|
||||
|
||||
fileName = string.Format(fileName, compare ? "Compare" : "");
|
||||
}
|
||||
else
|
||||
{
|
||||
fileName = reportType switch
|
||||
{
|
||||
3 => "Cashflow",
|
||||
2 => "BalanceSheet",
|
||||
_ => "ProfitLoss",
|
||||
};
|
||||
}
|
||||
|
||||
return fileName;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines the number of rows to exclude from a given <see cref="DataTable"/> based on the calculated height
|
||||
/// of values in specified fields.
|
||||
/// </summary>
|
||||
/// <remarks>This method calculates the height of values in the specified fields for each row in
|
||||
/// the <paramref name="table"/>. If the calculated height exceeds 0.18, the excess height is accumulated. The
|
||||
/// final result is determined by dividing the accumulated height by 0.18.</remarks>
|
||||
/// <param name="table">The <see cref="DataTable"/> containing the rows to evaluate.</param>
|
||||
/// <param name="field1">The name of the first field used to calculate height. Can be <see langword="null"/> or empty.</param>
|
||||
/// <param name="width1">The width parameter used to calculate the height for <paramref name="field1"/>.</param>
|
||||
/// <param name="field2">The name of the second field used to calculate height. Can be <see langword="null"/> or empty.</param>
|
||||
/// <param name="width2">The width parameter used to calculate the height for <paramref name="field2"/>.</param>
|
||||
/// <returns>The number of rows to exclude, calculated as the total adjusted height divided by 0.18. Returns 0 if no rows
|
||||
/// meet the criteria.</returns>
|
||||
[SupportedOSPlatform("windows")]
|
||||
public static int GetRowToExclude(DataTable table, string field1, float width1, string field2, float width2)
|
||||
{
|
||||
float height = 0;
|
||||
if (!string.IsNullOrEmpty(field1) || !string.IsNullOrEmpty(field2))
|
||||
{
|
||||
foreach (DataRow row in table.Rows)
|
||||
{
|
||||
float height1 = 0;
|
||||
if (!string.IsNullOrEmpty(field1))
|
||||
{
|
||||
string value = Convert.ToString(row[field1]);
|
||||
height1 = GetHeight(value, width1);
|
||||
}
|
||||
|
||||
float height2 = 0;
|
||||
if (!string.IsNullOrEmpty(field2))
|
||||
{
|
||||
string value = Convert.ToString(row[field2]);
|
||||
height2 = GetHeight(value, width2);
|
||||
}
|
||||
|
||||
height1 = Math.Max(height2, height1);
|
||||
if (height1 > 0.18f)
|
||||
height += (height1 - 0.18f);
|
||||
}
|
||||
}
|
||||
return Convert.ToInt32(height / 0.18);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="minutes"></param>
|
||||
/// <returns></returns>
|
||||
public static string ConvertToHourMinutes(int minutes)
|
||||
{
|
||||
string s = string.Empty;
|
||||
if (minutes >= 60)
|
||||
{
|
||||
int rem = minutes % 60;
|
||||
s = $"{(minutes - rem) / 60}h";
|
||||
|
||||
minutes = rem;
|
||||
}
|
||||
|
||||
if (minutes > 0)
|
||||
{
|
||||
if (s.Length > 0)
|
||||
s += " ";
|
||||
s += $"{minutes}m";
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="base64String"></param>
|
||||
/// <returns></returns>
|
||||
public static string ConvertFromBase64String(string base64String)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(base64String);
|
||||
if (string.IsNullOrEmpty(base64String))
|
||||
return string.Empty;
|
||||
|
||||
byte[] data = Convert.FromBase64String(base64String);
|
||||
return System.Text.Encoding.UTF8.GetString(data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="logger"></param>
|
||||
/// <param name="message"></param>
|
||||
public static void LogError(this ILogger logger, string message)
|
||||
{
|
||||
logger.LogError(message: message, args: null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="s"></param>
|
||||
/// <param name="length"></param>
|
||||
/// <returns></returns>
|
||||
public static string MakeCleanString(this string s, int length, bool removeComma = false)
|
||||
{
|
||||
string sd = $"{s}";
|
||||
sd = sd.Replace(oldValue: Environment.NewLine, newValue: " ");
|
||||
sd = sd.Replace(oldValue: "\n", newValue: " ");
|
||||
sd = sd.Replace(oldValue: "\r", newValue: " ");
|
||||
sd = Regex.Replace(sd, @"\s+", " ");
|
||||
sd = Ease.NetCore.Utility.Global.StringFunctions.Left(inputString: sd, length: length);
|
||||
if (removeComma)
|
||||
sd = sd.Replace(oldChar: ',', newChar: ' ');
|
||||
|
||||
return sd;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="row"></param>
|
||||
/// <param name="delimiter"></param>
|
||||
/// <returns></returns>
|
||||
public static string LineData(this DataRow row, string delimiter)
|
||||
{
|
||||
return string.Join(delimiter, row.ItemArray);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="enumValue"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetDescription<T>(this T enumValue) where T : struct, IConvertible
|
||||
{
|
||||
if (!typeof(T).IsEnum)
|
||||
return null;
|
||||
|
||||
string description = enumValue.ToString();
|
||||
System.Reflection.FieldInfo fieldInfo = enumValue.GetType().GetField(enumValue.ToString());
|
||||
|
||||
if (fieldInfo != null)
|
||||
{
|
||||
object[] attributes = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), true);
|
||||
if (attributes != null && attributes.Length > 0)
|
||||
description = ((DescriptionAttribute)attributes[0]).Description;
|
||||
}
|
||||
|
||||
return description;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="enumValue"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetLastDescription<T>(this T enumValue) where T : struct, IConvertible
|
||||
{
|
||||
string[] values = enumValue.ToString().Split(separator: [","], options: StringSplitOptions.TrimEntries);
|
||||
if (values?.Length <= 0)
|
||||
return string.Empty;
|
||||
|
||||
object lastNumericValue = Enum.Parse(enumType: enumValue.GetType(), value: values[^1]);
|
||||
T value = (T)Convert.ChangeType(lastNumericValue, typeof(T));
|
||||
|
||||
return GetDescription(value);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
457
Api/OnlineSalesAutoCrop.CoreAPI.Models/Global/ImportHelper.cs
Normal file
457
Api/OnlineSalesAutoCrop.CoreAPI.Models/Global/ImportHelper.cs
Normal file
|
|
@ -0,0 +1,457 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Global
|
||||
{
|
||||
public sealed class ImportHelper : IDisposable
|
||||
{
|
||||
#region Declaration
|
||||
|
||||
private DataTable _table;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructor & Desctructor
|
||||
|
||||
public ImportHelper()
|
||||
{
|
||||
Delimiter = '\0';
|
||||
_table = null;
|
||||
}
|
||||
|
||||
~ImportHelper()
|
||||
{
|
||||
_table?.Dispose();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
|
||||
#region Property Delimiter: char
|
||||
|
||||
public static char Delimiter { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
#region Formats Class
|
||||
|
||||
public sealed class Formats
|
||||
{
|
||||
public static readonly IFormatter Text = new TextFormatter();
|
||||
public static readonly IFormatter Excel = new ExcelFormatter();
|
||||
|
||||
private Formats() { }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IFormater Interface
|
||||
|
||||
public interface IFormatter
|
||||
{
|
||||
/// <summary>
|
||||
/// Return the DataTable after successful operation.
|
||||
/// </summary>
|
||||
/// <param name="fileSpec">Valid name of the file.</param>
|
||||
/// <param name="firstRowColumnHeader">Used the first line as header.</param>
|
||||
/// <returns>DataTable if successful.</returns>
|
||||
DataTable Import(string fileSpec, bool firstRowColumnHeader);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Excel Formatter Implementation
|
||||
|
||||
public class ExcelFormatter : IFormatter
|
||||
{
|
||||
#region Declaration & Constructor
|
||||
|
||||
public ExcelFormatter()
|
||||
{
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Functions
|
||||
|
||||
public DataTable Import(string fileSpec, bool firstRowColumnHeader)
|
||||
{
|
||||
try
|
||||
{
|
||||
return ExcelReader.GetDataSetFromFile(fileSpec: fileSpec, firstRowColumnHeader: firstRowColumnHeader).Tables[0];
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Text Formatter Implementation
|
||||
|
||||
public class TextFormatter : IFormatter
|
||||
{
|
||||
#region Declaration & Construct
|
||||
|
||||
private DataTable _dt;
|
||||
private readonly char CharQlfr = '"';
|
||||
private readonly string StringQlfr = "\"";
|
||||
private readonly string ReplacingQlfr = "\"\"";
|
||||
private readonly string ReplacedChar = ((char)1).ToString();
|
||||
|
||||
public TextFormatter()
|
||||
{
|
||||
_dt = null;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
|
||||
private int EndColumnIndex { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Functions
|
||||
|
||||
private void MakeColumn(bool hasHeader, string line)
|
||||
{
|
||||
try
|
||||
{
|
||||
string[] columns = ParseData(line);
|
||||
EndColumnIndex = columns.Length - 1;
|
||||
if (hasHeader)
|
||||
{
|
||||
for (int i = 0; i <= EndColumnIndex; i++)
|
||||
{
|
||||
DataColumn dc = new(string.Format("Col{0}", i))
|
||||
{
|
||||
Caption = columns[i],
|
||||
ReadOnly = true,
|
||||
DataType = typeof(string)
|
||||
};
|
||||
_dt.Columns.Add(dc);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i <= EndColumnIndex; i++)
|
||||
{
|
||||
DataColumn dc = new(string.Format("Col{0}", i))
|
||||
{
|
||||
Caption = string.Format("Column {0}", i),
|
||||
ReadOnly = true,
|
||||
DataType = typeof(string)
|
||||
};
|
||||
_dt.Columns.Add(dc);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
}
|
||||
|
||||
private string[] ParseData(string data)
|
||||
{
|
||||
List<string> cols = [];
|
||||
try
|
||||
{
|
||||
//To be use as a temporary
|
||||
List<string> tmpCols = [];
|
||||
|
||||
//Parse qualifier
|
||||
data = ParseQualifier(tmpCols, data);
|
||||
|
||||
//Make actual columns data
|
||||
tmpCols = [];
|
||||
ParseData(tmpCols, data);
|
||||
|
||||
//Convert back to original value
|
||||
foreach (var item in tmpCols)
|
||||
{
|
||||
string value = item.Replace(ReplacedChar, StringQlfr);
|
||||
cols.Add(value);
|
||||
}
|
||||
tmpCols.Clear();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
return [.. cols];
|
||||
}
|
||||
|
||||
private void ParseData(List<string> cols, string data)
|
||||
{
|
||||
try
|
||||
{
|
||||
//Find out position of qualifier
|
||||
int pos = data.IndexOf(CharQlfr);
|
||||
|
||||
//If there is no qualifier in the data do nothing
|
||||
if (pos == -1)
|
||||
{
|
||||
cols.AddRange(data.Split(Delimiter));
|
||||
return;
|
||||
}
|
||||
|
||||
//Second part of the data after qualifies
|
||||
string part2 = data[pos..];
|
||||
|
||||
//If qualifier is beginning of the data
|
||||
if (pos == 0)
|
||||
{
|
||||
//Remove beginning qualifier
|
||||
string part1 = data[1..];
|
||||
|
||||
//Find out next position of the qualifier, next qualifier must exists since qualifier starts
|
||||
pos = part1.IndexOf(CharQlfr);
|
||||
|
||||
//Read remaining data by removing the delimiter
|
||||
part2 = part1[(pos + 1)..];
|
||||
|
||||
//Remove delimiter if still exists at the start of the data
|
||||
if (part2.StartsWith(Delimiter.ToString()))
|
||||
part2 = part2[1..];
|
||||
|
||||
//Read data just before the position
|
||||
part1 = part1[..pos];
|
||||
|
||||
//Remove delimiter if still exists at the start of the data
|
||||
if (part1.EndsWith(Delimiter.ToString()))
|
||||
part1 = part1[..^1];
|
||||
|
||||
//Add to the column collection
|
||||
cols.Add(part1);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Read data just before the position
|
||||
string part1 = data[..pos];
|
||||
|
||||
//Remove end delimiter if still exists
|
||||
if (part1.EndsWith(Delimiter.ToString()))
|
||||
part1 = part1[..^1];
|
||||
|
||||
//If this is a valid data, Add to column collection splitting by delimiter of the first part
|
||||
if (part1.Length > 0)
|
||||
cols.AddRange(part1.Split(Delimiter));
|
||||
}
|
||||
|
||||
//Call recursively by using second part of the data
|
||||
ParseData(cols, part2);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
}
|
||||
|
||||
private string ParseQualifier(List<string> cols, string data)
|
||||
{
|
||||
try
|
||||
{
|
||||
//Find out the position of qualifier
|
||||
int pos = data.IndexOf(CharQlfr);
|
||||
|
||||
//If there is no qualifier in the data do nothing
|
||||
if (pos == -1)
|
||||
{
|
||||
cols.Add(data);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Read left part of the data of current position need to add into collection
|
||||
string remData = data[..pos];
|
||||
cols.Add(remData);
|
||||
|
||||
//Scan each character of remaining part of the data
|
||||
for (int i = pos; i < data.Length; i++)
|
||||
{
|
||||
//Read character at current position
|
||||
string value = data.Substring(i, 1);
|
||||
|
||||
//Add this character into collection
|
||||
if (i == pos)
|
||||
{
|
||||
cols.Add(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Read two characters from current position
|
||||
string pairValue = i + 1 < data.Length ? data.Substring(i, 2) : data.Substring(i, 1);
|
||||
|
||||
//If current character is a qualifier but is not a replaceable qualifier
|
||||
if (value[0] == CharQlfr && !pairValue.Equals(ReplacingQlfr))
|
||||
{
|
||||
//Add this character into collection
|
||||
cols.Add(value);
|
||||
|
||||
//If current position is the last position of the data just exit from loop
|
||||
if (i + 1 >= data.Length)
|
||||
break;
|
||||
|
||||
//Read remaining part of the data
|
||||
data = data[(i + 1)..];
|
||||
|
||||
//Call this function recursively and exit from loop
|
||||
ParseQualifier(cols, data);
|
||||
break;
|
||||
}
|
||||
else if (pairValue.Equals(ReplacingQlfr)) //If this is a replaceable qualifier just replace the with the special character
|
||||
{
|
||||
value = ReplacedChar;
|
||||
|
||||
//Increase the current position by 1
|
||||
i++;
|
||||
}
|
||||
|
||||
//Add value into collection
|
||||
cols.Add(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
|
||||
return string.Join("", [.. cols]);
|
||||
}
|
||||
|
||||
public DataTable Import(string fileSpec, bool firstRowColumnHeader)
|
||||
{
|
||||
try
|
||||
{
|
||||
int rowIdx = -1;
|
||||
bool firstLine = true;
|
||||
_dt = new DataTable("TextReader");
|
||||
using StreamReader sr = new(fileSpec);
|
||||
while (sr.Peek() != -1)
|
||||
{
|
||||
string line = sr.ReadLine();
|
||||
|
||||
if (line.Trim().Length <= 0)
|
||||
continue;
|
||||
|
||||
if (firstLine)
|
||||
MakeColumn(firstRowColumnHeader, line);
|
||||
|
||||
if (firstRowColumnHeader && firstLine)
|
||||
{
|
||||
firstLine = false;
|
||||
continue;
|
||||
}
|
||||
firstLine = false;
|
||||
|
||||
rowIdx++;
|
||||
DataRow dr = _dt.NewRow();
|
||||
object[] columns = ParseData(line);
|
||||
for (int i = 0; i < columns.Length; i++)
|
||||
{
|
||||
dr[string.Format("Col{0}", i)] = columns[i];
|
||||
}
|
||||
_dt.Rows.Add(dr);
|
||||
}
|
||||
|
||||
sr.Close();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
|
||||
return _dt;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Functions
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
_table = new DataTable("ImportHelper");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="formatter"></param>
|
||||
/// <param name="fileSpec"></param>
|
||||
/// <returns></returns>
|
||||
public DataTable Import(IFormatter formatter, string fileSpec)
|
||||
{
|
||||
if (formatter == null)
|
||||
throw new ArgumentException("Need to specify a formatter", nameof(formatter));
|
||||
|
||||
try
|
||||
{
|
||||
_table = Import(formatter, fileSpec, false);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
|
||||
return _table;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="formatter"></param>
|
||||
/// <param name="fileSpec"></param>
|
||||
/// <param name="firstRowColumnHeader"></param>
|
||||
/// <returns></returns>
|
||||
public DataTable Import(IFormatter formatter, string fileSpec, bool firstRowColumnHeader)
|
||||
{
|
||||
if (formatter == null)
|
||||
throw new ArgumentException("Need to specify a formatter", nameof(formatter));
|
||||
|
||||
if (string.IsNullOrEmpty(fileSpec) || string.IsNullOrWhiteSpace(fileSpec))
|
||||
throw new InvalidOperationException("Provide a valid file name to read.");
|
||||
|
||||
if (formatter == Formats.Text && Delimiter == '\0')
|
||||
throw new InvalidOperationException("Provide a field delimiter of the file.");
|
||||
|
||||
try
|
||||
{
|
||||
_table = formatter.Import(fileSpec, firstRowColumnHeader);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message);
|
||||
}
|
||||
|
||||
return _table;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public void Dispose()
|
||||
{
|
||||
_table?.Dispose();
|
||||
_table = null;
|
||||
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
654
Api/OnlineSalesAutoCrop.CoreAPI.Models/Global/MailHelper.cs
Normal file
654
Api/OnlineSalesAutoCrop.CoreAPI.Models/Global/MailHelper.cs
Normal file
|
|
@ -0,0 +1,654 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Net.Mail;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Twilio;
|
||||
using Twilio.Rest.Api.V2010.Account;
|
||||
using Twilio.Types;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Global
|
||||
{
|
||||
public static class MailHelper
|
||||
{
|
||||
private static IPAddress _senderIp = IPAddress.None;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="settings"></param>
|
||||
/// <param name="msg"></param>
|
||||
/// <param name="mobileNumber"></param>
|
||||
/// <param name="subject"></param>
|
||||
/// <param name="emailAddress"></param>
|
||||
public static void SendSMSAndMail(AppSettings settings, string msg, string mobileNumber, string subject, string emailAddress)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(msg) && !string.IsNullOrWhiteSpace(msg))
|
||||
{
|
||||
//Send SMS
|
||||
SendSMSOrWhatsAppMessage(settings: settings, whatsAppMsg: false, msg: msg, mobileNumber: mobileNumber);
|
||||
|
||||
//Send Email
|
||||
string bccEmail = settings.EmailBcc;
|
||||
if (string.IsNullOrEmpty(bccEmail))
|
||||
bccEmail = emailAddress;
|
||||
|
||||
List<string> to = [emailAddress];
|
||||
List<string> bcc = [bccEmail];
|
||||
SendMailMessage(settings: settings, to: to, cc: null, bcc: bcc, attachments: null, embeddedImages: null, isHtmlBody: false, priority: MailPriority.Normal, subject: subject, messageBody: msg);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
//continue working for next data
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="settings"></param>
|
||||
/// <param name="whatsAppMsg"></param>
|
||||
/// <param name="msg"></param>
|
||||
/// <param name="mobileNumber"></param>
|
||||
public static void SendSMSOrWhatsAppMessage(AppSettings settings, bool whatsAppMsg, string msg, string mobileNumber)
|
||||
{
|
||||
try
|
||||
{
|
||||
mobileNumber = mobileNumber.Replace("+", "");
|
||||
if (!string.IsNullOrEmpty(settings.WaAccountSid) && !string.IsNullOrWhiteSpace(settings.WaAuthToken) && !string.IsNullOrWhiteSpace(settings.WaMsgSvcSid))
|
||||
{
|
||||
TwilioClient.Init(username: settings.WaAccountSid, password: settings.WaAuthToken);
|
||||
if (whatsAppMsg && !string.IsNullOrEmpty(settings.WaSenderId))
|
||||
{
|
||||
mobileNumber = $"+88{(Ease.NetCore.Utility.Global.StringFunctions.Right(inputString: mobileNumber, length: 11))}";
|
||||
_ = MessageResource.Create(body: msg, from: new PhoneNumber($"whatsapp:{settings.WaSenderId}"), to: new PhoneNumber($"whatsapp:{mobileNumber}"));
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(settings.WaMsgSvcSid))
|
||||
{
|
||||
mobileNumber = $"+88{(Ease.NetCore.Utility.Global.StringFunctions.Right(inputString: mobileNumber, length: 11))}";
|
||||
CreateMessageOptions messageOptions = new(to: new PhoneNumber(number: mobileNumber))
|
||||
{
|
||||
Body = msg,
|
||||
MessagingServiceSid = settings.WaMsgSvcSid
|
||||
};
|
||||
_ = MessageResource.Create(messageOptions);
|
||||
}
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(settings.SmsApiUrl) && !string.IsNullOrEmpty(settings.SmsAccessInfo))
|
||||
{
|
||||
string url = settings.SmsApiUrl;
|
||||
if (string.IsNullOrEmpty(url))
|
||||
return;
|
||||
|
||||
string smsSecretKey = GlobalFunctions.ConvertFromBase64String(settings.SmsSecretKey);
|
||||
if (string.IsNullOrEmpty(smsSecretKey))
|
||||
return;
|
||||
|
||||
string accessInfo = Ease.NetCore.Utility.Global.CipherFunctions.Decrypt(settings.SmsSecretKey, settings.SmsAccessInfo);
|
||||
if (string.IsNullOrEmpty(accessInfo))
|
||||
return;
|
||||
|
||||
//Send SMS
|
||||
string smsString = string.Format("sms[0][0]={0}&sms[0][1]={1}&sms[0][2]={2}", mobileNumber, msg, Guid.NewGuid().ToString());
|
||||
using HttpClient client = new();
|
||||
client.DefaultRequestHeaders.Clear();
|
||||
client.DefaultRequestHeaders.Accept.Clear();
|
||||
|
||||
//Content
|
||||
string content = accessInfo + smsString;
|
||||
HttpRequestMessage request = new(HttpMethod.Post, url)
|
||||
{
|
||||
Content = new StringContent(content, Encoding.UTF8, "application/x-www-form-urlencoded")
|
||||
};
|
||||
|
||||
var httpResponse = client.PostAsync(url, request.Content).Result;
|
||||
if (httpResponse != null && httpResponse.Content != null)
|
||||
{
|
||||
content = httpResponse.Content.ReadAsStringAsync().Result;
|
||||
}
|
||||
else
|
||||
{
|
||||
content = "ERROR: -999";
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
try
|
||||
{
|
||||
string text = e.Message;
|
||||
Exception ie = e.InnerException;
|
||||
while (ie != null)
|
||||
{
|
||||
text += ", " + ie.Message;
|
||||
ie = ie.InnerException;
|
||||
}
|
||||
|
||||
string path = settings.EmailErrorLogPath;
|
||||
if (string.IsNullOrEmpty(path))
|
||||
path = @"C:\Mail.Web\MailError";
|
||||
|
||||
string logFileSpec = Path.Combine(path, string.Format("{0}log.txt", DateTime.Today.ToString("yyMMdd")));
|
||||
if (!Directory.Exists(path))
|
||||
Directory.CreateDirectory(path);
|
||||
|
||||
if (File.Exists(logFileSpec))
|
||||
{
|
||||
using StreamWriter sw = File.AppendText(logFileSpec);
|
||||
string log = Environment.NewLine + new string('*', 40) + Environment.NewLine;
|
||||
log += string.Format(" TimeStamp: {0} {1}{2}", DateTime.Today.ToShortDateString(), DateTime.Now.ToLongTimeString(), Environment.NewLine);
|
||||
log += new string('*', 40);
|
||||
sw.WriteLine(log);
|
||||
sw.WriteLine(text);
|
||||
sw.Flush();
|
||||
sw.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
using StreamWriter sw = File.CreateText(logFileSpec);
|
||||
string log = new string('*', 40) + Environment.NewLine;
|
||||
log += string.Format(" TimeStamp: {0} {1}{2}", DateTime.Today.ToShortDateString(), DateTime.Now.ToLongTimeString(), Environment.NewLine);
|
||||
log += new string('*', 40);
|
||||
sw.WriteLine(log);
|
||||
sw.WriteLine(text);
|
||||
sw.Flush();
|
||||
sw.Close();
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="settings"></param>
|
||||
/// <param name="to"></param>
|
||||
/// <param name="cc"></param>
|
||||
/// <param name="bcc"></param>
|
||||
/// <param name="attachments"></param>
|
||||
/// <param name="embeddedImages"></param>
|
||||
/// <param name="isHtmlBody"></param>
|
||||
/// <param name="priority"></param>
|
||||
/// <param name="subject"></param>
|
||||
/// <param name="messageBody"></param>
|
||||
/// <returns></returns>
|
||||
public static bool SendMailMessage(AppSettings settings, List<string> to, List<string> cc, List<string> bcc, List<string> attachments, List<string> embeddedImages, bool isHtmlBody, MailPriority priority, string subject, string messageBody)
|
||||
{
|
||||
try
|
||||
{
|
||||
#region Read config info
|
||||
|
||||
if (string.IsNullOrEmpty(settings.EmailHost))
|
||||
throw new Exception("No Setting has been found for Host address [EmailHost].");
|
||||
|
||||
if (settings.EmailPort <= 0)
|
||||
throw new Exception("No Setting has been found for Port number [EmailPort].");
|
||||
|
||||
if (string.IsNullOrEmpty(settings.EmailSenderId))
|
||||
throw new Exception("No Setting has been found for Sender email address [EmailSenderId].");
|
||||
|
||||
if (string.IsNullOrEmpty(settings.EmailSenderPwd))
|
||||
throw new Exception("No Setting has been found for Sender email address password [EmailSenderPwd].");
|
||||
|
||||
#endregion
|
||||
|
||||
using MailMessage message = new() { Subject = subject, Body = messageBody, IsBodyHtml = isHtmlBody, Priority = priority };
|
||||
if (!string.IsNullOrEmpty(settings.EmailSenderId) && !string.IsNullOrEmpty(settings.EmailSenderName))
|
||||
{
|
||||
message.From = new MailAddress(settings.EmailSenderId, settings.EmailSenderName);
|
||||
message.Sender = new MailAddress(settings.EmailSenderId, settings.EmailSenderName);
|
||||
}
|
||||
|
||||
if (to != null && to.Count > 0)
|
||||
{
|
||||
foreach (string email in to)
|
||||
message.To.Add(email);
|
||||
}
|
||||
|
||||
if (cc != null && cc.Count > 0)
|
||||
{
|
||||
foreach (string email in cc)
|
||||
message.CC.Add(email);
|
||||
}
|
||||
|
||||
if (bcc != null && bcc.Count > 0)
|
||||
{
|
||||
foreach (string email in bcc)
|
||||
message.Bcc.Add(email);
|
||||
}
|
||||
|
||||
if (attachments != null && attachments.Count > 0)
|
||||
{
|
||||
foreach (string attachment in attachments)
|
||||
{
|
||||
Attachment item = new(attachment);
|
||||
message.Attachments.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
AlternateView altView;
|
||||
if (isHtmlBody)
|
||||
{
|
||||
message.IsBodyHtml = true;
|
||||
altView = AlternateView.CreateAlternateViewFromString(content: messageBody, contentEncoding: null, mediaType: "text/html");
|
||||
if (embeddedImages != null && embeddedImages.Count > 0)
|
||||
{
|
||||
foreach (string imbeddedImage in embeddedImages)
|
||||
{
|
||||
string contentId = imbeddedImage;
|
||||
int indexOf = imbeddedImage.IndexOf('.');
|
||||
if (indexOf > 0)
|
||||
contentId = contentId[..indexOf];
|
||||
|
||||
LinkedResource lr = new(imbeddedImage)
|
||||
{
|
||||
ContentId = contentId
|
||||
};
|
||||
altView.LinkedResources.Add(lr);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
message.IsBodyHtml = false;
|
||||
altView = AlternateView.CreateAlternateViewFromString(content: messageBody, contentEncoding: null, mediaType: "text/plain");
|
||||
}
|
||||
message.AlternateViews.Add(item: altView);
|
||||
|
||||
using SmtpClient client = new() { Host = settings.EmailHost, Port = settings.EmailPort, EnableSsl = settings.EmailEnableSsl };
|
||||
NetworkCredential nc = new(settings.EmailSenderId, settings.EmailSenderPwd);
|
||||
client.UseDefaultCredentials = settings.EmailUseDefaultCredentials;
|
||||
client.Credentials = nc;
|
||||
client.Send(message);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
try
|
||||
{
|
||||
string text = e.Message;
|
||||
Exception ie = e.InnerException;
|
||||
while (ie != null)
|
||||
{
|
||||
text += ", " + ie.Message;
|
||||
ie = ie.InnerException;
|
||||
}
|
||||
|
||||
string path = settings.EmailErrorLogPath;
|
||||
if (string.IsNullOrEmpty(path))
|
||||
path = @"C:\Mail.Web\MailError";
|
||||
|
||||
string logFileSpec = Path.Combine(path, string.Format("{0}log.txt", DateTime.Today.ToString("yyMMdd")));
|
||||
if (!Directory.Exists(path))
|
||||
Directory.CreateDirectory(path);
|
||||
|
||||
if (File.Exists(logFileSpec))
|
||||
{
|
||||
using StreamWriter sw = File.AppendText(logFileSpec);
|
||||
string log = Environment.NewLine + new string('*', 40) + Environment.NewLine;
|
||||
log += string.Format(" TimeStamp: {0} {1}{2}", DateTime.Today.ToShortDateString(), DateTime.Now.ToLongTimeString(), Environment.NewLine);
|
||||
log += new string('*', 40);
|
||||
sw.WriteLine(log);
|
||||
sw.WriteLine(text);
|
||||
sw.Flush();
|
||||
sw.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
using StreamWriter sw = File.CreateText(logFileSpec);
|
||||
string log = new string('*', 40) + Environment.NewLine;
|
||||
log += string.Format(" TimeStamp: {0} {1}{2}", DateTime.Today.ToShortDateString(), DateTime.Now.ToLongTimeString(), Environment.NewLine);
|
||||
log += new string('*', 40);
|
||||
sw.WriteLine(log);
|
||||
sw.WriteLine(text);
|
||||
sw.Flush();
|
||||
sw.Close();
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="settings"></param>
|
||||
/// <param name="to"></param>
|
||||
/// <param name="cc"></param>
|
||||
/// <param name="bcc"></param>
|
||||
/// <param name="attachments"></param>
|
||||
/// <param name="embeddedImages"></param>
|
||||
/// <param name="isHtmlBody"></param>
|
||||
/// <param name="priority"></param>
|
||||
/// <param name="subject"></param>
|
||||
/// <param name="messageBody"></param>
|
||||
public static async Task SendMailMessageAsync(AppSettings settings, List<string> to, List<string> cc, List<string> bcc, List<string> attachments, List<string> embeddedImages, bool isHtmlBody, MailPriority priority, string subject, string messageBody)
|
||||
{
|
||||
try
|
||||
{
|
||||
#region Read config info
|
||||
|
||||
if (string.IsNullOrEmpty(settings.EmailHost))
|
||||
throw new Exception("No Setting has been found for Host address [EmailHost].");
|
||||
|
||||
if (settings.EmailPort <= 0)
|
||||
throw new Exception("No Setting has been found for Port number [EmailPort].");
|
||||
|
||||
if (string.IsNullOrEmpty(settings.EmailSenderId))
|
||||
throw new Exception("No Setting has been found for Sender email address [EmailSenderId].");
|
||||
|
||||
if (string.IsNullOrEmpty(settings.EmailSenderPwd))
|
||||
throw new Exception("No Setting has been found for Sender email address password [EmailSenderPwd].");
|
||||
|
||||
#endregion
|
||||
|
||||
MailMessage message = new() { Subject = subject, Body = messageBody, IsBodyHtml = isHtmlBody, Priority = priority };
|
||||
if (!string.IsNullOrEmpty(settings.EmailSenderId) && !string.IsNullOrEmpty(settings.EmailSenderName))
|
||||
{
|
||||
message.From = new MailAddress(settings.EmailSenderId, settings.EmailSenderName);
|
||||
message.Sender = new MailAddress(settings.EmailSenderId, settings.EmailSenderName);
|
||||
}
|
||||
|
||||
if (to != null && to.Count > 0)
|
||||
{
|
||||
foreach (string email in to)
|
||||
message.To.Add(email);
|
||||
}
|
||||
|
||||
if (cc != null && cc.Count > 0)
|
||||
{
|
||||
foreach (string email in cc)
|
||||
message.CC.Add(email);
|
||||
}
|
||||
|
||||
if (bcc != null && bcc.Count > 0)
|
||||
{
|
||||
foreach (string email in bcc)
|
||||
message.Bcc.Add(email);
|
||||
}
|
||||
|
||||
if (attachments != null && attachments.Count > 0)
|
||||
{
|
||||
foreach (string attachment in attachments)
|
||||
{
|
||||
Attachment item = new(attachment);
|
||||
message.Attachments.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
AlternateView altView;
|
||||
if (isHtmlBody)
|
||||
{
|
||||
message.IsBodyHtml = true;
|
||||
altView = AlternateView.CreateAlternateViewFromString(content: messageBody, contentEncoding: null, mediaType: "text/html");
|
||||
if (embeddedImages != null && embeddedImages.Count > 0)
|
||||
{
|
||||
foreach (string embeddedImage in embeddedImages)
|
||||
{
|
||||
string contentId = embeddedImage;
|
||||
int indexOf = embeddedImage.IndexOf('.');
|
||||
if (indexOf > 0)
|
||||
contentId = contentId[..indexOf];
|
||||
|
||||
LinkedResource lr = new(embeddedImage)
|
||||
{
|
||||
ContentId = contentId
|
||||
};
|
||||
altView.LinkedResources.Add(lr);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
message.IsBodyHtml = false;
|
||||
altView = AlternateView.CreateAlternateViewFromString(content: messageBody, contentEncoding: null, mediaType: "text/plain");
|
||||
}
|
||||
message.AlternateViews.Add(item: altView);
|
||||
|
||||
SmtpClient client = new() { Host = settings.EmailHost, Port = settings.EmailPort, EnableSsl = settings.EmailEnableSsl };
|
||||
NetworkCredential nc = new(settings.EmailSenderId, settings.EmailSenderPwd);
|
||||
client.UseDefaultCredentials = settings.EmailUseDefaultCredentials;
|
||||
client.Credentials = nc;
|
||||
client.SendCompleted += (s, e) =>
|
||||
{
|
||||
client.Dispose();
|
||||
message.Dispose();
|
||||
};
|
||||
|
||||
await client.SendMailAsync(message: message);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
try
|
||||
{
|
||||
string text = e.Message;
|
||||
Exception ie = e.InnerException;
|
||||
while (ie != null)
|
||||
{
|
||||
text += ", " + ie.Message;
|
||||
ie = ie.InnerException;
|
||||
}
|
||||
|
||||
string path = settings.EmailErrorLogPath;
|
||||
if (string.IsNullOrEmpty(path))
|
||||
path = @"C:\Mail.Web\MailError";
|
||||
|
||||
string logFileSpec = Path.Combine(path, string.Format("{0}log.txt", DateTime.Today.ToString("yyMMdd")));
|
||||
if (!Directory.Exists(path))
|
||||
Directory.CreateDirectory(path);
|
||||
|
||||
if (File.Exists(logFileSpec))
|
||||
{
|
||||
using StreamWriter sw = File.AppendText(logFileSpec);
|
||||
string log = Environment.NewLine + new string('*', 40) + Environment.NewLine;
|
||||
log += string.Format(" TimeStamp: {0} {1}{2}", DateTime.Today.ToShortDateString(), DateTime.Now.ToLongTimeString(), Environment.NewLine);
|
||||
log += new string('*', 40);
|
||||
await sw.WriteLineAsync(log);
|
||||
await sw.WriteLineAsync(text);
|
||||
await sw.FlushAsync();
|
||||
sw.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
using StreamWriter sw = File.CreateText(logFileSpec);
|
||||
string log = new string('*', 40) + Environment.NewLine;
|
||||
log += string.Format(" TimeStamp: {0} {1}{2}", DateTime.Today.ToShortDateString(), DateTime.Now.ToLongTimeString(), Environment.NewLine);
|
||||
log += new string('*', 40);
|
||||
await sw.WriteLineAsync(log);
|
||||
await sw.WriteLineAsync(text);
|
||||
await sw.FlushAsync();
|
||||
sw.Close();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
//do nothing
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="settings"></param>
|
||||
/// <param name="to"></param>
|
||||
/// <param name="cc"></param>
|
||||
/// <param name="bcc"></param>
|
||||
/// <param name="attachments"></param>
|
||||
/// <param name="embeddedImages"></param>
|
||||
/// <param name="isBodyHtml"></param>
|
||||
/// <param name="priority"></param>
|
||||
/// <param name="subject"></param>
|
||||
/// <param name="body"></param>
|
||||
/// <returns></returns>
|
||||
public static bool SendIpBindingMailMessage(AppSettings settings, List<string> to, List<string> cc, List<string> bcc, List<string> attachments, List<string> embeddedImages, bool isBodyHtml, MailPriority priority, string subject, string body)
|
||||
{
|
||||
try
|
||||
{
|
||||
#region Read config info
|
||||
|
||||
if (string.IsNullOrEmpty(settings.EmailHost))
|
||||
throw new Exception("No Setting has been found for Host address [EmailHost].");
|
||||
|
||||
if (settings.EmailPort <= 0)
|
||||
throw new Exception("No Setting has been found for Port number [EmailPort].");
|
||||
|
||||
if (string.IsNullOrEmpty(settings.EmailSenderIp))
|
||||
throw new Exception("No Setting has been found for Email Sender ip [EmailSenderIp].");
|
||||
|
||||
if (string.IsNullOrEmpty(settings.EmailSenderId))
|
||||
throw new Exception("No Setting has been found for Sender email address [EmailSenderId].");
|
||||
|
||||
#endregion
|
||||
|
||||
_senderIp = IPAddress.Parse(settings.EmailSenderIp);
|
||||
using MailMessage message = new() { Subject = subject, Body = body, IsBodyHtml = isBodyHtml, Priority = priority };
|
||||
if (!string.IsNullOrEmpty(settings.EmailSenderId) && !string.IsNullOrEmpty(settings.EmailSenderName))
|
||||
{
|
||||
message.From = new MailAddress(settings.EmailSenderId, settings.EmailSenderName);
|
||||
message.Sender = new MailAddress(settings.EmailSenderId, settings.EmailSenderName);
|
||||
}
|
||||
else
|
||||
{
|
||||
message.From = new MailAddress(settings.EmailSenderId);
|
||||
message.Sender = new MailAddress(settings.EmailSenderId);
|
||||
}
|
||||
|
||||
//Add recipient to
|
||||
foreach (string email in to)
|
||||
message.To.Add(email);
|
||||
|
||||
//Add recipient cc
|
||||
if (cc != null && cc.Count > 0)
|
||||
{
|
||||
foreach (string email in cc)
|
||||
message.CC.Add(email);
|
||||
}
|
||||
|
||||
//Add recipient bcc
|
||||
if (bcc != null && bcc.Count > 0)
|
||||
{
|
||||
foreach (string email in bcc)
|
||||
message.Bcc.Add(email);
|
||||
}
|
||||
|
||||
//Add Attachment(s)
|
||||
if (attachments != null && attachments.Count > 0)
|
||||
{
|
||||
foreach (string attachment in attachments)
|
||||
{
|
||||
Attachment item = new(attachment);
|
||||
message.Attachments.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
AlternateView altView;
|
||||
if (message.IsBodyHtml)
|
||||
{
|
||||
altView = AlternateView.CreateAlternateViewFromString(content: body, contentEncoding: null, mediaType: "text/html");
|
||||
if (embeddedImages != null && embeddedImages.Count > 0)
|
||||
{
|
||||
foreach (string embeddedImage in embeddedImages)
|
||||
{
|
||||
string contentId = embeddedImage;
|
||||
int indexOf = embeddedImage.IndexOf('.');
|
||||
if (indexOf > 0)
|
||||
contentId = contentId[..indexOf];
|
||||
LinkedResource lr = new(embeddedImage)
|
||||
{
|
||||
ContentId = contentId
|
||||
};
|
||||
altView.LinkedResources.Add(lr);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
altView = AlternateView.CreateAlternateViewFromString(content: body, contentEncoding: null, mediaType: "text/plain");
|
||||
}
|
||||
message.AlternateViews.Add(item: altView);
|
||||
|
||||
//Finally send mail
|
||||
SmtpClient client = new() { Host = settings.EmailHost, Port = settings.EmailPort, EnableSsl = settings.EmailEnableSsl };
|
||||
client.Send(message);
|
||||
client.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(BindIPEndPointCallback);
|
||||
client.ServicePoint.ConnectionLeaseTimeout = 0;
|
||||
client.Send(message);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
try
|
||||
{
|
||||
string text = e.Message;
|
||||
Exception ie = e.InnerException;
|
||||
while (ie != null)
|
||||
{
|
||||
text += ", " + ie.Message;
|
||||
ie = ie.InnerException;
|
||||
}
|
||||
|
||||
string path = settings.EmailErrorLogPath;
|
||||
if (string.IsNullOrEmpty(path))
|
||||
path = @"C:\Mail.Web\MailError";
|
||||
|
||||
string logFileSpec = Path.Combine(path, string.Format("{0}log.txt", DateTime.Today.ToString("yyMMdd")));
|
||||
if (!Directory.Exists(path))
|
||||
Directory.CreateDirectory(path);
|
||||
|
||||
if (File.Exists(logFileSpec))
|
||||
{
|
||||
using StreamWriter sw = File.AppendText(logFileSpec);
|
||||
string log = Environment.NewLine + new string('*', 40) + Environment.NewLine;
|
||||
log += string.Format(" TimeStamp: {0} {1}{2}", DateTime.Today.ToShortDateString(), DateTime.Now.ToLongTimeString(), Environment.NewLine);
|
||||
log += new string('*', 40);
|
||||
sw.WriteLine(log);
|
||||
sw.WriteLine(text);
|
||||
sw.Flush();
|
||||
sw.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
using StreamWriter sw = File.CreateText(logFileSpec);
|
||||
string log = new string('*', 40) + Environment.NewLine;
|
||||
log += string.Format(" TimeStamp: {0} {1}{2}", DateTime.Today.ToShortDateString(), DateTime.Now.ToLongTimeString(), Environment.NewLine);
|
||||
log += new string('*', 40);
|
||||
sw.WriteLine(log);
|
||||
sw.WriteLine(text);
|
||||
sw.Flush();
|
||||
sw.Close();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
//do nothing
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="servicePoint"></param>
|
||||
/// <param name="remoteEndPoint"></param>
|
||||
/// <param name="retryCount"></param>
|
||||
/// <returns></returns>
|
||||
private static IPEndPoint BindIPEndPointCallback(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount)
|
||||
{
|
||||
return new IPEndPoint(_senderIp, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Global
|
||||
{
|
||||
public class MenuSettings
|
||||
{
|
||||
public List<MenuSettingItem> MenuItems { get; set; } = [];
|
||||
|
||||
public MenuSettingItem GetItem(string key, string value)
|
||||
{
|
||||
if (MenuItems?.Count <= 0 || string.IsNullOrEmpty(key))
|
||||
return new MenuSettingItem { Key = key, Value = value };
|
||||
|
||||
MenuSettingItem item = MenuItems.FirstOrDefault(x => x.Key == key);
|
||||
item ??= new MenuSettingItem { Key = key, Value = value };
|
||||
|
||||
return item;
|
||||
}
|
||||
}
|
||||
|
||||
public class MenuSettingItem
|
||||
{
|
||||
public string Key { get; set; }
|
||||
public string Value { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Global
|
||||
{
|
||||
public static class SettingsExtensions
|
||||
{
|
||||
public static bool IsValid<T>(this T data)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(data);
|
||||
|
||||
var validationResult = new List<ValidationResult>();
|
||||
var result = Validator.TryValidateObject(data, new ValidationContext(data), validationResult, false);
|
||||
|
||||
if (!result)
|
||||
{
|
||||
foreach (var item in validationResult)
|
||||
{
|
||||
Debug.WriteLine($"ERROR::{item.MemberNames}:{item.ErrorMessage}");
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||
using Microsoft.OpenApi;
|
||||
using Swashbuckle.AspNetCore.SwaggerGen;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Nodes;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Global
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents the Swagger/Swashbuckle operation filter used to document the implicit API version parameter.
|
||||
/// </summary>
|
||||
/// <remarks>This <see cref="IOperationFilter"/> is only required due to bugs in the <see cref="SwaggerGenerator"/>.
|
||||
/// Once they are fixed and published, this class can be removed.</remarks>
|
||||
public class SwaggerDefaultValues : IOperationFilter
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public void Apply(OpenApiOperation operation, OperationFilterContext context)
|
||||
{
|
||||
var apiDescription = context.ApiDescription;
|
||||
|
||||
// REF: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1752#issue-663991077
|
||||
foreach (var responseType in context.ApiDescription.SupportedResponseTypes)
|
||||
{
|
||||
// REF: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/blob/b7cf75e7905050305b115dd96640ddd6e74c7ac9/src/Swashbuckle.AspNetCore.SwaggerGen/SwaggerGenerator/SwaggerGenerator.cs#L383-L387
|
||||
var responseKey = responseType.IsDefaultResponse ? "default" : responseType.StatusCode.ToString();
|
||||
var response = operation.Responses[responseKey];
|
||||
|
||||
foreach (var contentType in response.Content.Keys)
|
||||
{
|
||||
if (!responseType.ApiResponseFormats.Any(x => x.MediaType == contentType))
|
||||
{
|
||||
response.Content.Remove(contentType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (operation.Parameters == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (OpenApiParameter parameter in operation.Parameters.OfType<OpenApiParameter>())
|
||||
{
|
||||
var description = apiDescription.ParameterDescriptions.First(p => p.Name == parameter.Name);
|
||||
parameter.Description ??= description.ModelMetadata?.Description;
|
||||
|
||||
if (parameter.Schema is OpenApiSchema openApiSchema)
|
||||
{
|
||||
if (parameter.Schema.Default == null && description.DefaultValue != null &&
|
||||
description.DefaultValue is not DBNull && description.ModelMetadata is ModelMetadata modelMetadata)
|
||||
{
|
||||
var json = JsonSerializer.Serialize(description.DefaultValue, modelMetadata.ModelType);
|
||||
var element = JsonSerializer.Deserialize<JsonElement>(json);
|
||||
openApiSchema.Default = JsonValue.Create(element);
|
||||
}
|
||||
|
||||
parameter.Required |= description.IsRequired;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Objects
|
||||
{
|
||||
public class FoundKeywordItem
|
||||
{
|
||||
public string Keyword { get; set; }
|
||||
public int Occurrences { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Objects.Setups
|
||||
{
|
||||
public class AuthModule
|
||||
{
|
||||
public string ModuleName { get; set; }
|
||||
public string ModuleId { get; set; }
|
||||
public int PendingItems { get; set; }
|
||||
}
|
||||
|
||||
public class PendingAuthModule : AuthModule
|
||||
{
|
||||
public bool BasicData { get; set; }
|
||||
public string ModuleHref { get; set; }
|
||||
public int PendingAuthItems { get; set; }
|
||||
public int TotalPending => PendingAuthItems + PendingItems;
|
||||
}
|
||||
|
||||
public class DynamicColumn
|
||||
{
|
||||
public string Field { get; set; }
|
||||
public string Title { get; set; }
|
||||
public int? Width { get; set; }
|
||||
}
|
||||
|
||||
public class DynamicColumnExt : DynamicColumn
|
||||
{
|
||||
public string Alignment { get; set; }
|
||||
public string Format { get; set; }
|
||||
public bool Hidden { get; set; }
|
||||
public int? FontWeight { get; set; }
|
||||
public bool MakeFooter { get; set; }
|
||||
public string FooterFormat { get; set; }
|
||||
public int? FooterType { get; set; }
|
||||
}
|
||||
|
||||
public class GraphSeriesItem
|
||||
{
|
||||
public string Type { get; set; }
|
||||
public bool Visible { get; set; }
|
||||
public string Name { get; set; }
|
||||
public List<decimal> Data { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models.Global;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Objects.Setups
|
||||
{
|
||||
public class BaseObject
|
||||
{
|
||||
public string Code { get; set; }
|
||||
public string Name { get; set; }
|
||||
public EnumStatus Status { get; set; }
|
||||
public short SeqId { get; set; }
|
||||
|
||||
public string StatusDetail => Status.GetDescription();
|
||||
public string LastStatus => Status.GetLastDescription();
|
||||
}
|
||||
|
||||
public class LookupData
|
||||
{
|
||||
public int ItemId { get; set; }
|
||||
public string ItemValue { get; set; }
|
||||
}
|
||||
|
||||
public class LookupDataExt : LookupData
|
||||
{
|
||||
public int LookupId { get; set; }
|
||||
public short ItemType { get; set; }
|
||||
public string ItemCode { get; set; }
|
||||
public int SeqId { get; set; }
|
||||
}
|
||||
|
||||
public class ProdByInvType
|
||||
{
|
||||
public int ProductId { get; set; }
|
||||
public string ProductCode { get; set; }
|
||||
public string ProductName { get; set; }
|
||||
public int InventoryTypeId { get; set; }
|
||||
public string InventoryType { get; set; }
|
||||
public string AstOrGLCode { get; set; }
|
||||
public string ExpOrDepGLCode { get; set; }
|
||||
public decimal Price { get; set; }
|
||||
public decimal VatRate { get; set; }
|
||||
public decimal AitRate { get; set; }
|
||||
}
|
||||
public class ProdByInvTypeExt : ProdByInvType
|
||||
{
|
||||
public int StoreId { get; set; }
|
||||
public decimal Stock { get; set; }
|
||||
}
|
||||
|
||||
public class SalesTxnType
|
||||
{
|
||||
public int TranTypeId { get; set; }
|
||||
public string Description { get; set; }
|
||||
public string Side { get; set; }
|
||||
}
|
||||
|
||||
public class HierarchyBase
|
||||
{
|
||||
public int HierarchyId { get; set; }
|
||||
public string Code { get; set; }
|
||||
public string Name { get; set; }
|
||||
public int LevelId { get; set; }
|
||||
public EnumStatus Status { get; set; }
|
||||
public int SeqId { get; set; }
|
||||
public int? ParentId { get; set; }
|
||||
|
||||
public string StatusDetail => Status.GetDescription();
|
||||
public string LastStatus => Status.GetLastDescription();
|
||||
|
||||
public List<HierarchyBase> Children { get; set; } = [];
|
||||
public bool HasChildren => Children != null && Children.Count > 0;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="parent"></param>
|
||||
/// <param name="data"></param>
|
||||
/// <exception cref="InvalidOperationException"></exception>
|
||||
public static void BuildHierarchy<T>(T parent, IEnumerable<T> data)
|
||||
where T : HierarchyBase
|
||||
{
|
||||
try
|
||||
{
|
||||
IEnumerable<T> children = data.Where(x => x.ParentId.HasValue && x.ParentId.Value == parent.HierarchyId);
|
||||
parent.Children.AddRange(children);
|
||||
foreach (T child in parent.Children.Cast<T>())
|
||||
{
|
||||
BuildHierarchy(parent: child, data: data);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Objects.Setups
|
||||
{
|
||||
|
||||
public class MarketHierarchyBasic : HierarchyBase
|
||||
{
|
||||
public string LevelName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Do not remove following properties, uses in UI
|
||||
/// </summary>
|
||||
public bool Selected { get; set; }
|
||||
}
|
||||
|
||||
public class MarketHierarchy : MarketHierarchyBasic
|
||||
{
|
||||
public string Code1 { get; set; }
|
||||
public string ParentName { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Objects.Setups
|
||||
{
|
||||
public class ProductHierarchyBasic : HierarchyBase
|
||||
{
|
||||
public string LevelName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Do not remove following properties, uses in UI
|
||||
/// </summary>
|
||||
public bool Selected { get; set; }
|
||||
}
|
||||
|
||||
public class ProductHierarchy : ProductHierarchyBasic
|
||||
{
|
||||
public string Code1 { get; set; }
|
||||
public string ParentName { get; set; }
|
||||
}
|
||||
}
|
||||
139
Api/OnlineSalesAutoCrop.CoreAPI.Models/Objects/Systems/Groups.cs
Normal file
139
Api/OnlineSalesAutoCrop.CoreAPI.Models/Objects/Systems/Groups.cs
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models.Objects.Setups;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Objects.Systems
|
||||
{
|
||||
public class PermissionBase
|
||||
{
|
||||
public string ModuleId { get; set; }
|
||||
public bool AllowSelect { get; set; }
|
||||
public bool AllowAdd { get; set; }
|
||||
public bool AllowEdit { get; set; }
|
||||
public bool AllowDelete { get; set; }
|
||||
}
|
||||
|
||||
public class GroupPermission : PermissionBase
|
||||
{
|
||||
public GroupPermission()
|
||||
{
|
||||
Children = [];
|
||||
}
|
||||
public string ModuleName { get; set; }
|
||||
public string Icon { get; set; }
|
||||
public string RouteUrl { get; set; }
|
||||
public string ParentId { get; set; }
|
||||
public bool Visible { get; set; }
|
||||
public List<GroupPermission> Children { get; set; }
|
||||
public bool HasChildren => Children != null && Children.Count > 0;
|
||||
public MenuItem Copy()
|
||||
{
|
||||
return new MenuItem { ModuleId = ModuleId, Label = ModuleName, Icon = Icon, RouterLink = RouteUrl };
|
||||
}
|
||||
}
|
||||
|
||||
public class Menu : List<GroupPermission>
|
||||
{
|
||||
private readonly Stack<string> _keyStack;
|
||||
public Menu()
|
||||
{
|
||||
Clear();
|
||||
_keyStack = new Stack<string>();
|
||||
}
|
||||
|
||||
private string GetCurrentParent()
|
||||
{
|
||||
if (_keyStack.Count > 0)
|
||||
return _keyStack.Peek();
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
private void PushParent(string key)
|
||||
{
|
||||
_keyStack.Push(key);
|
||||
}
|
||||
|
||||
private void PopParent()
|
||||
{
|
||||
_keyStack.Pop();
|
||||
}
|
||||
|
||||
private GroupPermission GetItem(string moduleId)
|
||||
{
|
||||
return this.FirstOrDefault(gp => gp.ModuleId == moduleId);
|
||||
}
|
||||
|
||||
private bool Exists(string moduleId)
|
||||
{
|
||||
return GetItem(moduleId) != null;
|
||||
}
|
||||
|
||||
public void BeginGroup(string moduleId, string moduleName, string icon)
|
||||
{
|
||||
MenuItem(moduleId: moduleId, moduleName: moduleName, icon: icon, routeUrl: string.Empty, visible: true, allowSelect: false, allowAdd: false, allowEdit: false, allowDelete: false);
|
||||
PushParent(moduleId);
|
||||
}
|
||||
|
||||
public void MenuItem(string moduleId, string moduleName, bool visible)
|
||||
{
|
||||
MenuItem(moduleId: moduleId, moduleName: moduleName, icon: string.Empty, routeUrl: string.Empty, visible: visible, allowSelect: false, allowAdd: false, allowEdit: false, allowDelete: false);
|
||||
}
|
||||
|
||||
public void MenuItem(string moduleId, string moduleName, string icon, string routeUrl, bool visible)
|
||||
{
|
||||
MenuItem(moduleId: moduleId, moduleName: moduleName, icon: icon, routeUrl: routeUrl, visible: visible, allowSelect: false, allowAdd: false, allowEdit: false, allowDelete: false);
|
||||
}
|
||||
|
||||
public void MenuItem(string moduleId, string moduleName, string icon, string routeUrl, bool visible, bool allowSelect, bool allowAdd, bool allowEdit, bool allowDelete)
|
||||
{
|
||||
if (!Exists(moduleId))
|
||||
{
|
||||
string parentKey = this.GetCurrentParent();
|
||||
if (!string.IsNullOrEmpty(parentKey))
|
||||
{
|
||||
GroupPermission parent = GetItem(parentKey);
|
||||
if (parent != null && !parent.Visible)
|
||||
visible = false;
|
||||
}
|
||||
|
||||
GroupPermission item = new()
|
||||
{
|
||||
Icon = icon,
|
||||
ModuleId = moduleId,
|
||||
ModuleName = moduleName,
|
||||
RouteUrl = routeUrl,
|
||||
ParentId = parentKey,
|
||||
Visible = visible,
|
||||
AllowSelect = allowSelect,
|
||||
AllowAdd = allowAdd,
|
||||
AllowEdit = allowEdit,
|
||||
AllowDelete = allowDelete,
|
||||
};
|
||||
|
||||
Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
public void EndGroup()
|
||||
{
|
||||
PopParent();
|
||||
}
|
||||
}
|
||||
|
||||
public class MenuItem
|
||||
{
|
||||
public string ModuleId { get; set; }
|
||||
public string Label { get; set; }
|
||||
public string RouterLink { get; set; }
|
||||
public string Icon { get; set; }
|
||||
public List<MenuItem> Items { get; set; }
|
||||
}
|
||||
|
||||
public class GroupBase : BaseObject
|
||||
{
|
||||
public int GroupId { get; set; }
|
||||
public bool ViewToAll { get; set; }
|
||||
public string ViewToAllDescription => ViewToAll ? "Yes" : "No";
|
||||
}
|
||||
}
|
||||
129
Api/OnlineSalesAutoCrop.CoreAPI.Models/Objects/Systems/User.cs
Normal file
129
Api/OnlineSalesAutoCrop.CoreAPI.Models/Objects/Systems/User.cs
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models.Global;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Objects.Systems
|
||||
{
|
||||
public class User
|
||||
{
|
||||
public const int SuperUser_Id = -9;
|
||||
public const string SuperUser_LoginId = "superuser";
|
||||
|
||||
public int Id { get; set; }
|
||||
public string LoginId { get; set; }
|
||||
public int LogId { get; set; }
|
||||
public DateTime? LogoutTime { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public EnumStatus Status { get; set; }
|
||||
public EnumAccessStatus AccessStatus { get; set; }
|
||||
public bool NeverExpires { get; set; }
|
||||
public string LastPasswords { get; set; }
|
||||
public DateTime? LastPassChgDate { get; set; }
|
||||
public DateTime? ExpireDate { get; set; }
|
||||
public DateTime? NextLoginTime { get; set; }
|
||||
public DateTime SystemDate { get; set; }
|
||||
public bool DbOnStartup { get; set; }
|
||||
public bool ViewOwnTaskOnly { get; set; }
|
||||
public int? EmployeeId { get; set; }
|
||||
public string EmployeeCode { get; set; }
|
||||
public EnumLoginStatus LoginStatus { get; set; }
|
||||
public EnumAuthenticationMethod AuthMethod { get; set; }
|
||||
public bool AuthRequiredAtLogin { get; set; }
|
||||
public List<string> ModuleIds { get; set; }
|
||||
public string EmailAddress { get; set; }
|
||||
public string AuthKey { get; set; }
|
||||
public string AuthValue { get; set; }
|
||||
public string MobileNo { get; set; }
|
||||
public string UnsuccessfulMsg { get; set; }
|
||||
public string ThemeName { get; set; }
|
||||
public string SchemeName { get; set; }
|
||||
public string MenuLayout { get; set; }
|
||||
public bool IsLocked { get; set; }
|
||||
public DateTime MinReportDate { get; set; }
|
||||
public string AppId { get; set; }
|
||||
public bool DisallowMultiLogin { get; set; }
|
||||
public bool BatchEnabled { get; set; }
|
||||
public int BmProcessId { get; set; }
|
||||
public int PrProcessId { get; set; }
|
||||
public int IdleTime { get; set; }
|
||||
public int PingTime { get; set; }
|
||||
public int TimeoutTime { get; set; }
|
||||
public int NotificationCount { get; set; }
|
||||
public List<int> TeamSpaceIds { get; set; }
|
||||
}
|
||||
|
||||
public class LoginHistory
|
||||
{
|
||||
public int SlNo { get; set; }
|
||||
public string LoginIp { get; set; }
|
||||
public DateTime LoginTime { get; set; }
|
||||
public string LogoutIp { get; set; }
|
||||
public DateTime? LogoutTime { get; set; }
|
||||
}
|
||||
|
||||
public class AccessLog
|
||||
{
|
||||
public string LoginId { get; set; }
|
||||
public DateTime LoginTime { get; set; }
|
||||
public string LoginIp { get; set; }
|
||||
public DateTime? LogoutTime { get; set; }
|
||||
public string LogoutIp { get; set; }
|
||||
public string LoginStatus { get; set; }
|
||||
}
|
||||
|
||||
public class DashboardItem
|
||||
{
|
||||
public string DivStyleCss { get; set; }
|
||||
public string Title { get; set; }
|
||||
public string TitleCss { get; set; }
|
||||
public string Value { get; set; }
|
||||
public string ValueCss { get; set; }
|
||||
public int Id { get; set; }
|
||||
public string Href { get; set; }
|
||||
}
|
||||
|
||||
public class Dashboard2Item
|
||||
{
|
||||
public string Title { get; set; }
|
||||
public decimal Value { get; set; }
|
||||
public string TitleStyle { get; set; }
|
||||
public string ValueStyle { get; set; }
|
||||
public string ValueFormat { get; set; }
|
||||
}
|
||||
|
||||
public class Dashboard2Data
|
||||
{
|
||||
public string GroupName { get; set; }
|
||||
public List<Dashboard2Item> Items { get; set; }
|
||||
}
|
||||
|
||||
public class UserForceLogout
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
public string LoginId { get; set; }
|
||||
public string UserName { get; set; }
|
||||
}
|
||||
|
||||
public class UserSearch : UserForceLogout
|
||||
{
|
||||
public string Designation { get; set; }
|
||||
public string MobileNo { get; set; }
|
||||
public string EmailAddress { get; set; }
|
||||
public EnumStatus Status { get; set; }
|
||||
public short SeqId { get; set; }
|
||||
public bool CanUseAttendanceSystem { get; set; }
|
||||
public bool IsLocked { get; set; }
|
||||
public string AuthId { get; set; }
|
||||
|
||||
public string StatusDetail => Status.GetDescription();
|
||||
}
|
||||
|
||||
public class UserBasicInfo
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
public string LoginId { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public string Designation { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
275
Api/OnlineSalesAutoCrop.CoreAPI.Models/Objects/TOtpService.cs
Normal file
275
Api/OnlineSalesAutoCrop.CoreAPI.Models/Objects/TOtpService.cs
Normal file
|
|
@ -0,0 +1,275 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Objects
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static class Base32Encoding
|
||||
{
|
||||
/// <summary>
|
||||
/// The different characters allowed in Base32 encoding.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This is a 32-character subset of the twenty-six letters A–Z and six digits 2–7.
|
||||
/// </remarks>
|
||||
private const string Base32AllowedCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
|
||||
|
||||
/// <summary>
|
||||
/// Converts a byte array into a Base32 string.
|
||||
/// </summary>
|
||||
/// <param name="input">The string to convert to Base32.</param>
|
||||
/// <param name="addPadding">Whether or not to add RFC3548 '='-padding to the string.</param>
|
||||
/// <returns>A Base32 string.</returns>
|
||||
/// <remarks>
|
||||
/// https://tools.ietf.org/html/rfc3548#section-2.2 indicates padding MUST be added unless the reference to the RFC tells us otherwise.
|
||||
/// https://github.com/google/google-authenticator/wiki/Key-Uri-Format indicates that padding SHOULD be omitted.
|
||||
/// To meet both requirements, you can omit padding when required.
|
||||
/// </remarks>
|
||||
public static string ToBase32String(this byte[] input, bool addPadding)
|
||||
{
|
||||
if (input == null || input.Length == 0)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
var bits = input.Select(b => Convert.ToString(b, 2).PadLeft(8, '0')).Aggregate((a, b) => a + b).PadRight((int)(Math.Ceiling((input.Length * 8) / 5d) * 5), '0');
|
||||
var result = Enumerable.Range(0, bits.Length / 5).Select(i => Base32AllowedCharacters.Substring(Convert.ToInt32(bits.Substring(i * 5, 5), 2), 1)).Aggregate((a, b) => a + b);
|
||||
if (addPadding)
|
||||
{
|
||||
result = result.PadRight((int)(Math.Ceiling(result.Length / 8d) * 8), '=');
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <param name="addPadding"></param>
|
||||
/// <returns></returns>
|
||||
public static string EncodeAsBase32String(this string input, bool addPadding)
|
||||
{
|
||||
if (string.IsNullOrEmpty(input))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
var bytes = Encoding.UTF8.GetBytes(input);
|
||||
var result = bytes.ToBase32String(addPadding);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
public static string DecodeFromBase32String(this string input)
|
||||
{
|
||||
if (string.IsNullOrEmpty(input))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
var bytes = input.ToByteArray();
|
||||
var result = Encoding.UTF8.GetString(bytes);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts a Base32 string into the corresponding byte array, using 5 bits per character.
|
||||
/// </summary>
|
||||
/// <param name="input">The Base32 String</param>
|
||||
/// <returns>A byte array containing the properly encoded bytes.</returns>
|
||||
public static byte[] ToByteArray(this string input)
|
||||
{
|
||||
if (string.IsNullOrEmpty(input))
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
var bits = input.TrimEnd('=').ToUpper().ToCharArray().Select(c => Convert.ToString(Base32AllowedCharacters.IndexOf(c), 2).PadLeft(5, '0')).Aggregate((a, b) => a + b);
|
||||
var result = Enumerable.Range(0, bits.Length / 8).Select(i => Convert.ToByte(bits.Substring(i * 8, 8), 2)).ToArray();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class TOtpService
|
||||
{
|
||||
private TimeSpan DefaultClockDriftTolerance { get; set; }
|
||||
private readonly static DateTime _epoch = new(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public TOtpService()
|
||||
{
|
||||
DefaultClockDriftTolerance = TimeSpan.FromMinutes(1);
|
||||
}
|
||||
|
||||
private static string GeneratePINAtInterval(string secretKey, long counter, int digits)
|
||||
{
|
||||
return GenerateHashedCode(secretKey, counter, digits);
|
||||
}
|
||||
|
||||
private static string GenerateHashedCode(string secretKey, long iterationNumber, int digits)
|
||||
{
|
||||
byte[] key = Base32Encoding.ToByteArray(secretKey.ToUpper());
|
||||
return GenerateHashedCode(key, iterationNumber, digits);
|
||||
}
|
||||
|
||||
private static string GenerateHashedCode(byte[] key, long iterationNumber, int digits)
|
||||
{
|
||||
byte[] counter = BitConverter.GetBytes(iterationNumber);
|
||||
if (BitConverter.IsLittleEndian)
|
||||
Array.Reverse(counter);
|
||||
|
||||
using HMACSHA1 hmac = new(key);
|
||||
byte[] hash = hmac.ComputeHash(counter);
|
||||
int offset = hash[^1] & 0xf;
|
||||
|
||||
//Convert the 4 bytes into an integer, ignoring the sign.
|
||||
int binary = ((hash[offset] & 0x7f) << 24) | (hash[offset + 1] << 16) | (hash[offset + 2] << 8) | (hash[offset + 3]);
|
||||
int password = binary % (int)Math.Pow(10, digits);
|
||||
return password.ToString(new string('0', digits));
|
||||
}
|
||||
|
||||
private static long GetCurrentCounter(DateTime now)
|
||||
{
|
||||
return GetCurrentCounter(now, _epoch, 30);
|
||||
}
|
||||
|
||||
private static long GetCurrentCounter(DateTime now, DateTime epoch, int timeStep)
|
||||
{
|
||||
return (long)(now - epoch).TotalSeconds / timeStep;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="secretKey"></param>
|
||||
/// <param name="otpCode"></param>
|
||||
/// <returns></returns>
|
||||
public bool ValidateTwoFactorPIN(string secretKey, string otpCode)
|
||||
{
|
||||
return ValidateTwoFactorPIN(secretKey, otpCode, DateTime.UtcNow, DefaultClockDriftTolerance);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="secretKey"></param>
|
||||
/// <param name="otpCode"></param>
|
||||
/// <param name="now"></param>
|
||||
/// <returns></returns>
|
||||
public bool ValidateTwoFactorPIN(string secretKey, string otpCode, DateTime now)
|
||||
{
|
||||
return ValidateTwoFactorPIN(secretKey, otpCode, now, DefaultClockDriftTolerance);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="secretKey"></param>
|
||||
/// <param name="otpCode"></param>
|
||||
/// <param name="timeTolerance"></param>
|
||||
/// <returns></returns>
|
||||
public static bool ValidateTwoFactorPIN(string secretKey, string otpCode, TimeSpan timeTolerance)
|
||||
{
|
||||
return ValidateTwoFactorPIN(secretKey, otpCode, DateTime.UtcNow, timeTolerance);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="secretKey"></param>
|
||||
/// <param name="otpCode"></param>
|
||||
/// <param name="now"></param>
|
||||
/// <param name="timeTolerance"></param>
|
||||
/// <returns></returns>
|
||||
public static bool ValidateTwoFactorPIN(string secretKey, string otpCode, DateTime now, TimeSpan timeTolerance)
|
||||
{
|
||||
var codes = GetCurrentPINs(secretKey, now, timeTolerance);
|
||||
return codes.Any(c => c == otpCode);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="secretKey"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetCurrentPIN(string secretKey)
|
||||
{
|
||||
return GetCurrentPIN(secretKey, DateTime.UtcNow);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="secretKey"></param>
|
||||
/// <param name="now"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetCurrentPIN(string secretKey, DateTime now)
|
||||
{
|
||||
return GeneratePINAtInterval(secretKey, GetCurrentCounter(now, _epoch, 30), 6);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="secretKey"></param>
|
||||
/// <returns></returns>
|
||||
public string[] GetCurrentPINs(string secretKey)
|
||||
{
|
||||
return GetCurrentPINs(secretKey, DateTime.UtcNow, DefaultClockDriftTolerance);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="secretKey"></param>
|
||||
/// <param name="now"></param>
|
||||
/// <returns></returns>
|
||||
public string[] GetCurrentPINs(string secretKey, DateTime now)
|
||||
{
|
||||
return GetCurrentPINs(secretKey, now, DefaultClockDriftTolerance);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="secretKey"></param>
|
||||
/// <param name="now"></param>
|
||||
/// <param name="timeTolerance"></param>
|
||||
/// <returns></returns>
|
||||
public static string[] GetCurrentPINs(string secretKey, DateTime now, TimeSpan timeTolerance)
|
||||
{
|
||||
int iterationOffset = 0;
|
||||
List<string> codes = [];
|
||||
long iterationCounter = GetCurrentCounter(now);
|
||||
|
||||
if (timeTolerance.TotalSeconds > 30)
|
||||
{
|
||||
iterationOffset = Convert.ToInt32(timeTolerance.TotalSeconds / 30.00);
|
||||
}
|
||||
|
||||
long iterationStart = iterationCounter - iterationOffset;
|
||||
long iterationEnd = iterationCounter + iterationOffset;
|
||||
|
||||
for (long counter = iterationStart; counter <= iterationEnd; counter++)
|
||||
{
|
||||
codes.Add(GeneratePINAtInterval(secretKey, counter, 6));
|
||||
}
|
||||
|
||||
return [.. codes];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup Label="Globals">
|
||||
<SccProjectName></SccProjectName>
|
||||
<SccProvider></SccProvider>
|
||||
<SccAuxPath></SccAuxPath>
|
||||
<SccLocalPath></SccLocalPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Objects\obj\**" />
|
||||
<Compile Remove="Properties\**" />
|
||||
<EmbeddedResource Remove="Objects\obj\**" />
|
||||
<EmbeddedResource Remove="Properties\**" />
|
||||
<None Remove="Objects\obj\**" />
|
||||
<None Remove="Properties\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Requests\AgencyLimitRequest.cs" />
|
||||
<Compile Remove="Requests\AgencyRequest.cs" />
|
||||
<Compile Remove="Requests\BenefsForTTIssueRequest.cs" />
|
||||
<Compile Remove="Requests\CancelAuthoriseRequest.cs" />
|
||||
<Compile Remove="Requests\CancelRequest.cs" />
|
||||
<Compile Remove="Requests\ComplainRequest.cs" />
|
||||
<Compile Remove="Requests\ComplainSearchRequest.cs" />
|
||||
<Compile Remove="Requests\LogoutRequest.cs" />
|
||||
<Compile Remove="Requests\RemitterAuthRequest.cs" />
|
||||
<Compile Remove="Responses\AgencyLimitResponse .cs" />
|
||||
<Compile Remove="Responses\CancelAppliedResponse.cs" />
|
||||
<Compile Remove="Responses\ComplainResponse.cs" />
|
||||
<Compile Remove="Responses\ComplainTypeResponse.cs" />
|
||||
<Compile Remove="Responses\DashboardResponse.cs" />
|
||||
<Compile Remove="Responses\UserSearchResponse.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Remove="C:\Users\HP\.nuget\packages\dotnetcore.npoi\1.2.3\contentFiles\any\netstandard2.0\NOTICE.TXT" />
|
||||
<Content Remove="C:\Users\Russel\.nuget\packages\dotnetcore.npoi\1.2.3\contentFiles\any\netstandard2.0\NOTICE.TXT" />
|
||||
<Content Remove="C:\Users\SMRussel\.nuget\packages\dotnetcore.npoi\1.2.3\contentFiles\any\netstandard2.0\NOTICE.TXT" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="DocumentFormat.OpenXml" Version="3.5.1" />
|
||||
<PackageReference Include="Ease.NetCore" Version="2.1.4" />
|
||||
<PackageReference Include="ExcelDataReader" Version="3.8.0" />
|
||||
<PackageReference Include="ExcelDataReader.DataSet" Version="3.8.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="10.0.8" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="10.2.1" />
|
||||
<PackageReference Include="System.Data.SqlClient" Version="4.9.1" />
|
||||
<PackageReference Include="System.Drawing.Common" Version="10.0.8" />
|
||||
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.18.0" />
|
||||
<PackageReference Include="Twilio.AspNet.Core" Version="8.1.2" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Objects\Activities\" />
|
||||
<Folder Include="Requests\Activities\" />
|
||||
<Folder Include="Responses\Activities\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Requests
|
||||
{
|
||||
public class BaseRequest
|
||||
{
|
||||
[Required, NotNull, StringLength(20, MinimumLength = 1, ErrorMessage = "Code must be between 1 to 20 characters.")]
|
||||
public string Code { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(100, MinimumLength = 1, ErrorMessage = "Name must be between 1 to 100 characters.")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[Required, NotNull, Range(minimum: 1, maximum: 16, ErrorMessage = "Status must be between 1 and 16")]
|
||||
public EnumStatus Status { get; set; }
|
||||
|
||||
[Required, NotNull, Range(minimum: 0, maximum: 999999, ErrorMessage = "Seq Id must be between 0 and 999999")]
|
||||
public int SeqId { get; set; }
|
||||
}
|
||||
|
||||
public class NoContentRequest
|
||||
{
|
||||
public int NoParameter { get; set; }
|
||||
}
|
||||
|
||||
public class LoginRemarksRequest
|
||||
{
|
||||
public string AuthenticationId { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Requests.Setups
|
||||
{
|
||||
public class AuthSummaryRequest
|
||||
{
|
||||
public short Status { get; set; }
|
||||
}
|
||||
|
||||
public class AuthDetailRequest : AuthSummaryRequest
|
||||
{
|
||||
public string ModuleId { get; set; }
|
||||
}
|
||||
|
||||
public class AuthUpdateRequest : AuthDetailRequest
|
||||
{
|
||||
public string Remarks { get; set; }
|
||||
public List<int> Ids { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
using Microsoft.AspNetCore.Http;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Requests.Setups
|
||||
{
|
||||
public class FileViewRequest
|
||||
{
|
||||
[Required, NotNull]
|
||||
public string FileName { get; set; }
|
||||
}
|
||||
|
||||
public class FileUploadRequest : FileViewRequest
|
||||
{
|
||||
[Required, NotNull]
|
||||
public IFormFile FileData { get; set; }
|
||||
}
|
||||
|
||||
public class QRCodeUploadRequest : FileUploadRequest
|
||||
{
|
||||
[Required, NotNull]
|
||||
public string EmailAddress { get; set; }
|
||||
}
|
||||
|
||||
public class UploadDocumentRequest : FileUploadRequest
|
||||
{
|
||||
[Required, NotNull]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required, NotNull]
|
||||
public int DocumentOf { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models.Objects.Systems;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Requests.Systems
|
||||
{
|
||||
public class ByGroupIdRequest
|
||||
{
|
||||
public int GroupId { get; set; }
|
||||
}
|
||||
|
||||
public class GroupRequest : BaseRequest
|
||||
{
|
||||
public int GroupId { get; set; }
|
||||
public bool ViewToAll { get; set; }
|
||||
public List<PermissionBase> Permissions { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,166 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models.Objects.Setups;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Requests.Systems
|
||||
{
|
||||
public class ProdByInvTypeId
|
||||
{
|
||||
[Required, NotNull, Range(minimum: 1, maximum: 20, ConvertValueInInvariantCulture = true, ErrorMessage = "InventoryTypeId must be 1 to 20")]
|
||||
public int InventoryTypeId { get; set; }
|
||||
public string Criteria { get; set; }
|
||||
}
|
||||
|
||||
public class ProdByInvTypeIds
|
||||
{
|
||||
public bool MaterialOnly { get; set; }
|
||||
public List<int> InventoryTypeIds { get; set; }
|
||||
public string Criteria { get; set; }
|
||||
}
|
||||
|
||||
public class ProdStockByInvTypeIds : ProdByInvTypeIds
|
||||
{
|
||||
public int StoreId { get; set; }
|
||||
public int StockOf { get; set; }
|
||||
public bool HaveStockOnly { get; set; }
|
||||
}
|
||||
|
||||
public class SalesTxnTypeRequest
|
||||
{
|
||||
public int TranType { get; set; }
|
||||
public int TypeOfTran { get; set; }
|
||||
}
|
||||
|
||||
public class ProdByInvTypeIdAndCode
|
||||
{
|
||||
[Required, NotNull, Range(minimum: 1, maximum: 20, ConvertValueInInvariantCulture = true, ErrorMessage = "InventoryTypeId must be 1 to 20")]
|
||||
public int InventoryTypeId { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(20, MinimumLength = 4, ErrorMessage = "ProductCode must be between 4 to 20 characters.")]
|
||||
public string ProductCode { get; set; }
|
||||
}
|
||||
|
||||
public class LookupDataBaseRequest
|
||||
{
|
||||
public EnumLookupType LookupType { get; set; }
|
||||
}
|
||||
|
||||
public class LookupDataRequest : LookupDataBaseRequest
|
||||
{
|
||||
public int ExcludeItemId { get; set; } = -1;
|
||||
}
|
||||
|
||||
public class LookupDataEntryRequest
|
||||
{
|
||||
public List<LookupDataExt> Items { get; set; }
|
||||
}
|
||||
|
||||
public class LookupDataByIdRequest
|
||||
{
|
||||
[Range(minimum: 1, maximum: int.MaxValue, ConvertValueInInvariantCulture = true, ErrorMessage = "Lookup Id is required")]
|
||||
public int LookupId { get; set; }
|
||||
}
|
||||
|
||||
public class LabelSettingByIdRequest
|
||||
{
|
||||
[Range(minimum: 1, maximum: int.MaxValue, ConvertValueInInvariantCulture = true, ErrorMessage = "Setting Id is required")]
|
||||
public int SettingId { get; set; }
|
||||
}
|
||||
|
||||
public class LabelSettingRequest
|
||||
{
|
||||
public int SettingId { get; set; }
|
||||
public string Label01 { get; set; }
|
||||
public int Label01Req { get; set; }
|
||||
public string Label01RegExp { get; set; }
|
||||
public string Label02 { get; set; }
|
||||
public int Label02Req { get; set; }
|
||||
public string Label02RegExp { get; set; }
|
||||
public string Label03 { get; set; }
|
||||
public int Label03Req { get; set; }
|
||||
public string Label03RegExp { get; set; }
|
||||
public string Label04 { get; set; }
|
||||
public int Label04Req { get; set; }
|
||||
public string Label04RegExp { get; set; }
|
||||
public string Label05 { get; set; }
|
||||
public int Label05Req { get; set; }
|
||||
public string Label05RegExp { get; set; }
|
||||
public string Label06 { get; set; }
|
||||
public int Label06Req { get; set; }
|
||||
public string Label06RegExp { get; set; }
|
||||
public string Label07 { get; set; }
|
||||
public int Label07Req { get; set; }
|
||||
public string Label07RegExp { get; set; }
|
||||
public string Label08 { get; set; }
|
||||
public int Label08Req { get; set; }
|
||||
public string Label08RegExp { get; set; }
|
||||
public string Label09 { get; set; }
|
||||
public int Label09Req { get; set; }
|
||||
public string Label09RegExp { get; set; }
|
||||
public string Label10 { get; set; }
|
||||
public int Label10Req { get; set; }
|
||||
public string Label10RegExp { get; set; }
|
||||
public string Label11 { get; set; }
|
||||
public int Label11Req { get; set; }
|
||||
public string Label11RegExp { get; set; }
|
||||
public string Label12 { get; set; }
|
||||
public int Label12Req { get; set; }
|
||||
public string Label12RegExp { get; set; }
|
||||
public string Label13 { get; set; }
|
||||
public int Label13Req { get; set; }
|
||||
public string Label13RegExp { get; set; }
|
||||
public string Label14 { get; set; }
|
||||
public int Label14Req { get; set; }
|
||||
public string Label14RegExp { get; set; }
|
||||
public string Label15 { get; set; }
|
||||
public int Label15Req { get; set; }
|
||||
public string Label15RegExp { get; set; }
|
||||
public string Label16 { get; set; }
|
||||
public int Label16Req { get; set; }
|
||||
public string Label16RegExp { get; set; }
|
||||
public string Label17 { get; set; }
|
||||
public int Label17Req { get; set; }
|
||||
public string Label17RegExp { get; set; }
|
||||
public string Label18 { get; set; }
|
||||
public int Label18Req { get; set; }
|
||||
public string Label18RegExp { get; set; }
|
||||
public string Label19 { get; set; }
|
||||
public int Label19Req { get; set; }
|
||||
public string Label19RegExp { get; set; }
|
||||
public string Label20 { get; set; }
|
||||
public int Label20Req { get; set; }
|
||||
public string Label20RegExp { get; set; }
|
||||
public string Label21 { get; set; }
|
||||
public int Label21Req { get; set; }
|
||||
public string Label21RegExp { get; set; }
|
||||
public string Label22 { get; set; }
|
||||
public int Label22Req { get; set; }
|
||||
public string Label22RegExp { get; set; }
|
||||
public string Label23 { get; set; }
|
||||
public int Label23Req { get; set; }
|
||||
public string Label23RegExp { get; set; }
|
||||
public string Label24 { get; set; }
|
||||
public int Label24Req { get; set; }
|
||||
public string Label24RegExp { get; set; }
|
||||
public string Label25 { get; set; }
|
||||
public int Label25Req { get; set; }
|
||||
public string Label25RegExp { get; set; }
|
||||
public string Label26 { get; set; }
|
||||
public int Label26Req { get; set; }
|
||||
public string Label26RegExp { get; set; }
|
||||
public string Label27 { get; set; }
|
||||
public int Label27Req { get; set; }
|
||||
public string Label27RegExp { get; set; }
|
||||
public string Label28 { get; set; }
|
||||
public int Label28Req { get; set; }
|
||||
public string Label28RegExp { get; set; }
|
||||
public string Label29 { get; set; }
|
||||
public int Label29Req { get; set; }
|
||||
public string Label29RegExp { get; set; }
|
||||
public string Label30 { get; set; }
|
||||
public int Label30Req { get; set; }
|
||||
public string Label30RegExp { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Requests.Systems
|
||||
{
|
||||
public class ThisSystemRequest
|
||||
{
|
||||
[Required, NotNull, StringLength(15, MinimumLength = 1, ErrorMessage = "Code must be between 1 to 15 characters.")]
|
||||
public string Code { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(100, MinimumLength = 1, ErrorMessage = "Name must be between 1 to 100 characters.")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(maximumLength: 50, MinimumLength = 3, ErrorMessage = "Bangla Name must be between 5 and 50 characters.")]
|
||||
public string BanglaName { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(maximumLength: 150, MinimumLength = 3, ErrorMessage = "Address must be between 3 and 150 characters.")]
|
||||
public string Address { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(maximumLength: 150, MinimumLength = 3, ErrorMessage = "Bangla Address must be between 3 and 150 characters.")]
|
||||
public string BanglaAddress { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(maximumLength: 50, MinimumLength = 7, ErrorMessage = "Phone no must be between 7 and 50 characters.")]
|
||||
public string PhoneNo { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(maximumLength: 50, MinimumLength = 11, ErrorMessage = "Mobile no must be between 11 and 50 characters.")]
|
||||
public string MobileNo { get; set; }
|
||||
|
||||
[NotNull, EmailAddress, StringLength(50, MinimumLength = 0, ErrorMessage = "EmailAddress be between 0 to 50 characters.")]
|
||||
public string EmailAddress { get; set; }
|
||||
public string Website { get; set; }
|
||||
public string VatRegNo { get; set; }
|
||||
|
||||
[Range(minimum: 0, maximum: 100, ConvertValueInInvariantCulture = true, ErrorMessage = "VAT rate must be between 0 to 100")]
|
||||
public decimal VatRate { get; set; }
|
||||
public bool EnfStgPwd { get; set; }
|
||||
|
||||
[Range(minimum: 1, maximum: 30, ConvertValueInInvariantCulture = true, ErrorMessage = "Minimum length must be between 1 to 30")]
|
||||
public short PwdMinLen { get; set; }
|
||||
|
||||
[Range(minimum: 1, maximum: 30, ConvertValueInInvariantCulture = true, ErrorMessage = "Maximum length must be between 1 to 30")]
|
||||
public short PwdMaxLen { get; set; }
|
||||
|
||||
[Range(minimum: 0, maximum: 10, ConvertValueInInvariantCulture = true, ErrorMessage = "Disallowed password must be 0 to 10")]
|
||||
public short DisallowLastPwds { get; set; }
|
||||
|
||||
[Range(minimum: 0, maximum: 365, ConvertValueInInvariantCulture = true, ErrorMessage = "Password life must be 0 to 365")]
|
||||
public short ExpiryDays { get; set; }
|
||||
|
||||
[Range(minimum: 0, maximum: 20, ConvertValueInInvariantCulture = true, ErrorMessage = "Unsuccessful attempts must be 0 to 20")]
|
||||
public short MaxTryCount { get; set; }
|
||||
|
||||
[Range(minimum: 0, maximum: 1440, ConvertValueInInvariantCulture = true, ErrorMessage = "Lock Time must be 0 to 1440")]
|
||||
public short LockTime { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(maximumLength: 8, MinimumLength = 5, ErrorMessage = "Version must be 5 and 8 digits (Example: 0.0.0 or 99.99.99)")]
|
||||
public string AppVersion { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(maximumLength: 15, MinimumLength = 5, ErrorMessage = "Comma delimited Auto Logout times (Example: 9999,9999,9999)")]
|
||||
public string AutoLogoutParams { get; set; }
|
||||
public string PwdReserveWords { get; set; }
|
||||
public bool LoginIdCantBePassword { get; set; }
|
||||
public bool PreventAttackPasswordReuse { get; set; }
|
||||
public bool BatchEnabled { get; set; }
|
||||
public int BmProcessId { get; set; }
|
||||
public int PrProcessId { get; set; }
|
||||
}
|
||||
|
||||
public class WOTermsRequest
|
||||
{
|
||||
[Required, NotNull, StringLength(maximumLength: 2000, MinimumLength = 5, ErrorMessage = "Payment Terms must be between 5 and 2000 characters.")]
|
||||
public string PaymentTerms { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(maximumLength: 2000, MinimumLength = 5, ErrorMessage = "Terms & Conditions must be between 5 and 2000 characters.")]
|
||||
public string TermsAndConditions { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,221 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Requests.Systems
|
||||
{
|
||||
public class FindAccountRequest
|
||||
{
|
||||
[Required, NotNull, StringLength(maximumLength: 200, MinimumLength = 4, ErrorMessage = "Login Id or Email address or Mobile number must be between 4 and 100 characters.")]
|
||||
public string AccountId { get; set; }
|
||||
}
|
||||
|
||||
public class LoginRequest
|
||||
{
|
||||
[Required, NotNull, StringLength(maximumLength: 150, MinimumLength = 4, ErrorMessage = "Login Id must be between 4 and 30 characters.")]
|
||||
public string LoginId { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(maximumLength: 150, MinimumLength = 1, ErrorMessage = "Password must be between 1 and 30 characters.")]
|
||||
public string Password { get; set; }
|
||||
|
||||
public string AppId { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(maximumLength: 8, MinimumLength = 5, ErrorMessage = "Version must be 5 and 8 digits (Example: 0.0.0 or 99.99.99)")]
|
||||
public string AppVersion { get; set; }
|
||||
|
||||
public bool AttendanceLogin { get; set; }
|
||||
public string HostName { get; set; }
|
||||
public string IpAddress { get; set; }
|
||||
public string MacAddress { get; set; }
|
||||
public string LoginRemarks { get; set; }
|
||||
}
|
||||
|
||||
public class OtpValidationRequest
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
|
||||
public EnumAuthenticationMethod AuthMethod { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(6, MinimumLength = 6, ErrorMessage = "Otp must be 6 digit number.")]
|
||||
public string OtpCode { get; set; }
|
||||
}
|
||||
|
||||
public class ByUserIdRequest
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
}
|
||||
|
||||
public class SendPasswordRequest
|
||||
{
|
||||
[Required, NotNull, StringLength(maximumLength: 300, MinimumLength = 1, ErrorMessage = "User Id is required.")]
|
||||
public string UserId { get; set; }
|
||||
public string MobileNo { get; set; }
|
||||
public string EmailAddress { get; set; }
|
||||
}
|
||||
|
||||
public class UserUnlockRequest : ByUserIdRequest
|
||||
{
|
||||
[Required, NotNull, StringLength(maximumLength: 30, MinimumLength = 1, ErrorMessage = "Login Id must be between 1 and 30 characters.")]
|
||||
public string LoginId { get; set; }
|
||||
}
|
||||
|
||||
public class ResetPasswordRequest : ByUserIdRequest
|
||||
{
|
||||
[Required, NotNull, StringLength(maximumLength: 30, MinimumLength = 1, ErrorMessage = "Password must be between 1 and 30 characters.")]
|
||||
public string Password { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(maximumLength: 30, MinimumLength = 1, ErrorMessage = "Confirm Password must be between 1 and 30 characters.")]
|
||||
public string ConfirmPassword { get; set; }
|
||||
}
|
||||
|
||||
public class PasswordChangeRequest : ResetPasswordRequest
|
||||
{
|
||||
[Required, NotNull, StringLength(maximumLength: 30, MinimumLength = 1, ErrorMessage = "Old Password must be between 1 and 30 characters.")]
|
||||
public string OldPassword { get; set; }
|
||||
}
|
||||
|
||||
public class LogoutRequest
|
||||
{
|
||||
public int LogId { get; set; }
|
||||
public bool AttendanceLogout { get; set; }
|
||||
public string IpAddress { get; set; }
|
||||
public string MacAddress { get; set; }
|
||||
public string HostName { get; set; }
|
||||
public string LogoutRemarks { get; set; }
|
||||
}
|
||||
|
||||
public class UserThemeRequest
|
||||
{
|
||||
[Required, NotNull, StringLength(15, MinimumLength = 1, ErrorMessage = "Menu Layout must be between 1 to 15 characters.")]
|
||||
public string MenuLayout { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(15, MinimumLength = 1, ErrorMessage = "Theme Name must be between 1 to 15 characters.")]
|
||||
public string ThemeName { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(10, MinimumLength = 1, ErrorMessage = "Scheme Name must be between 1 to 10 characters.")]
|
||||
public string SchemeName { get; set; }
|
||||
}
|
||||
|
||||
public class UserRequestBase
|
||||
{
|
||||
[Required, NotNull, StringLength(30, MinimumLength = 3, ErrorMessage = "Login Id must be between 3 to 30 characters.")]
|
||||
public string LoginId { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(75, MinimumLength = 3, ErrorMessage = "User Name must be between 3 to 75 characters.")]
|
||||
public string UserName { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(50, MinimumLength = 0, ErrorMessage = "Designation must be between 0 to 50 characters.")]
|
||||
public string Designation { get; set; }
|
||||
|
||||
[StringLength(15, MinimumLength = 11, ErrorMessage = "Mobile number must be 11 characters.")]
|
||||
[RegularExpression(@"^[01]{2}[123456789]{1}[0-9]{8}$", ErrorMessage = "Mobile number is invalid.")]
|
||||
public string MobileNo { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(100, MinimumLength = 5, ErrorMessage = "Email address must be between 5 to 100 characters.")]
|
||||
[RegularExpression(@"^(([a-zA-Z0-9_\-\.]+)\@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)(\s*;\s*|\s*$))*$", ErrorMessage = "Email address is invalid.")]
|
||||
public string EmailAddress { get; set; } = string.Empty;
|
||||
public bool AuthReqAtlogin { get; set; }
|
||||
public bool NeverExpire { get; set; }
|
||||
public bool DbOnStartup { get; set; }
|
||||
public bool DisallowMultiLogin { get; set; }
|
||||
public EnumStatus Status { get; set; }
|
||||
public short SeqId { get; set; }
|
||||
public bool ViewToAll { get; set; }
|
||||
public bool CanUseAttendanceSystem { get; set; }
|
||||
public EnumAuthenticationMethod AuthMethod { get; set; }
|
||||
public EnumAccessStatus AccessStatus { get; set; }
|
||||
public List<int> GroupIds { get; set; }
|
||||
}
|
||||
|
||||
public class UserRequest : UserRequestBase
|
||||
{
|
||||
[Required, Range(minimum: 1, maximum: int.MaxValue, ConvertValueInInvariantCulture = true, ErrorMessage = "Select valid user (1 to 99999999).")]
|
||||
public int UserId { get; set; }
|
||||
|
||||
public string AuthKey { get; set; }
|
||||
}
|
||||
|
||||
public class NewUserRequest : UserRequestBase
|
||||
{
|
||||
public int? EmployeeId { get; set; }
|
||||
public string EmployeeCode { get; set; }
|
||||
|
||||
[Required, NotNull, StringLength(30, MinimumLength = 1, ErrorMessage = "User Name must be between 1 to 30 characters.")]
|
||||
public string Password { get; set; }
|
||||
}
|
||||
|
||||
public class UserSearchRequest : ValueStatusAndPageAndSortSearchRequest
|
||||
{
|
||||
public bool CheckOwner { get; set; }
|
||||
}
|
||||
|
||||
public class ForceUserLogoutRequest
|
||||
{
|
||||
public List<int> UserIds { get; set; }
|
||||
}
|
||||
|
||||
public class ByUserAttributesRequest : ByUserIdRequest
|
||||
{
|
||||
[Required, Range(minimum: 1, maximum: 3, ConvertValueInInvariantCulture = true, ErrorMessage = "Client type must be 1 to 3")]
|
||||
public int ClientType { get; set; }
|
||||
}
|
||||
|
||||
public class UpdateMyInfoRequest
|
||||
{
|
||||
[Required, Range(minimum: 1, maximum: int.MaxValue, ConvertValueInInvariantCulture = true, ErrorMessage = "Employee Id must be 1 to 2147483647")]
|
||||
public int EmployeeId { get; set; }
|
||||
|
||||
[NotNull, StringLength(120, MinimumLength = 0, ErrorMessage = "Address be between 0 to 120 characters.")]
|
||||
public string Address { get; set; }
|
||||
|
||||
public string ContactNo { get; set; }
|
||||
}
|
||||
|
||||
public class UserAttributesRequest
|
||||
{
|
||||
[Required, Range(minimum: 1, maximum: int.MaxValue, ConvertValueInInvariantCulture = true, ErrorMessage = "Select valid user")]
|
||||
public int UserId { get; set; }
|
||||
|
||||
[Required, Range(minimum: 1, maximum: 3, ConvertValueInInvariantCulture = true, ErrorMessage = "Client type must be 1 to 3")]
|
||||
public int ClientType { get; set; }
|
||||
public List<string> UkIds { get; set; }
|
||||
}
|
||||
public class AccessLogSearchRequest
|
||||
{
|
||||
public int AccessType { get; set; }
|
||||
public string LoginId { get; set; }
|
||||
public DateTime StartDate { get; set; }
|
||||
public DateTime EndDate { get; set; }
|
||||
}
|
||||
|
||||
public class ByTeamSpaceAndBasicUserRequest
|
||||
{
|
||||
public int TeamSpaceId { get; set; }
|
||||
public int ProjectId { get; set; }
|
||||
}
|
||||
|
||||
public class BasicUserByTeamSpaceRequest : ByTeamSpaceAndBasicUserRequest
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
}
|
||||
|
||||
public class BasicUserSearchRequest : BasicUserByTeamSpaceRequest
|
||||
{
|
||||
public bool ApplyFilter { get; set; }
|
||||
}
|
||||
|
||||
public class UserLimitAuthorizeRequest
|
||||
{
|
||||
[Required, Range(minimum: 1, maximum: int.MaxValue, ConvertValueInInvariantCulture = true, ErrorMessage = "Select valid user (1 to 99999999).")]
|
||||
public int UserId { get; set; }
|
||||
|
||||
public decimal MaxAuthorizeAmount { get; set; }
|
||||
}
|
||||
|
||||
public class PayslipRequest
|
||||
{
|
||||
[Required, NotNull]
|
||||
public DateTime YearMonth { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Requests
|
||||
{
|
||||
public class ValueSearchRequest
|
||||
{
|
||||
public string Criteria { get; set; }
|
||||
}
|
||||
|
||||
public class ValueAndPageSearchRequest : ValueSearchRequest
|
||||
{
|
||||
public int Skip { get; set; }
|
||||
public int PageSize { get; set; }
|
||||
}
|
||||
|
||||
public class ValueAndStatusSearchRequest : ValueSearchRequest
|
||||
{
|
||||
public short Status { get; set; }
|
||||
}
|
||||
|
||||
public class ValueStatusAndPageSearchRequest : ValueAndPageSearchRequest
|
||||
{
|
||||
public short Status { get; set; }
|
||||
}
|
||||
|
||||
public class ValueStatusAndPageAndSortSearchRequest : ValueStatusAndPageSearchRequest
|
||||
{
|
||||
public string SortField { get; set; }
|
||||
public string SortOrder { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models.Global;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Objects;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Responses
|
||||
{
|
||||
public abstract class ResponseBase
|
||||
{
|
||||
public int ReturnStatus { get; set; }
|
||||
|
||||
public List<string> ReturnMessage { get; set; } = [];
|
||||
}
|
||||
|
||||
public abstract class TotalRowsResponseBase : ResponseBase
|
||||
{
|
||||
public int TotalRows { get; set; }
|
||||
}
|
||||
|
||||
public abstract class ResponseBase1 : ResponseBase
|
||||
{
|
||||
public Hashtable ValidationErrors { get; set; } = [];
|
||||
}
|
||||
|
||||
public abstract class BaseObjectResponse : ResponseBase
|
||||
{
|
||||
public string Code { get; set; }
|
||||
public string Name { get; set; }
|
||||
public EnumStatus Status { get; set; }
|
||||
public int SeqId { get; set; }
|
||||
public string StatusDetail => Status.GetDescription();
|
||||
}
|
||||
|
||||
public class BooleanResponse : ResponseBase
|
||||
{
|
||||
public bool Value { get; set; }
|
||||
}
|
||||
|
||||
public class StringResponse : ResponseBase
|
||||
{
|
||||
public string Value { get; set; }
|
||||
}
|
||||
|
||||
public class IntResponse : ResponseBase
|
||||
{
|
||||
public int Value { get; set; }
|
||||
}
|
||||
|
||||
public class KeywordsFromAudioResponse : ResponseBase
|
||||
{
|
||||
public List<FoundKeywordItem> FoundKeywords { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models.Objects.Setups;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Responses.Setups
|
||||
{
|
||||
public class AuthSummariesResponse : ResponseBase
|
||||
{
|
||||
public List<AuthModule> Value { get; set; } = [];
|
||||
}
|
||||
|
||||
public class PendingAuthResponse : ResponseBase
|
||||
{
|
||||
public List<PendingAuthModule> Value { get; set; } = [];
|
||||
public bool HasBoth => Value.Any(x => x.PendingAuthItems > 0 && x.PendingItems > 0);
|
||||
}
|
||||
|
||||
public class AuthDetailsResponse : ResponseBase
|
||||
{
|
||||
public List<DynamicColumn> Columns { get; set; } = [];
|
||||
public List<Dictionary<string, object>> Data { get; set; } = [];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models.Objects.Systems;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Responses.Systems
|
||||
{
|
||||
public class GroupSearchResponse : ResponseBase
|
||||
{
|
||||
public List<GroupBase> Value { get; set; } = [];
|
||||
}
|
||||
|
||||
public class GroupByIdResponse : BaseObjectResponse
|
||||
{
|
||||
public int GroupId { get; set; }
|
||||
public bool ViewToAll { get; set; }
|
||||
public List<PermissionBase> Value { get; set; } = [];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,139 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models.Objects.Setups;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Responses.Systems
|
||||
{
|
||||
public class LabelSettingResponse : ResponseBase
|
||||
{
|
||||
public string Label01 { get; set; }
|
||||
public int Label01Req { get; set; }
|
||||
public string Label01RegExp { get; set; }
|
||||
public string Label02 { get; set; }
|
||||
public int Label02Req { get; set; }
|
||||
public string Label02RegExp { get; set; }
|
||||
public string Label03 { get; set; }
|
||||
public int Label03Req { get; set; }
|
||||
public string Label03RegExp { get; set; }
|
||||
public string Label04 { get; set; }
|
||||
public int Label04Req { get; set; }
|
||||
public string Label04RegExp { get; set; }
|
||||
public string Label05 { get; set; }
|
||||
public int Label05Req { get; set; }
|
||||
public string Label05RegExp { get; set; }
|
||||
public string Label06 { get; set; }
|
||||
public int Label06Req { get; set; }
|
||||
public string Label06RegExp { get; set; }
|
||||
public string Label07 { get; set; }
|
||||
public int Label07Req { get; set; }
|
||||
public string Label07RegExp { get; set; }
|
||||
public string Label08 { get; set; }
|
||||
public int Label08Req { get; set; }
|
||||
public string Label08RegExp { get; set; }
|
||||
public string Label09 { get; set; }
|
||||
public int Label09Req { get; set; }
|
||||
public string Label09RegExp { get; set; }
|
||||
public string Label10 { get; set; }
|
||||
public int Label10Req { get; set; }
|
||||
public string Label10RegExp { get; set; }
|
||||
public string Label11 { get; set; }
|
||||
public int Label11Req { get; set; }
|
||||
public string Label11RegExp { get; set; }
|
||||
public string Label12 { get; set; }
|
||||
public int Label12Req { get; set; }
|
||||
public string Label12RegExp { get; set; }
|
||||
public string Label13 { get; set; }
|
||||
public int Label13Req { get; set; }
|
||||
public string Label13RegExp { get; set; }
|
||||
public string Label14 { get; set; }
|
||||
public int Label14Req { get; set; }
|
||||
public string Label14RegExp { get; set; }
|
||||
public string Label15 { get; set; }
|
||||
public int Label15Req { get; set; }
|
||||
public string Label15RegExp { get; set; }
|
||||
public string Label16 { get; set; }
|
||||
public int Label16Req { get; set; }
|
||||
public string Label16RegExp { get; set; }
|
||||
public string Label17 { get; set; }
|
||||
public int Label17Req { get; set; }
|
||||
public string Label17RegExp { get; set; }
|
||||
public string Label18 { get; set; }
|
||||
public int Label18Req { get; set; }
|
||||
public string Label18RegExp { get; set; }
|
||||
public string Label19 { get; set; }
|
||||
public int Label19Req { get; set; }
|
||||
public string Label19RegExp { get; set; }
|
||||
public string Label20 { get; set; }
|
||||
public int Label20Req { get; set; }
|
||||
public string Label20RegExp { get; set; }
|
||||
public string Label21 { get; set; }
|
||||
public int Label21Req { get; set; }
|
||||
public string Label21RegExp { get; set; }
|
||||
public string Label22 { get; set; }
|
||||
public int Label22Req { get; set; }
|
||||
public string Label22RegExp { get; set; }
|
||||
public string Label23 { get; set; }
|
||||
public int Label23Req { get; set; }
|
||||
public string Label23RegExp { get; set; }
|
||||
public string Label24 { get; set; }
|
||||
public int Label24Req { get; set; }
|
||||
public string Label24RegExp { get; set; }
|
||||
public string Label25 { get; set; }
|
||||
public int Label25Req { get; set; }
|
||||
public string Label25RegExp { get; set; }
|
||||
public string Label26 { get; set; }
|
||||
public int Label26Req { get; set; }
|
||||
public string Label26RegExp { get; set; }
|
||||
public string Label27 { get; set; }
|
||||
public int Label27Req { get; set; }
|
||||
public string Label27RegExp { get; set; }
|
||||
public string Label28 { get; set; }
|
||||
public int Label28Req { get; set; }
|
||||
public string Label28RegExp { get; set; }
|
||||
public string Label29 { get; set; }
|
||||
public int Label29Req { get; set; }
|
||||
public string Label29RegExp { get; set; }
|
||||
public string Label30 { get; set; }
|
||||
public int Label30Req { get; set; }
|
||||
public string Label30RegExp { get; set; }
|
||||
public bool HasAuthProcess { get; set; }
|
||||
}
|
||||
|
||||
public class LookupDataResponse : ResponseBase
|
||||
{
|
||||
public List<LookupData> Value { get; set; } = [];
|
||||
}
|
||||
|
||||
public class LookupDataExtResponse : ResponseBase
|
||||
{
|
||||
public List<LookupDataExt> Value { get; set; }
|
||||
}
|
||||
|
||||
public class ProdByInvTypeResponse : ResponseBase
|
||||
{
|
||||
public List<ProdByInvType> Value { get; set; } = [];
|
||||
}
|
||||
|
||||
public class ProdByInvTypeExtResponse : ResponseBase
|
||||
{
|
||||
public List<ProdByInvTypeExt> Value { get; set; } = [];
|
||||
}
|
||||
|
||||
public class SalesTxnTypeResponse : ResponseBase
|
||||
{
|
||||
public List<SalesTxnType> Value { get; set; }
|
||||
}
|
||||
|
||||
public class ProdByInvTypeAndCodeResponse : ResponseBase
|
||||
{
|
||||
public int ProductId { get; set; }
|
||||
public string ProductCode { get; set; }
|
||||
public string ProductName { get; set; }
|
||||
public int InventoryTypeId { get; set; }
|
||||
public string AstOrGLCode { get; set; }
|
||||
public string ExpOrDepGLCode { get; set; }
|
||||
public string InventoryType { get; set; }
|
||||
public decimal Price { get; set; }
|
||||
public decimal VatRate { get; set; }
|
||||
public decimal AitRate { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Responses.Systems
|
||||
{
|
||||
public class ThisSystemResponse : ResponseBase
|
||||
{
|
||||
public int ThisSystemId { get; set; }
|
||||
public string Code { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string BanglaName { get; set; }
|
||||
public string Address { get; set; }
|
||||
public string BanglaAddress { get; set; }
|
||||
public string PhoneNo { get; set; }
|
||||
public string MobileNo { get; set; }
|
||||
public string EmailAddress { get; set; }
|
||||
public string Website { get; set; }
|
||||
public string VatRegNo { get; set; }
|
||||
public decimal VatRate { get; set; }
|
||||
public bool EnfStgPwd { get; set; }
|
||||
public short PwdMinLen { get; set; }
|
||||
public short PwdMaxLen { get; set; }
|
||||
public short DisallowLastPwds { get; set; }
|
||||
public short ExpiryDays { get; set; }
|
||||
public short MaxTryCount { get; set; }
|
||||
public short LockTime { get; set; }
|
||||
public string AppVersion { get; set; }
|
||||
public string AutoLogoutParams { get; set; }
|
||||
public string PwdReserveWords { get; set; }
|
||||
public bool LoginIdCantBePassword { get; set; }
|
||||
public bool PreventAttackPasswordReuse { get; set; }
|
||||
public bool BatchEnabled { get; set; }
|
||||
public int BmProcessId { get; set; }
|
||||
public int PrProcessId { get; set; }
|
||||
public bool CanEditBatch { get; set; }
|
||||
public bool CanEditPRProcess { get; set; }
|
||||
}
|
||||
|
||||
public class WOTermsResponse : ResponseBase
|
||||
{
|
||||
public int ItemId { get; set; }
|
||||
public string PaymentTerms { get; set; }
|
||||
public string TermsAndConditions { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models.Objects.Systems;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Models.Responses.Systems
|
||||
{
|
||||
public class FindAccountResponse : BooleanResponse
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
public string PhoneNo { get; set; }
|
||||
public string EmailAddress { get; set; }
|
||||
public string PhoneNoMasked { get; set; }
|
||||
public string EmailAddressMasked { get; set; }
|
||||
}
|
||||
|
||||
public class LoginResponse : ResponseBase1
|
||||
{
|
||||
public int Id { get; private set; }
|
||||
public EnumLoginStatus LoginStatus { get; set; }
|
||||
public string LoginId { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public bool ValidUser { get; set; }
|
||||
public bool AuthRequiredAtLogin { get; set; }
|
||||
public EnumAuthenticationMethod AuthMethod { get; set; }
|
||||
public string AuthenticationToken { get; set; }
|
||||
public bool PwdChangeRequired { get; set; }
|
||||
public DateTime? Expires { get; set; }
|
||||
public DateTime SystemDate { get; set; }
|
||||
public string LoginTime { get; set; }
|
||||
public int LogId { get; set; }
|
||||
public DateTime? LogoutTime { get; private set; }
|
||||
public string MenuLayout { get; set; }
|
||||
public string ThemeName { get; set; }
|
||||
public string SchemeName { get; set; }
|
||||
public bool DbOnStartup { get; set; }
|
||||
public bool ViewOwnTaskOnly { get; private set; }
|
||||
public int? EmployeeId { get; private set; }
|
||||
public int NotificationCount { get; private set; }
|
||||
public int IdleTime { get; set; }
|
||||
public int PingTime { get; set; }
|
||||
public int TimeoutTime { get; set; }
|
||||
public bool BatchEnabled { get; private set; }
|
||||
public int BmProcessId { get; private set; }
|
||||
public int PrProcessId { get; private set; }
|
||||
public string IdsValue { get; set; }
|
||||
|
||||
//public List<string> ModuleIds { get; set; } = [];
|
||||
|
||||
public void Map(User source)
|
||||
{
|
||||
Id = source.Id;
|
||||
LogId = source.LogId;
|
||||
LoginId = source.LoginId;
|
||||
IdleTime = source.IdleTime;
|
||||
UserName = source.UserName;
|
||||
PingTime = source.PingTime;
|
||||
ThemeName = source.ThemeName;
|
||||
//ModuleIds = source.ModuleIds;
|
||||
LogoutTime = source.LogoutTime;
|
||||
SchemeName = source.SchemeName;
|
||||
AuthMethod = source.AuthMethod;
|
||||
MenuLayout = source.MenuLayout;
|
||||
SystemDate = source.SystemDate;
|
||||
EmployeeId = source.EmployeeId;
|
||||
LoginStatus = source.LoginStatus;
|
||||
DbOnStartup = source.DbOnStartup;
|
||||
TimeoutTime = source.TimeoutTime;
|
||||
BmProcessId = source.BmProcessId;
|
||||
PrProcessId = source.PrProcessId;
|
||||
BatchEnabled = source.BatchEnabled;
|
||||
ViewOwnTaskOnly = source.ViewOwnTaskOnly;
|
||||
NotificationCount = source.NotificationCount;
|
||||
AuthRequiredAtLogin = source.AuthRequiredAtLogin;
|
||||
IdsValue = Newtonsoft.Json.JsonConvert.SerializeObject(source.ModuleIds);
|
||||
}
|
||||
}
|
||||
|
||||
public class MenuResponse
|
||||
{
|
||||
public MenuItem Item { get; set; }
|
||||
}
|
||||
|
||||
public class UserProfileBase : ResponseBase
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
public string LoginId { get; set; }
|
||||
public string EmployeeCode { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public string Designation { get; set; }
|
||||
public string MobileNo { get; set; }
|
||||
public string EmailAddress { get; set; }
|
||||
}
|
||||
|
||||
public class UserGetResponse : UserProfileBase
|
||||
{
|
||||
public bool IsLocked { get; set; }
|
||||
public bool NeverExpire { get; set; }
|
||||
public EnumStatus Status { get; set; }
|
||||
public short SeqId { get; set; }
|
||||
public bool CanUseAttendanceSystem { get; set; }
|
||||
public bool ViewToAll { get; set; }
|
||||
public bool AuthRequiredAtLogin { get; set; }
|
||||
public EnumAuthenticationMethod AuthMethod { get; set; }
|
||||
public EnumAccessStatus AccessStatus { get; set; }
|
||||
public bool DbOnStartup { get; set; }
|
||||
public bool DisallowMultiLogin { get; set; }
|
||||
public List<int> GroupIds { get; set; } = [];
|
||||
}
|
||||
|
||||
public class UserProfileResponse : UserProfileBase
|
||||
{
|
||||
public bool HasAIApiKey { get; set; }
|
||||
public bool HasPayslipPath { get; set; }
|
||||
public string Address { get; set; }
|
||||
public string ContactNo { get; set; }
|
||||
public DateTime? NextPwdDate { get; set; }
|
||||
public DateTime? PwdLastChangedTime { get; set; }
|
||||
public List<LoginHistory> LoginHistories { get; set; }
|
||||
}
|
||||
|
||||
public class DashboardDataResponse : ResponseBase
|
||||
{
|
||||
public List<DashboardItem> GroupData { get; set; } = [];
|
||||
public Dashboard2Data Group1Data { get; set; }
|
||||
public Dashboard2Data Group2Data { get; set; }
|
||||
public Dashboard2Data Group3Data { get; set; }
|
||||
public Dashboard2Data Group4Data { get; set; }
|
||||
}
|
||||
|
||||
public class UserSearchResponse : TotalRowsResponseBase
|
||||
{
|
||||
public List<UserSearch> Value { get; set; } = [];
|
||||
}
|
||||
|
||||
public class UserForceLogoutResponse : ResponseBase
|
||||
{
|
||||
public List<UserForceLogout> Value { get; set; } = [];
|
||||
}
|
||||
|
||||
public class UserAttributesResponse : ResponseBase
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
public string LoginId { get; set; }
|
||||
public List<string> UkIds { get; set; }
|
||||
public bool HasSetup { get; set; }
|
||||
}
|
||||
|
||||
public class AccessLogResponse : ResponseBase
|
||||
{
|
||||
public List<AccessLog> Value { get; set; }
|
||||
}
|
||||
|
||||
public class UserBasicInfoResponse : ResponseBase
|
||||
{
|
||||
public List<UserBasicInfo> Value { get; set; } = [];
|
||||
}
|
||||
|
||||
public class UserAuthorizeLimitResponse : ResponseBase
|
||||
{
|
||||
public string LoginId { get; set; }
|
||||
public decimal Value { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models.Responses.Setups;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Services.Contracts.Setups
|
||||
{
|
||||
public interface IAuthModulesService
|
||||
{
|
||||
Task<bool> UpdateAuthStatusAsync(string moduleId, string ipAddress, string remarks, short status, int userId, string loginId, string ids);
|
||||
|
||||
Task<PendingAuthResponse> GetPendingAuthsAsync(int userId);
|
||||
Task<AuthDetailsResponse> GetAuthDetailsAsync(string moduleId, short status);
|
||||
Task<AuthSummariesResponse> GetAuthSummariesAsync(int userId, short status, int entryModule);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Objects.Setups;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Requests.Systems;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Responses;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Responses.Systems;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Services.Contracts.Systems
|
||||
{
|
||||
public interface IParamTypeService
|
||||
{
|
||||
Task<LabelSettingResponse> GetLabelSettingAsync(int settingId);
|
||||
Task<BooleanResponse> SaveLabelSettingAsync(LabelSettingRequest request);
|
||||
|
||||
Task<bool> DeleteLookupDataAsync(int lookupId, int deletedBy);
|
||||
Task<LookupDataExtResponse> GetLookupDataExtAsync(EnumLookupType lookupType);
|
||||
Task<bool> SaveLookupDataAsync(List<LookupDataExt> items, string ipAddress, int userId);
|
||||
Task<LookupDataResponse> GetLookupDataAsync(EnumLookupType lookupType, int excludeItemId);
|
||||
|
||||
Task<SalesTxnTypeResponse> GetSalesTxnTypesAsync(int txnType, int typeOfTran);
|
||||
|
||||
Task<ProdByInvTypeResponse> GetFASparePartsAsync(string criteria);
|
||||
Task<ProdByInvTypeResponse> GetProductsAsync(int inventoryTypeId, string criteria);
|
||||
Task<ProdByInvTypeAndCodeResponse> GetProductByCodeAsync(int inventoryTypeId, string productCode);
|
||||
Task<ProdByInvTypeResponse> GetProductsExtAsync(List<int> inventoryTypeIds, bool materialOnly, string criteria);
|
||||
Task<ProdByInvTypeExtResponse> GetProductsStockAsync(int storeId, int stockOf, bool stockOnly, List<int> inventoryTypeIds, bool materialOnly, string criteria);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models.Requests.Systems;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Responses.Systems;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Services.Contracts.Systems
|
||||
{
|
||||
public interface IThisSystemService
|
||||
{
|
||||
Task<bool> SaveAsync(ThisSystemRequest request, string ipAddress, int modifiedBy);
|
||||
Task<bool> SaveWOTermsAsync(WOTermsRequest request, string ipAddress, int savedBy);
|
||||
|
||||
Task<ThisSystemResponse> GetAsync();
|
||||
Task<WOTermsResponse> GetWOTermsAsync();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models.Objects.Setups;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Objects.Systems;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Requests.Systems;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Responses.Systems;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Services.Contracts.Systems
|
||||
{
|
||||
public interface IUserService
|
||||
{
|
||||
Task<bool> ValidateAuthValueAsync(string authValue, int userId);
|
||||
Task<User> LoginAsync(LoginRequest request, string ipAddress, bool checkPwd);
|
||||
Task<bool> LogoutAsync(string ipAddress, int userId, int logId, bool attendanceLogout, string loginId, string localIp, string macAddress, string hostName, string logoutRemarks);
|
||||
|
||||
Task<bool> DeleteUserAsync(int userId, int deletedBy);
|
||||
Task<bool> ForceLogoutNowAsync(List<int> userIds, string ipAddress);
|
||||
Task<bool> UnlockUserAsync(int userId, string loginId, int unlockedBy);
|
||||
Task<bool> DeleteAttributesAsync(int userId, int clientType, int deletedBy);
|
||||
Task<bool> EditUserAsync(UserRequest user, string ipAddress, int modifiedBy);
|
||||
Task<bool> AddUserAsync(NewUserRequest user, string ipAddress, int createdBy);
|
||||
Task<bool> UpdateMyInfoAsync(string address, string contactNo, int modifiedBy, int emplyeeId);
|
||||
Task<bool> ResetPasswordAsync(int userId, string newPassword, string ipAddress, int changedBy);
|
||||
Task<bool> UpdateMyThemeAsync(int userId, string menuLayout, string themeName, string schemeName);
|
||||
Task<bool> SaveAuthorizeLimitAsync(decimal maxAuthLimit, int userId, string ipAddress, string savedBy);
|
||||
Task<bool> UploadDocumentAsync(int userId, int id, int documentOf, string orgFileName, string fileName);
|
||||
Task<bool> ChangePasswordAsync(int userId, string oldPassword, string newPassword, string ipAddress, int changedBy);
|
||||
Task<bool> SaveAttributesAsync(int userId, int clientType, string ipAddress, int attributeSetBy, List<string> ukIds);
|
||||
|
||||
Task<UserGetResponse> GetUserAsync(int userId);
|
||||
Task<MenuResponse> GetUserPermissionsAsync(int userId);
|
||||
Task<UserProfileResponse> GetUserProfileAsync(int userId);
|
||||
Task<FindAccountResponse> FindAccountAsync(string accountId);
|
||||
Task<UserAuthorizeLimitResponse> GetAuthorizeLimitAsync(int userId);
|
||||
Task<UserAttributesResponse> GetAttributesAsync(int userId, int clientType);
|
||||
Task<DashboardDataResponse> GetDashboardData(int userId, bool canViewLeave, bool canViewLate, bool canViewClientVisit, bool canViewHomeOffice, bool viewAll);
|
||||
|
||||
Task<int> LoadNotificationCountAsync(int userId);
|
||||
|
||||
Task<UserBasicInfoResponse> GetAttendanceUsersAsync(int userId);
|
||||
|
||||
Task<UserForceLogoutResponse> GetForceLogoutUsersAsync(int createdBy);
|
||||
Task<UserSearchResponse> GetUsersAsync(UserSearchRequest request, int userId);
|
||||
Task<bool> SendPasswordAsync(int userId, string newPassword, string ipAddress);
|
||||
Task<UserBasicInfoResponse> GetUsersByTeamSpaceAsync(string teamSpaceIds, int projectId, int userId);
|
||||
Task<UserBasicInfoResponse> GetUsersBasicAsync(bool applyFilter, string teamSpaceIds, int projectId);
|
||||
Task<AccessLogResponse> GetAccessLogAsync(int accessType, string loginId, DateTime startDate, DateTime endDate);
|
||||
}
|
||||
}
|
||||
|
||||
132
Api/OnlineSalesAutoCrop.CoreAPI.Services/DBCustomError.cs
Normal file
132
Api/OnlineSalesAutoCrop.CoreAPI.Services/DBCustomError.cs
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
using Microsoft.Data.SqlClient;
|
||||
using System;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Services
|
||||
{
|
||||
internal static class DBCustomError
|
||||
{
|
||||
internal static Exception GenerateCustomError(Exception e)
|
||||
{
|
||||
Exception customError;
|
||||
if (e is SqlException)
|
||||
{
|
||||
SqlException se = e as SqlException;
|
||||
if (se.Number == -1 || se.Number == 2 || se.Number == 53 || se.Number == 10060)
|
||||
{
|
||||
customError = new Exception("SQL Server/Database is invalid (ERR-0001).", e);
|
||||
}
|
||||
else if (se.Number == -2)
|
||||
{
|
||||
customError = new Exception(se.InnerException != null ? se.InnerException.Message : "Server is too busy to respond (ERR-0002).", e);
|
||||
}
|
||||
else if (se.Number == 207)
|
||||
{
|
||||
int startIdx = se.Message.IndexOf("'");
|
||||
if (startIdx > 0)
|
||||
{
|
||||
int endIdx = se.Message.IndexOf("'", startIdx + 1);
|
||||
if (endIdx > startIdx && endIdx > 0)
|
||||
{
|
||||
string fldName = se.Message.Substring(startIdx + 1, (endIdx - startIdx - 1));
|
||||
customError = new Exception($"Column name ({fldName}) in the Table is invalid (ERR-0003).", e);
|
||||
}
|
||||
else
|
||||
{
|
||||
customError = new Exception("Column name in the Table is invalid (ERR-0004).", e);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
customError = new Exception("Column name in the Table is invalid (ERR-0005).", e);
|
||||
}
|
||||
}
|
||||
else if (se.Number == 1205)
|
||||
{
|
||||
customError = new Exception("Server is too busy to process your request (ERR-0006).", e);
|
||||
}
|
||||
else if (se.Number == 547)
|
||||
{
|
||||
int startIdx = e.Message.IndexOf("conflicted with the FOREIGN KEY constraint \"");
|
||||
if (startIdx >= 0)
|
||||
{
|
||||
startIdx = e.Message.IndexOf(value: ", table \"");
|
||||
startIdx += 13;
|
||||
int endIdx = e.Message.IndexOf(value: '"', startIndex: startIdx);
|
||||
if (endIdx >= 0)
|
||||
{
|
||||
string tableName = e.Message[startIdx..endIdx];
|
||||
customError = new Exception($"Foreign key constraint violation occurred in Table [<b>{tableName}</b>] (ERR-0006).", e);
|
||||
}
|
||||
else
|
||||
{
|
||||
customError = new Exception("Foreign key constraint violation occurred (ERR-0007).", e);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
customError = new Exception("Can not <b>Delete</b> data because it is already used as reference (ERR-0008).", e);
|
||||
}
|
||||
}
|
||||
else if (se.Number == 2601 || se.Number == 2627)
|
||||
{
|
||||
int startIdx = e.Message.IndexOf("The duplicate key value is (");
|
||||
if (startIdx >= 0)
|
||||
{
|
||||
string fldName = string.Empty;
|
||||
int stIdx = e.Message.IndexOf("with unique index '");
|
||||
stIdx += 19;
|
||||
int endIdx = e.Message.IndexOf("'", stIdx);
|
||||
if (endIdx > 0 && stIdx > 0)
|
||||
{
|
||||
fldName = e.Message[stIdx..endIdx];
|
||||
stIdx = fldName.IndexOf(value: '_');
|
||||
if (stIdx >= 0)
|
||||
{
|
||||
fldName = fldName[(stIdx + 1)..];
|
||||
string[] tokens = fldName.Split('_');
|
||||
if (tokens.Length >= 2)
|
||||
{
|
||||
fldName = $" Table [<b>{tokens[0]}</b>] and Field [<b>{tokens[1]}</b>]";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
startIdx += 28;
|
||||
endIdx = e.Message.IndexOf(value: ")", startIdx);
|
||||
if (endIdx >= 0)
|
||||
{
|
||||
string value = e.Message[startIdx..endIdx];
|
||||
customError = new Exception($"Value [<b>{value}</b>] is already exist in {fldName} (ERR-0009).", e);
|
||||
}
|
||||
else
|
||||
{
|
||||
customError = new Exception("Value can not be duplicate in the system (ERR-0010).", e);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
customError = new Exception("Value can not be duplicate in the system (ERR-0011).", e);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
customError = new Exception(se.Message, e);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (e.Message.Contains("The UPDATE statement conflicted with the CHECK constraint", StringComparison.CurrentCulture) ||
|
||||
e.Message.Contains("The INSERT statement conflicted with the CHECK constraint", StringComparison.CurrentCulture))
|
||||
{
|
||||
customError = new Exception("Cannot continue now, Please try again later (ERR-1000).", e);
|
||||
}
|
||||
else
|
||||
{
|
||||
customError = new Exception(e.Message, e);
|
||||
}
|
||||
}
|
||||
|
||||
return customError;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
// This file is used by Code Analysis to maintain SuppressMessage
|
||||
// attributes that are applied to this project.
|
||||
// Project-level suppressions either have no target or are given
|
||||
// a specific target and scoped to a namespace, type, member, etc.
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
[assembly: SuppressMessage("Major Code Smell", "S6966:Awaitable method should be used", Justification = "<Pending>", Scope = "member", Target = "~M:OnlineSalesAutoCrop.CoreAPI.Services.Services.Setups.ExternalProductService.GetExternalProductAsync(System.Int32)~System.Threading.Tasks.Task{OnlineSalesAutoCrop.CoreAPI.Models.Responses.Setups.ExternalProductByIdResponse}")]
|
||||
[assembly: SuppressMessage("Major Code Smell", "S6966:Awaitable method should be used", Justification = "<Pending>", Scope = "member", Target = "~M:OnlineSalesAutoCrop.CoreAPI.Services.Services.Activities.FATranService.AddFATranAsync(OnlineSalesAutoCrop.CoreAPI.Models.Requests.Activities.FaTranRequest,System.String,System.Int32)~System.Threading.Tasks.Task{OnlineSalesAutoCrop.CoreAPI.Models.Responses.BooleanResponse}")]
|
||||
[assembly: SuppressMessage("Major Code Smell", "S6966:Awaitable method should be used", Justification = "<Pending>", Scope = "member", Target = "~M:OnlineSalesAutoCrop.CoreAPI.Services.Services.Setups.ExternalProductService.GetExternalProductsBasicAsync(System.Nullable{System.Int32},System.Int32,System.Int16,System.String,System.Boolean,System.Boolean,System.Boolean)~System.Threading.Tasks.Task{OnlineSalesAutoCrop.CoreAPI.Models.Responses.Setups.BasicExternalProductsResponse}")]
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup Label="Globals">
|
||||
<SccProjectName></SccProjectName>
|
||||
<SccProvider></SccProvider>
|
||||
<SccAuxPath></SccAuxPath>
|
||||
<SccLocalPath></SccLocalPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<Authors>S M Russel</Authors>
|
||||
<Company>Computer Ease Limited</Company>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Properties\**" />
|
||||
<Compile Remove="Services\B2B\**" />
|
||||
<Compile Remove="Services\Claim\**" />
|
||||
<Compile Remove="Services\DailyTask\**" />
|
||||
<Compile Remove="Services\DFFIncentive\**" />
|
||||
<Compile Remove="Services\DMSDayEnd\**" />
|
||||
<Compile Remove="Services\DMS\**" />
|
||||
<Compile Remove="Services\Employees\**" />
|
||||
<Compile Remove="Services\Global\**" />
|
||||
<Compile Remove="Services\Markets\**" />
|
||||
<Compile Remove="Services\MasRapida\**" />
|
||||
<Compile Remove="Services\Misc\**" />
|
||||
<Compile Remove="Services\obj\**" />
|
||||
<Compile Remove="Services\Outlets\**" />
|
||||
<Compile Remove="Services\Payments\**" />
|
||||
<Compile Remove="Services\Setups\**" />
|
||||
<Compile Remove="Services\Properties\**" />
|
||||
<Compile Remove="Services\ROI\**" />
|
||||
<Compile Remove="Services\Sales\**" />
|
||||
<Compile Remove="Services\Targets\**" />
|
||||
<Compile Remove="Services\UniSetup\**" />
|
||||
<Compile Remove="Services\Workflow\**" />
|
||||
<EmbeddedResource Remove="Properties\**" />
|
||||
<EmbeddedResource Remove="Services\B2B\**" />
|
||||
<EmbeddedResource Remove="Services\Claim\**" />
|
||||
<EmbeddedResource Remove="Services\DailyTask\**" />
|
||||
<EmbeddedResource Remove="Services\DFFIncentive\**" />
|
||||
<EmbeddedResource Remove="Services\DMSDayEnd\**" />
|
||||
<EmbeddedResource Remove="Services\DMS\**" />
|
||||
<EmbeddedResource Remove="Services\Employees\**" />
|
||||
<EmbeddedResource Remove="Services\Global\**" />
|
||||
<EmbeddedResource Remove="Services\Markets\**" />
|
||||
<EmbeddedResource Remove="Services\MasRapida\**" />
|
||||
<EmbeddedResource Remove="Services\Misc\**" />
|
||||
<EmbeddedResource Remove="Services\obj\**" />
|
||||
<EmbeddedResource Remove="Services\Outlets\**" />
|
||||
<EmbeddedResource Remove="Services\Payments\**" />
|
||||
<EmbeddedResource Remove="Services\Setups\**" />
|
||||
<EmbeddedResource Remove="Services\Properties\**" />
|
||||
<EmbeddedResource Remove="Services\ROI\**" />
|
||||
<EmbeddedResource Remove="Services\Sales\**" />
|
||||
<EmbeddedResource Remove="Services\Targets\**" />
|
||||
<EmbeddedResource Remove="Services\UniSetup\**" />
|
||||
<EmbeddedResource Remove="Services\Workflow\**" />
|
||||
<None Remove="Properties\**" />
|
||||
<None Remove="Services\B2B\**" />
|
||||
<None Remove="Services\Claim\**" />
|
||||
<None Remove="Services\DailyTask\**" />
|
||||
<None Remove="Services\DFFIncentive\**" />
|
||||
<None Remove="Services\DMSDayEnd\**" />
|
||||
<None Remove="Services\DMS\**" />
|
||||
<None Remove="Services\Employees\**" />
|
||||
<None Remove="Services\Global\**" />
|
||||
<None Remove="Services\Markets\**" />
|
||||
<None Remove="Services\MasRapida\**" />
|
||||
<None Remove="Services\Misc\**" />
|
||||
<None Remove="Services\obj\**" />
|
||||
<None Remove="Services\Outlets\**" />
|
||||
<None Remove="Services\Payments\**" />
|
||||
<None Remove="Services\Setups\**" />
|
||||
<None Remove="Services\Properties\**" />
|
||||
<None Remove="Services\ROI\**" />
|
||||
<None Remove="Services\Sales\**" />
|
||||
<None Remove="Services\Targets\**" />
|
||||
<None Remove="Services\UniSetup\**" />
|
||||
<None Remove="Services\Workflow\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Services\Systems\AuditService.cs" />
|
||||
<Compile Remove="Services\Systems\B2BThisSystemService.cs" />
|
||||
<Compile Remove="Services\Systems\CacheInfoService.cs" />
|
||||
<Compile Remove="Services\Systems\FFAuthenticationService.cs" />
|
||||
<Compile Remove="Services\Systems\FFAuthorizationService.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="Services\Setups\AuthModulesService.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Ease.NetCore" Version="2.1.4" />
|
||||
<PackageReference Include="Microsoft.Data.SqlClient" Version="7.0.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Options" Version="10.0.8" />
|
||||
<PackageReference Include="System.Data.SqlClient" Version="4.9.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\OnlineSalesAutoCrop.CoreAPI.Models\OnlineSalesAutoCrop.CoreAPI.Models.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Contracts\Activities\" />
|
||||
<Folder Include="Services\Activities\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,249 @@
|
|||
using Ease.NetCore.DataAccess;
|
||||
using Ease.NetCore.DataAccess.SQL;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Global;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Objects.Setups;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Responses.Setups;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Services.Contracts.Setups;
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.Extensions.Options;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Services.Services.Setups
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="settings"></param>
|
||||
public class AuthModulesService(IOptions<AppSettings> settings) : IAuthModulesService
|
||||
{
|
||||
private readonly AppSettings _settings = settings?.Value;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="status"></param>
|
||||
/// <param name="entryModule"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="Exception"></exception>
|
||||
public async Task<AuthSummariesResponse> GetAuthSummariesAsync(int userId, short status, int entryModule)
|
||||
{
|
||||
AuthSummariesResponse response = new() { Value = [] };
|
||||
try
|
||||
{
|
||||
using TransactionContext tc = await TransactionContext.BeginAsync(_settings.DefaultConnection.ConnectionNode);
|
||||
try
|
||||
{
|
||||
SqlParameter[] p =
|
||||
[
|
||||
SqlHelperExtension.CreateInParam(pName: "@UserId", pType: SqlDbType.Int, pValue: userId),
|
||||
SqlHelperExtension.CreateInParam(pName: "@Status", pType: SqlDbType.Int, pValue: status),
|
||||
];
|
||||
using (IDataReader dr = tc.ExecuteReaderSp(spName: "dbo.GetAuthPendingData", parameterValues: p))
|
||||
{
|
||||
while (dr.Read())
|
||||
{
|
||||
AuthModule item = new()
|
||||
{
|
||||
ModuleName = dr.GetString(0),
|
||||
ModuleId = dr.GetString(1),
|
||||
PendingItems = dr.GetInt32(2)
|
||||
};
|
||||
response.Value.Add(item);
|
||||
}
|
||||
dr.Close();
|
||||
}
|
||||
|
||||
tc.End();
|
||||
}
|
||||
catch (Exception ie)
|
||||
{
|
||||
tc?.HandleError();
|
||||
|
||||
throw DBCustomError.GenerateCustomError(ie);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="moduleId"></param>
|
||||
/// <param name="status"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="Exception"></exception>
|
||||
public async Task<AuthDetailsResponse> GetAuthDetailsAsync(string moduleId, short status)
|
||||
{
|
||||
AuthDetailsResponse response = new() { Columns = [], Data = [] };
|
||||
try
|
||||
{
|
||||
using TransactionContext tc = await TransactionContext.BeginAsync(_settings.DefaultConnection.ConnectionNode);
|
||||
try
|
||||
{
|
||||
SqlParameter[] p =
|
||||
[
|
||||
SqlHelperExtension.CreateInParam(pName: "@ModuleId", pType: SqlDbType.VarChar, pValue: moduleId, size: 25),
|
||||
SqlHelperExtension.CreateInParam(pName: "@Status", pType: SqlDbType.Int, pValue: status)
|
||||
];
|
||||
|
||||
using (IDataReader dr = tc.ExecuteReaderSp(spName: "dbo.GetAuthProcessDetail", parameterValues: p))
|
||||
{
|
||||
//Read Columns
|
||||
for (int fldIdx = 0; fldIdx < dr.FieldCount; fldIdx++)
|
||||
{
|
||||
string[] fldParam = dr.GetName(fldIdx).Split('~');
|
||||
DynamicColumn column = new()
|
||||
{
|
||||
Field = fldParam[0],
|
||||
Title = fldParam[1],
|
||||
Width = Convert.ToInt32(fldParam[2])
|
||||
};
|
||||
|
||||
response.Columns.Add(column);
|
||||
}
|
||||
|
||||
//Read Data
|
||||
while (dr.Read())
|
||||
{
|
||||
Dictionary<string, object> row = [];
|
||||
for (int fldIdx = 0; fldIdx < dr.FieldCount; fldIdx++)
|
||||
{
|
||||
object value = dr.IsDBNull(fldIdx) ? default : dr[fldIdx];
|
||||
string key = response.Columns[fldIdx].Field;
|
||||
|
||||
row[key] = value;
|
||||
}
|
||||
response.Data.Add(row);
|
||||
}
|
||||
|
||||
dr.Close();
|
||||
}
|
||||
|
||||
tc.End();
|
||||
}
|
||||
catch (Exception ie)
|
||||
{
|
||||
tc?.HandleError();
|
||||
|
||||
throw DBCustomError.GenerateCustomError(ie);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="moduleId"></param>
|
||||
/// <param name="ipAddress"></param>
|
||||
/// <param name="remarks"></param>
|
||||
/// <param name="status"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="loginId"></param>
|
||||
/// <param name="ids"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="InvalidOperationException"></exception>
|
||||
public async Task<bool> UpdateAuthStatusAsync(string moduleId, string ipAddress, string remarks, short status, int userId, string loginId, string ids)
|
||||
{
|
||||
bool returnValue;
|
||||
try
|
||||
{
|
||||
using TransactionContext tc = await TransactionContext.BeginAsync(_settings.DefaultConnection.ConnectionNode, true);
|
||||
try
|
||||
{
|
||||
SqlParameter[] p =
|
||||
[
|
||||
SqlHelperExtension.CreateInParam(pName: "@ModuleId", pType: SqlDbType.VarChar, pValue: moduleId, size: 25),
|
||||
SqlHelperExtension.CreateInParam(pName: "@IpAddress", pType: SqlDbType.VarChar, pValue: ipAddress, size: 20),
|
||||
SqlHelperExtension.CreateInParam(pName: "@Remarks", pType: SqlDbType.VarChar, pValue: remarks, size: 50),
|
||||
SqlHelperExtension.CreateInParam(pName: "@Status", pType: SqlDbType.SmallInt, pValue: status),
|
||||
SqlHelperExtension.CreateInParam(pName: "@UserId", pType: SqlDbType.Int, pValue: userId),
|
||||
SqlHelperExtension.CreateInParam(pName: "@LoginId", pType: SqlDbType.VarChar, pValue: loginId, size: 40),
|
||||
SqlHelperExtension.CreateInParam(pName: "@Ids", pType: SqlDbType.VarChar, pValue: ids, size: 7500),
|
||||
];
|
||||
_ = tc.ExecuteNonQuerySp(spName: "dbo.UpdateAuthStatus", parameterValues: p);
|
||||
|
||||
tc.End();
|
||||
|
||||
returnValue = true;
|
||||
}
|
||||
catch (Exception ie)
|
||||
{
|
||||
tc?.HandleError();
|
||||
|
||||
throw DBCustomError.GenerateCustomError(ie);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="InvalidOperationException"></exception>
|
||||
public async Task<PendingAuthResponse> GetPendingAuthsAsync(int userId)
|
||||
{
|
||||
PendingAuthResponse response = new() { Value = [] };
|
||||
try
|
||||
{
|
||||
using TransactionContext tc = await TransactionContext.BeginAsync(_settings.DefaultConnection.ConnectionNode);
|
||||
try
|
||||
{
|
||||
SqlParameter[] p = [SqlHelperExtension.CreateInParam(pName: "@UserId", pType: SqlDbType.Int, pValue: userId)];
|
||||
using (IDataReader dr = tc.ExecuteReaderSp(spName: "dbo.GetPendingAuths", parameterValues: p))
|
||||
{
|
||||
while (dr.Read())
|
||||
{
|
||||
PendingAuthModule item = new()
|
||||
{
|
||||
ModuleId = dr.GetString(0),
|
||||
ModuleName = dr.GetString(1),
|
||||
ModuleHref = dr.GetString(2),
|
||||
BasicData = dr.GetInt16(3) != 0,
|
||||
PendingAuthItems = dr.GetInt32(4),
|
||||
PendingItems = dr.GetInt32(5)
|
||||
};
|
||||
response.Value.Add(item);
|
||||
}
|
||||
dr.Close();
|
||||
}
|
||||
|
||||
tc.End();
|
||||
}
|
||||
catch (Exception ie)
|
||||
{
|
||||
tc?.HandleError();
|
||||
|
||||
throw DBCustomError.GenerateCustomError(ie);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,267 @@
|
|||
using Ease.NetCore.DataAccess;
|
||||
using Ease.NetCore.DataAccess.SQL;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Global;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Requests.Systems;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Responses.Systems;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Services.Contracts.Systems;
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.Extensions.Options;
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Services.Services.Systems
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="settings"></param>
|
||||
public class ThisSystemService(IOptions<AppSettings> settings) : IThisSystemService
|
||||
{
|
||||
private readonly AppSettings _settings = settings?.Value;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<ThisSystemResponse> GetAsync()
|
||||
{
|
||||
ThisSystemResponse response = new() { ReturnStatus = 200, CanEditBatch = true };
|
||||
try
|
||||
{
|
||||
using TransactionContext tc = await TransactionContext.BeginAsync(_settings.DefaultConnection.ConnectionNode);
|
||||
try
|
||||
{
|
||||
bool canEditBatch = true, canEditPRProcess = true;
|
||||
using (IDataReader dr = tc.ExecuteReader("IF EXISTS(SELECT TranID FROM Sales.SalesStockTrans WHERE AuthorisedTime IS NOT NULL AND AuthorisedLoginId IS NOT NULL) SELECT 'D' ELSE SELECT 'E'"))
|
||||
{
|
||||
if (dr.Read())
|
||||
{
|
||||
canEditBatch = dr.GetString(0) == "E";
|
||||
}
|
||||
dr.Close();
|
||||
}
|
||||
|
||||
using (IDataReader dr = tc.ExecuteReader("IF EXISTS(SELECT PaymentId FROM Sales.SalesPayments WHERE AuthorizedTime IS NOT NULL AND AuthorizedBy IS NOT NULL) SELECT 'D' ELSE SELECT 'E'"))
|
||||
{
|
||||
if (dr.Read())
|
||||
{
|
||||
canEditPRProcess = dr.GetString(0) == "E";
|
||||
}
|
||||
dr.Close();
|
||||
}
|
||||
|
||||
using (IDataReader dr = tc.ExecuteReader("SELECT SystemID, Code, Name, NameInBangla, Address, AddressInBangla, PhoneNo, MobileNo,"
|
||||
+ " EmailAddress, WebAddress, VATRegNo, VATRate, PrvntAtckPwdReuse, EnfStgPwd, PwdMinLen, PwdMaxLen, DALastPwds, ExpiryDays,"
|
||||
+ " MaxTryCount, LockTime, AppVersion, AutoLogoutParams, PwdRsvdWords, LoginIdCantPwd, BatchEnabled, BmProcessId, PrProcessId"
|
||||
+ " FROM ThisSystem"))
|
||||
{
|
||||
if (dr.Read())
|
||||
{
|
||||
response = new ThisSystemResponse
|
||||
{
|
||||
CanEditBatch = canEditBatch,
|
||||
CanEditPRProcess = canEditPRProcess,
|
||||
ThisSystemId = dr.GetInt32(0),
|
||||
Code = dr.GetString(1),
|
||||
Name = dr.GetString(2),
|
||||
BanglaName = dr.GetString(3),
|
||||
Address = dr.GetString(4),
|
||||
BanglaAddress = dr.GetString(5),
|
||||
PhoneNo = dr.GetString(6),
|
||||
MobileNo = dr.GetString(7),
|
||||
EmailAddress = dr.GetString(8),
|
||||
Website = dr.GetString(9),
|
||||
VatRegNo = dr.GetString(10),
|
||||
VatRate = dr.GetDecimal(11),
|
||||
PreventAttackPasswordReuse = !dr.IsDBNull(12) && dr.GetInt16(12) != 0,
|
||||
EnfStgPwd = dr.GetInt16(13) != 0,
|
||||
PwdMinLen = dr.GetInt16(14),
|
||||
PwdMaxLen = dr.GetInt16(15),
|
||||
DisallowLastPwds = dr.GetInt16(16),
|
||||
ExpiryDays = dr.GetInt16(17),
|
||||
MaxTryCount = dr.GetInt16(18),
|
||||
LockTime = dr.GetInt16(19),
|
||||
AppVersion = dr.GetString(20),
|
||||
AutoLogoutParams = dr.IsDBNull(21) ? "0,0,0" : dr.GetString(21),
|
||||
PwdReserveWords = dr.IsDBNull(22) ? string.Empty : dr.GetString(22),
|
||||
LoginIdCantBePassword = !dr.IsDBNull(23) && dr.GetInt16(23) != 0,
|
||||
BatchEnabled = !dr.IsDBNull(24) && dr.GetInt16(24) != 0,
|
||||
BmProcessId = dr.IsDBNull(25) ? 0 : dr.GetInt16(25),
|
||||
PrProcessId = dr.IsDBNull(26) ? 0 : dr.GetInt16(26)
|
||||
};
|
||||
}
|
||||
dr.Close();
|
||||
}
|
||||
|
||||
tc.End();
|
||||
}
|
||||
catch (Exception ie)
|
||||
{
|
||||
tc?.HandleError();
|
||||
|
||||
throw DBCustomError.GenerateCustomError(ie);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="Exception"></exception>
|
||||
public async Task<WOTermsResponse> GetWOTermsAsync()
|
||||
{
|
||||
WOTermsResponse response = new() { ReturnStatus = 200 };
|
||||
try
|
||||
{
|
||||
using TransactionContext tc = await TransactionContext.BeginAsync(_settings.DefaultConnection.ConnectionNode);
|
||||
try
|
||||
{
|
||||
using IDataReader dr = tc.ExecuteReader("SELECT ItemId, PaymentTerms, TermsAndConditions FROM WOTerms");
|
||||
if (dr.Read())
|
||||
{
|
||||
response = new WOTermsResponse
|
||||
{
|
||||
ItemId = dr.GetInt32(0),
|
||||
PaymentTerms = dr.GetString(1),
|
||||
TermsAndConditions = dr.GetString(2)
|
||||
};
|
||||
}
|
||||
dr.Close();
|
||||
|
||||
tc.End();
|
||||
}
|
||||
catch (Exception ie)
|
||||
{
|
||||
tc?.HandleError();
|
||||
|
||||
throw DBCustomError.GenerateCustomError(ie);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="ipAddress"></param>
|
||||
/// <param name="modifiedBy"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<bool> SaveAsync(ThisSystemRequest request, string ipAddress, int modifiedBy)
|
||||
{
|
||||
bool returnValue = false;
|
||||
try
|
||||
{
|
||||
using TransactionContext tc = await TransactionContext.BeginAsync(_settings.DefaultConnection.ConnectionNode, true);
|
||||
try
|
||||
{
|
||||
SqlParameter[] p =
|
||||
[
|
||||
SqlHelperExtension.CreateInParam(pName: "@Code", pType: SqlDbType.VarChar, pValue: request.Code, size: 15),
|
||||
SqlHelperExtension.CreateInParam(pName: "@Name", pType: SqlDbType.VarChar, pValue: request.Name, size: 50),
|
||||
SqlHelperExtension.CreateInParam(pName: "@BanglaName", pType: SqlDbType.NVarChar, pValue: request.BanglaName, size: 50),
|
||||
SqlHelperExtension.CreateInParam(pName: "@Address", pType: SqlDbType.VarChar, pValue: request.Address, size: 150),
|
||||
SqlHelperExtension.CreateInParam(pName: "@BanglaAddress", pType: SqlDbType.NVarChar, pValue: request.BanglaAddress, size: 150),
|
||||
SqlHelperExtension.CreateInParam(pName: "@PhoneNo", pType: SqlDbType.VarChar, pValue: request.PhoneNo, size: 50),
|
||||
SqlHelperExtension.CreateInParam(pName: "@MobileNo", pType: SqlDbType.VarChar, pValue: request.MobileNo, size: 50),
|
||||
SqlHelperExtension.CreateInParam(pName: "@EmailAddress", pType: SqlDbType.VarChar, pValue: request.EmailAddress ?? string.Empty, size: 50),
|
||||
SqlHelperExtension.CreateInParam(pName: "@Website", pType: SqlDbType.VarChar, pValue: request.Website, size: 100),
|
||||
SqlHelperExtension.CreateInParam(pName: "@VatRegNo", pType: SqlDbType.VarChar, pValue: request.VatRegNo, size: 30),
|
||||
SqlHelperExtension.CreateInParam(pName: "@VatRate", pType: SqlDbType.Money, pValue: request.VatRate),
|
||||
SqlHelperExtension.CreateInParam(pName: "@EnfStgPwd", pType: SqlDbType.SmallInt, pValue: request.EnfStgPwd ? 1 : 0),
|
||||
SqlHelperExtension.CreateInParam(pName: "@PwdMinLen", pType: SqlDbType.SmallInt, pValue: request.PwdMinLen),
|
||||
SqlHelperExtension.CreateInParam(pName: "@PwdMaxLen", pType: SqlDbType.SmallInt, pValue: request.PwdMaxLen),
|
||||
SqlHelperExtension.CreateInParam(pName: "@DALastPwds", pType: SqlDbType.SmallInt, pValue: request.DisallowLastPwds),
|
||||
SqlHelperExtension.CreateInParam(pName: "@ExpiryDays", pType: SqlDbType.SmallInt, pValue: request.ExpiryDays),
|
||||
SqlHelperExtension.CreateInParam(pName: "@MaxTryCount", pType: SqlDbType.SmallInt, pValue: request.MaxTryCount),
|
||||
SqlHelperExtension.CreateInParam(pName: "@LockTime", pType: SqlDbType.SmallInt, pValue: request.LockTime),
|
||||
SqlHelperExtension.CreateInParam(pName: "@PrvntAtckPwdReuse", pType: SqlDbType.SmallInt, pValue: request.PreventAttackPasswordReuse?1: 0),
|
||||
SqlHelperExtension.CreateInParam(pName: "@AppVersion", pType: SqlDbType.VarChar, pValue: request.AppVersion, size: 11),
|
||||
SqlHelperExtension.CreateInParam(pName: "@AutoLogoutParams", pType: SqlDbType.VarChar, pValue: request.AutoLogoutParams, size: 15),
|
||||
SqlHelperExtension.CreateInParam(pName: "@PwdReserveWords", pType: SqlDbType.VarChar, pValue: request.PwdReserveWords, size: 150),
|
||||
SqlHelperExtension.CreateInParam(pName: "@LoginIdCantPwd", pType: SqlDbType.SmallInt, pValue: request.LoginIdCantBePassword ? 1 : 0),
|
||||
SqlHelperExtension.CreateInParam(pName: "@BatchEnabled", pType: SqlDbType.SmallInt, pValue: request.BatchEnabled ? 1 : 0),
|
||||
SqlHelperExtension.CreateInParam(pName: "@BmProcessId", pType: SqlDbType.SmallInt, pValue: request.BmProcessId),
|
||||
SqlHelperExtension.CreateInParam(pName: "@PrProcessId", pType: SqlDbType.SmallInt, pValue: request.PrProcessId),
|
||||
SqlHelperExtension.CreateInParam(pName: "@IpAddress", pType: SqlDbType.VarChar, pValue: ipAddress, size: 20),
|
||||
SqlHelperExtension.CreateInParam(pName: "@ModifiedBy", pType: SqlDbType.Int, pValue: modifiedBy)
|
||||
];
|
||||
_ = tc.ExecuteNonQuerySp("dbo.UpdateThisSystem", p);
|
||||
|
||||
tc.End();
|
||||
|
||||
returnValue = true;
|
||||
}
|
||||
catch (Exception ie)
|
||||
{
|
||||
tc?.HandleError();
|
||||
|
||||
throw DBCustomError.GenerateCustomError(ie);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="ipAddress"></param>
|
||||
/// <param name="savedBy"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="Exception"></exception>
|
||||
public async Task<bool> SaveWOTermsAsync(WOTermsRequest request, string ipAddress, int savedBy)
|
||||
{
|
||||
bool returnValue = false;
|
||||
try
|
||||
{
|
||||
using TransactionContext tc = await TransactionContext.BeginAsync(_settings.DefaultConnection.ConnectionNode, true);
|
||||
try
|
||||
{
|
||||
SqlParameter[] p =
|
||||
[
|
||||
SqlHelperExtension.CreateInParam(pName: "@PaymentTerms", pType: SqlDbType.NVarChar, pValue: request.PaymentTerms, size: 2000),
|
||||
SqlHelperExtension.CreateInParam(pName: "@TermsAndConditions", pType: SqlDbType.NVarChar, pValue: request.TermsAndConditions, size: 2000),
|
||||
SqlHelperExtension.CreateInParam(pName: "@IpAddress", pType: SqlDbType.VarChar, pValue: ipAddress, size: 20),
|
||||
SqlHelperExtension.CreateInParam(pName: "@SavedBy", pType: SqlDbType.Int, pValue: savedBy)
|
||||
];
|
||||
_ = tc.ExecuteNonQuerySp("dbo.SaveWOTerms", p);
|
||||
|
||||
tc.End();
|
||||
|
||||
returnValue = true;
|
||||
}
|
||||
catch (Exception ie)
|
||||
{
|
||||
tc?.HandleError();
|
||||
|
||||
throw DBCustomError.GenerateCustomError(ie);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"version": 1,
|
||||
"isRoot": true,
|
||||
"tools": {}
|
||||
}
|
||||
52
Api/OnlineSalesAutoCrop.CoreAPI/.editorconfig
Normal file
52
Api/OnlineSalesAutoCrop.CoreAPI/.editorconfig
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
[*.cs]
|
||||
|
||||
# IDE0058: Expression value is never used
|
||||
csharp_style_unused_value_expression_statement_preference = unused_local_variable:silent
|
||||
|
||||
[*.{cs,vb}]
|
||||
#### Naming styles ####
|
||||
|
||||
# Naming rules
|
||||
|
||||
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
|
||||
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
|
||||
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
|
||||
|
||||
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
|
||||
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
|
||||
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
|
||||
|
||||
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
|
||||
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
|
||||
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
|
||||
|
||||
# Symbol specifications
|
||||
|
||||
dotnet_naming_symbols.interface.applicable_kinds = interface
|
||||
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
|
||||
dotnet_naming_symbols.interface.required_modifiers =
|
||||
|
||||
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
|
||||
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
|
||||
dotnet_naming_symbols.types.required_modifiers =
|
||||
|
||||
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
|
||||
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
|
||||
dotnet_naming_symbols.non_field_members.required_modifiers =
|
||||
|
||||
# Naming styles
|
||||
|
||||
dotnet_naming_style.begins_with_i.required_prefix = I
|
||||
dotnet_naming_style.begins_with_i.required_suffix =
|
||||
dotnet_naming_style.begins_with_i.word_separator =
|
||||
dotnet_naming_style.begins_with_i.capitalization = pascal_case
|
||||
|
||||
dotnet_naming_style.pascal_case.required_prefix =
|
||||
dotnet_naming_style.pascal_case.required_suffix =
|
||||
dotnet_naming_style.pascal_case.word_separator =
|
||||
dotnet_naming_style.pascal_case.capitalization = pascal_case
|
||||
|
||||
dotnet_naming_style.pascal_case.required_prefix =
|
||||
dotnet_naming_style.pascal_case.required_suffix =
|
||||
dotnet_naming_style.pascal_case.word_separator =
|
||||
dotnet_naming_style.pascal_case.capitalization = pascal_case
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Services.Contracts.Setups;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Services.Contracts.Systems;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Services.Services.Setups;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Services.Services.Systems;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Configuration.DI
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static class ServiceCollectionExtensions
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="services"></param>
|
||||
public static void ConfigureBusinessServices(this IServiceCollection services)
|
||||
{
|
||||
if (services == null)
|
||||
return;
|
||||
|
||||
services.AddSingleton<IEaseCache, EaseCache>();
|
||||
services.AddTransient<IUserService, UserService>();
|
||||
services.AddTransient<IParamTypeService, ParamTypeService>();
|
||||
services.AddTransient<IThisSystemService, ThisSystemService>();
|
||||
services.AddTransient<IAuthModulesService, AuthModulesService>();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
280
Api/OnlineSalesAutoCrop.CoreAPI/Configurations/FileValidator.cs
Normal file
280
Api/OnlineSalesAutoCrop.CoreAPI/Configurations/FileValidator.cs
Normal file
|
|
@ -0,0 +1,280 @@
|
|||
using Microsoft.AspNetCore.Http;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Configurations
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="Acceptable"></param>
|
||||
/// <param name="Status"></param>
|
||||
/// <param name="Message"></param>
|
||||
public record Result(bool Acceptable, Status Status, string Message);
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public enum Status
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
GENUINE,
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
FAKE,
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
NOTSUPPORTED
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public abstract class FileFormatDescriptor
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
protected FileFormatDescriptor()
|
||||
{
|
||||
Initialize();
|
||||
MaxMagicNumberLength = MagicNumbers.Max(m => m.Length);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
protected abstract void Initialize();
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
protected HashSet<string> Extensions { get; } = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
protected List<byte[]> MagicNumbers { get; } = [];
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
protected int MaxMagicNumberLength { get; }
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
protected string TypeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="extension"></param>
|
||||
/// <returns></returns>
|
||||
public bool IsIncludedExtension(string extension) => Extensions.Contains(extension);
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="file"></param>
|
||||
/// <returns></returns>
|
||||
public Result Validate(IFormFile file)
|
||||
{
|
||||
using var stream = file.OpenReadStream();
|
||||
Span<byte> initialBytes = stackalloc byte[MaxMagicNumberLength];
|
||||
_ = stream.Read(initialBytes);
|
||||
foreach (var magicNumber in MagicNumbers)
|
||||
{
|
||||
if (initialBytes[..magicNumber.Length].SequenceCompareTo(magicNumber) == 0)
|
||||
{
|
||||
return new Result(true, Status.GENUINE, $"{Status.GENUINE} {TypeName}");
|
||||
}
|
||||
}
|
||||
|
||||
return new Result(false, Status.FAKE, $"{Status.FAKE} {TypeName}!");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class ImageFile : FileFormatDescriptor
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
protected override void Initialize()
|
||||
{
|
||||
TypeName = "IMAGE FILE";
|
||||
Extensions.UnionWith([".jpeg", ".jpg", ".png"]);
|
||||
MagicNumbers.AddRange(
|
||||
[
|
||||
[0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A],
|
||||
[0xFF, 0xD8, 0xFF, 0xE0],
|
||||
[0xFF, 0xD8, 0xFF, 0xE1],
|
||||
[0xFF, 0xD8, 0xFF, 0xE2],
|
||||
[0xFF, 0xD8, 0xFF, 0xE3]
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class PdfFile : FileFormatDescriptor
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
protected override void Initialize()
|
||||
{
|
||||
TypeName = "PDF FILE";
|
||||
Extensions.Add(".pdf");
|
||||
MagicNumbers.Add([0x25, 0x50, 0x44, 0x46]);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class ExcelFile : FileFormatDescriptor
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
protected override void Initialize()
|
||||
{
|
||||
TypeName = "EXCEL FILE";
|
||||
Extensions.UnionWith([".xls", ".doc", ".ppt"]);
|
||||
MagicNumbers.Add([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1]);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class ExcelxFile : FileFormatDescriptor
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
protected override void Initialize()
|
||||
{
|
||||
TypeName = "EXCEL FILE";
|
||||
Extensions.UnionWith([".xlsx"]);
|
||||
MagicNumbers.Add([0x50, 0x4B, 0x03, 0x04]);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static class ImageFileValidator
|
||||
{
|
||||
private static readonly List<FileFormatDescriptor> AllowedFormats = [new ImageFile()];
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="file"></param>
|
||||
/// <returns></returns>
|
||||
public static Result Validate(IFormFile file)
|
||||
{
|
||||
var fileExtension = Path.GetExtension(file.FileName);
|
||||
var targetType = AllowedFormats.FirstOrDefault(x => x.IsIncludedExtension(fileExtension));
|
||||
|
||||
if (targetType is null)
|
||||
{
|
||||
return new Result(false, Status.NOTSUPPORTED, $"{Status.NOTSUPPORTED}");
|
||||
}
|
||||
|
||||
return targetType.Validate(file);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static class PdfFileValidator
|
||||
{
|
||||
private static readonly List<FileFormatDescriptor> AllowedFormats = [new PdfFile()];
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="file"></param>
|
||||
/// <returns></returns>
|
||||
public static Result Validate(IFormFile file)
|
||||
{
|
||||
var fileExtension = Path.GetExtension(file.FileName);
|
||||
var targetType = AllowedFormats.FirstOrDefault(x => x.IsIncludedExtension(fileExtension));
|
||||
|
||||
if (targetType is null)
|
||||
{
|
||||
return new Result(false, Status.NOTSUPPORTED, $"{Status.NOTSUPPORTED}");
|
||||
}
|
||||
|
||||
return targetType.Validate(file);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static class ExcelFileValidator
|
||||
{
|
||||
private static readonly List<FileFormatDescriptor> AllowedFormats = [new ExcelFile()];
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="file"></param>
|
||||
/// <returns></returns>
|
||||
public static Result Validate(IFormFile file)
|
||||
{
|
||||
var fileExtension = Path.GetExtension(file.FileName);
|
||||
var targetType = AllowedFormats.FirstOrDefault(x => x.IsIncludedExtension(fileExtension));
|
||||
|
||||
if (targetType is null)
|
||||
{
|
||||
return new Result(false, Status.NOTSUPPORTED, $"{Status.NOTSUPPORTED}");
|
||||
}
|
||||
|
||||
return targetType.Validate(file);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static class ExcelxFileValidator
|
||||
{
|
||||
private static readonly List<FileFormatDescriptor> AllowedFormats = [new ExcelxFile()];
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="file"></param>
|
||||
/// <returns></returns>
|
||||
public static Result Validate(IFormFile file)
|
||||
{
|
||||
var fileExtension = Path.GetExtension(file.FileName);
|
||||
var targetType = AllowedFormats.FirstOrDefault(x => x.IsIncludedExtension(fileExtension));
|
||||
|
||||
if (targetType is null)
|
||||
{
|
||||
return new Result(false, Status.NOTSUPPORTED, $"{Status.NOTSUPPORTED}");
|
||||
}
|
||||
|
||||
return targetType.Validate(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.Filters;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Configurations
|
||||
{
|
||||
/// <summary>
|
||||
/// Use to validate has any session
|
||||
/// </summary>
|
||||
|
||||
[AttributeUsage(AttributeTargets.Method)]
|
||||
public class ValidateSessionAttribute : ActionFilterAttribute
|
||||
{
|
||||
private static readonly string[] message = ["Your session has been expired, Please login again..."];
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
/// <param name="next"></param>
|
||||
/// <returns></returns>
|
||||
public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
|
||||
{
|
||||
ISession session = context.HttpContext.Session;
|
||||
if (session?.Keys == null || !session.Keys.Any())
|
||||
{
|
||||
context.Result = new ObjectResult(new
|
||||
{
|
||||
ReturnStatus = StatusCodesExt.StatusSessionExpired,
|
||||
ReturnMessage = message
|
||||
})
|
||||
{
|
||||
StatusCode = StatusCodesExt.StatusSessionExpired
|
||||
};
|
||||
return;
|
||||
}
|
||||
|
||||
await next();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
using Hangfire.Server;
|
||||
using System;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Configurations
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="startHour"></param>
|
||||
/// <param name="endHour"></param>
|
||||
public class TimeRestrictionServerFilter(int startHour, int endHour) : IServerFilter
|
||||
{
|
||||
private readonly int _endHour = endHour;
|
||||
private readonly int _startHour = startHour;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
public void OnPerforming(PerformingContext context)
|
||||
{
|
||||
var now = DateTime.Now.Hour; // Use UTC or local time consistently
|
||||
|
||||
// Check if the current hour is within the restricted range (e.g., 1 AM to 7 AM)
|
||||
if (now >= _startHour && now < _endHour)
|
||||
{
|
||||
// Abort the processing of the current job
|
||||
context.Canceled = true;
|
||||
// Optional: Log that the job was skipped due to time restrictions
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
public void OnPerformed(PerformedContext context)
|
||||
{
|
||||
// No action needed after the job is performed
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,332 @@
|
|||
using Asp.Versioning;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Configurations;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Requests;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Requests.Setups;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Responses;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Responses.Setups;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Services.Contracts.Setups;
|
||||
using OnlineSalesAutoCrop.CoreAPI.SignalRHub;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Controllers.V1
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
[Authorize]
|
||||
[ApiController]
|
||||
[ApiVersion("1.0")]
|
||||
[ValidateAntiForgeryToken]
|
||||
[Route("api/v{version:apiVersion}/authModules")]
|
||||
public class AuthModulesController(IAuthModulesService service, IEaseCache cache, ILogger<AuthModulesController> logger, IHubContext<NotificationHub, INotificationHub> hub) : ControllerBase
|
||||
{
|
||||
private readonly ILogger _logger = logger;
|
||||
private readonly IEaseCache _cache = cache;
|
||||
private readonly IAuthModulesService _service = service;
|
||||
private readonly IHubContext<NotificationHub, INotificationHub> _hub = hub;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[ValidateSession]
|
||||
[HttpPost("getAuthSummaries")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(AuthSummariesResponse))]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent, Type = typeof(AuthSummariesResponse))]
|
||||
public async Task<IActionResult> GetAuthSummaries([FromBody] AuthSummaryRequest request)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(request);
|
||||
|
||||
AuthSummariesResponse response = new() { ReturnStatus = StatusCodes.Status200OK };
|
||||
try
|
||||
{
|
||||
int userId = HttpContext.User.GetClaimValue<int>(Constants.UserId);
|
||||
response = await _service.GetAuthSummariesAsync(userId: userId, status: request.Status, entryModule: 0);
|
||||
response.ReturnStatus = StatusCodes.Status200OK;
|
||||
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex);
|
||||
response.ReturnStatus = StatusCodes.Status500InternalServerError;
|
||||
response.ReturnMessage.Add(ex.InnerException != null ? ex.InnerException.Message : ex.Message);
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, response);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[ValidateSession]
|
||||
[HttpPost("getAuthDetails")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(AuthDetailsResponse))]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent, Type = typeof(AuthDetailsResponse))]
|
||||
public async Task<IActionResult> GetAuthDetails([FromBody] AuthDetailRequest request)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(request);
|
||||
|
||||
AuthDetailsResponse response = new() { ReturnStatus = StatusCodes.Status200OK };
|
||||
try
|
||||
{
|
||||
response = await _service.GetAuthDetailsAsync(moduleId: request.ModuleId, status: request.Status);
|
||||
response.ReturnStatus = StatusCodes.Status200OK;
|
||||
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex);
|
||||
response.ReturnStatus = StatusCodes.Status500InternalServerError;
|
||||
response.ReturnMessage.Add(ex.InnerException != null ? ex.InnerException.Message : ex.Message);
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, response);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[ValidateSession]
|
||||
[HttpPost("updateAuthStatus")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(BooleanResponse))]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent, Type = typeof(BooleanResponse))]
|
||||
public async Task<IActionResult> UpdateAuthStatus([FromBody] AuthUpdateRequest request)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(request);
|
||||
|
||||
BooleanResponse response = new() { ReturnStatus = StatusCodes.Status200OK };
|
||||
string key = GetPermissionKey(status: request.Status, description: out string description);
|
||||
bool permitted = await HttpContext.IsPermitted(key);
|
||||
if (!permitted)
|
||||
{
|
||||
response.ReturnStatus = StatusCodes.Status403Forbidden;
|
||||
response.ReturnMessage.Add($"You are not authorize to do {description}.");
|
||||
return StatusCode(StatusCodes.Status417ExpectationFailed, response);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
string ids = string.Join(',', request.Ids);
|
||||
int userId = HttpContext.User.GetClaimValue<int>(Constants.UserId);
|
||||
string ipAddress = Request.HttpContext.GetIpAddress();
|
||||
string loginId = HttpContext.User.GetClaimValue<string>(Constants.LoginId);
|
||||
response.Value = await _service.UpdateAuthStatusAsync(moduleId: request.ModuleId, ipAddress: ipAddress, remarks: request.Remarks, status: request.Status, userId: userId, loginId: loginId, ids: ids);
|
||||
response.ReturnStatus = StatusCodes.Status200OK;
|
||||
|
||||
#region Clear Cache
|
||||
switch (request.ModuleId)
|
||||
{
|
||||
case "ELIT.3.1.1":
|
||||
case "ELIT.3.1.2":
|
||||
_cache.Clear("ChartofAccount");
|
||||
break;
|
||||
|
||||
case "ELIT.1.5.1":
|
||||
case "ELIT.1.5.2":
|
||||
_cache.Clear("Client");
|
||||
break;
|
||||
|
||||
case "ELIT.1.5.8":
|
||||
_cache.Clear("BankBranch");
|
||||
break;
|
||||
|
||||
case "ELIT.1.5.9":
|
||||
case "ELIT.4.1.1":
|
||||
case "ELIT.4.1.2":
|
||||
case "ELIT.4.1.3":
|
||||
case "ELIT.5.1.6":
|
||||
case "ELIT.1.5.10":
|
||||
case "ELIT.6.1.6":
|
||||
_cache.Clear("GlCode");
|
||||
break;
|
||||
|
||||
case "ELIT.1.5.3":
|
||||
case "ELIT.1.5.4":
|
||||
case "ELIT.1.5.5":
|
||||
_cache.Clear("Employee");
|
||||
break;
|
||||
|
||||
case "ELIT.1.5.7":
|
||||
case "ELIT.6.1.5":
|
||||
_cache.Clear("Store");
|
||||
break;
|
||||
|
||||
case "ELIT.6.1.4":
|
||||
_cache.Clear("Location");
|
||||
break;
|
||||
|
||||
case "ELIT.5.1.1":
|
||||
_cache.Clear("ProductTypes");
|
||||
break;
|
||||
|
||||
case "ELIT.5.1.2":
|
||||
_cache.Clear("Products");
|
||||
break;
|
||||
|
||||
case "ELIT.6.1.1":
|
||||
_cache.Clear("AssetType");
|
||||
break;
|
||||
|
||||
case "ELIT.6.1.2":
|
||||
_cache.Clear("AssetCategory");
|
||||
break;
|
||||
|
||||
case "ELIT.6.1.3":
|
||||
_cache.Clear("AssetItem");
|
||||
break;
|
||||
|
||||
case "ELIT.7.1.3":
|
||||
_cache.Clear("Priority");
|
||||
break;
|
||||
|
||||
case "ELIT.7.1.4":
|
||||
_cache.Clear("TaskStatus");
|
||||
break;
|
||||
|
||||
case "ELIT.7.1.5":
|
||||
_cache.Clear("TaskCategory");
|
||||
break;
|
||||
|
||||
case "ELIT.7.1.6":
|
||||
_cache.Clear("TaskType");
|
||||
break;
|
||||
|
||||
case "ELIT.7.1.7":
|
||||
_cache.Clear("TeamSpace");
|
||||
break;
|
||||
|
||||
case "ELIT.9.1.1":
|
||||
_cache.Clear("MarketHierarchy");
|
||||
break;
|
||||
|
||||
case "ELIT.9.1.2":
|
||||
_cache.Clear("Salespoint");
|
||||
break;
|
||||
|
||||
case "ELIT.9.1.3":
|
||||
_cache.Clear("ProductHierarchy");
|
||||
break;
|
||||
|
||||
case "ELIT.9.1.4":
|
||||
_cache.Clear("Brand");
|
||||
break;
|
||||
|
||||
case "ELIT.9.1.5":
|
||||
_cache.Clear("Sku");
|
||||
break;
|
||||
|
||||
case "ELIT.9.1.6":
|
||||
_cache.Clear("ChannelHierarchy");
|
||||
break;
|
||||
|
||||
case "ELIT.9.1.7":
|
||||
_cache.Clear("Customer");
|
||||
break;
|
||||
|
||||
case "ELIT.9.1.8":
|
||||
_cache.Clear("SalesOfficer");
|
||||
break;
|
||||
|
||||
case "ELIT.9.1.12":
|
||||
_cache.Clear("ExtnlProduct");
|
||||
break;
|
||||
|
||||
case "ELIT.9.1.13":
|
||||
_cache.Clear("SalesPromotion");
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endregion
|
||||
|
||||
if (request.Status == 8)
|
||||
{
|
||||
await _hub.Clients.All.NotifySubscriber(userId: userId, msgType: 5, itemId: 0, ipAddress: ipAddress);
|
||||
}
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex);
|
||||
response.ReturnStatus = StatusCodes.Status500InternalServerError;
|
||||
response.ReturnMessage.Add(ex.InnerException != null ? ex.InnerException.Message : ex.Message);
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, response);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[ValidateSession]
|
||||
[HttpPost("getPendingAuths")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(PendingAuthResponse))]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent, Type = typeof(PendingAuthResponse))]
|
||||
public async Task<IActionResult> GetPendingAuths([FromBody] NoContentRequest request)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(request);
|
||||
|
||||
PendingAuthResponse response = new() { ReturnStatus = StatusCodes.Status200OK };
|
||||
try
|
||||
{
|
||||
int userId = HttpContext.User.GetClaimValue<int>(Constants.UserId);
|
||||
response = await _service.GetPendingAuthsAsync(userId: userId);
|
||||
response.ReturnStatus = StatusCodes.Status200OK;
|
||||
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex);
|
||||
response.ReturnStatus = StatusCodes.Status500InternalServerError;
|
||||
response.ReturnMessage.Add(ex.InnerException != null ? ex.InnerException.Message : ex.Message);
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, response);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="status"></param>
|
||||
/// <param name="description"></param>
|
||||
/// <returns></returns>
|
||||
private static string GetPermissionKey(short status, out string description)
|
||||
{
|
||||
string permissionKey;
|
||||
switch (status)
|
||||
{
|
||||
case 16:
|
||||
permissionKey = "ELIT.2.3_2";
|
||||
description = "Deactivation";
|
||||
break;
|
||||
|
||||
case 8:
|
||||
permissionKey = "ELIT.2.2_2";
|
||||
description = "Authorization";
|
||||
break;
|
||||
|
||||
default:
|
||||
permissionKey = "ELIT.2.1_2";
|
||||
description = "Authentication";
|
||||
break;
|
||||
}
|
||||
|
||||
return permissionKey;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,269 @@
|
|||
using Asp.Versioning;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Configurations;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Requests;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Requests.Systems;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Responses;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Responses.Systems;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Services.Contracts.Systems;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI.Controllers.V1
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
///
|
||||
/// </remarks>
|
||||
/// <param name="service"></param>
|
||||
/// <param name="cache"></param>
|
||||
/// <param name="logger"></param>
|
||||
[Authorize]
|
||||
[ApiController]
|
||||
[ApiVersion("1.0")]
|
||||
[ValidateAntiForgeryToken]
|
||||
[Route("api/v{version:apiVersion}/thisSystems")]
|
||||
|
||||
public class ThisSystemController(IThisSystemService service, IEaseCache cache, ILogger<ThisSystemController> logger) : ControllerBase
|
||||
{
|
||||
private readonly ILogger _logger = logger;
|
||||
private readonly IEaseCache _cache = cache;
|
||||
private readonly IThisSystemService _service = service;
|
||||
private readonly DateTimeOffset _options = Helper.CreateEaseCacheOptions();
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[ValidateSession]
|
||||
[HttpPost("saveThisSystem")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(BooleanResponse))]
|
||||
public async Task<IActionResult> SaveThisSystem([FromBody] ThisSystemRequest request)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(request);
|
||||
|
||||
BooleanResponse response = new() { ReturnStatus = StatusCodes.Status200OK };
|
||||
if (HttpContext.IsSessionExpired())
|
||||
{
|
||||
response.ReturnStatus = StatusCodes.Status401Unauthorized;
|
||||
response.ReturnMessage.Add("Session expired, Please Login again...");
|
||||
return StatusCode(StatusCodes.Status401Unauthorized, response);
|
||||
}
|
||||
|
||||
bool permitted = await HttpContext.IsPermitted(moduleId: "ELIT.1.1_2");
|
||||
if (!permitted)
|
||||
{
|
||||
response.ReturnStatus = StatusCodes.Status403Forbidden;
|
||||
response.ReturnMessage.Add("You are not authorize to Update System Information.");
|
||||
return StatusCode(StatusCodes.Status417ExpectationFailed, response);
|
||||
}
|
||||
|
||||
if (request.PwdMinLen > request.PwdMaxLen)
|
||||
{
|
||||
response.ReturnStatus = StatusCodes.Status417ExpectationFailed;
|
||||
response.ReturnMessage.Add("Maximum length of password can not be less Minimum length of password");
|
||||
return StatusCode(StatusCodes.Status417ExpectationFailed, response);
|
||||
}
|
||||
|
||||
if (request.EnfStgPwd && request.PwdMinLen < 6)
|
||||
{
|
||||
response.ReturnStatus = StatusCodes.Status417ExpectationFailed;
|
||||
response.ReturnMessage.Add("For Strong Password minimum length of password can not be less 6");
|
||||
return StatusCode(StatusCodes.Status417ExpectationFailed, response);
|
||||
}
|
||||
|
||||
string[] tokens = request.AutoLogoutParams.Split(',');
|
||||
if (tokens.Length != 3)
|
||||
{
|
||||
response.ReturnStatus = StatusCodes.Status417ExpectationFailed;
|
||||
response.ReturnMessage.Add("Must be comma delimited 3 parameters (Idle, timeout and ping) in seconds.");
|
||||
return StatusCode(StatusCodes.Status417ExpectationFailed, response);
|
||||
}
|
||||
|
||||
if (tokens.Length == 3)
|
||||
{
|
||||
if (!int.TryParse(tokens[0], out int tmValue))
|
||||
{
|
||||
response.ReturnStatus = StatusCodes.Status417ExpectationFailed;
|
||||
response.ReturnMessage.Add("Idle parameter must be numeric (between 0 to 9999).");
|
||||
return StatusCode(StatusCodes.Status417ExpectationFailed, response);
|
||||
}
|
||||
if (tmValue < 0 || tmValue > 9999)
|
||||
{
|
||||
response.ReturnStatus = StatusCodes.Status417ExpectationFailed;
|
||||
response.ReturnMessage.Add($"Idle [{tmValue}] parameter must be between 0 to 9999.");
|
||||
return StatusCode(StatusCodes.Status417ExpectationFailed, response);
|
||||
}
|
||||
|
||||
if (!int.TryParse(tokens[1], out tmValue))
|
||||
{
|
||||
response.ReturnStatus = StatusCodes.Status417ExpectationFailed;
|
||||
response.ReturnMessage.Add("Timeout parameter must be numeric (between 0 to 9999).");
|
||||
return StatusCode(StatusCodes.Status417ExpectationFailed, response);
|
||||
}
|
||||
if (tmValue < 0 || tmValue > 9999)
|
||||
{
|
||||
response.ReturnStatus = StatusCodes.Status417ExpectationFailed;
|
||||
response.ReturnMessage.Add($"Timeout [{tmValue}] parameter must be between 0 to 9999.");
|
||||
return StatusCode(StatusCodes.Status417ExpectationFailed, response);
|
||||
}
|
||||
|
||||
if (!int.TryParse(tokens[2], out tmValue))
|
||||
{
|
||||
response.ReturnStatus = StatusCodes.Status417ExpectationFailed;
|
||||
response.ReturnMessage.Add("Ping parameter must be numeric (between 0 to 9999).");
|
||||
return StatusCode(StatusCodes.Status417ExpectationFailed, response);
|
||||
}
|
||||
if (tmValue < 0 || tmValue > 9999)
|
||||
{
|
||||
response.ReturnStatus = StatusCodes.Status417ExpectationFailed;
|
||||
response.ReturnMessage.Add($"Ping [{tmValue}] parameter must be between 0 to 9999.");
|
||||
return StatusCode(StatusCodes.Status417ExpectationFailed, response);
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
string ipAddress = Request.HttpContext.GetIpAddress();
|
||||
int userId = HttpContext.User.GetClaimValue<int>(Constants.UserId);
|
||||
response.Value = await _service.SaveAsync(request: request, ipAddress: ipAddress, modifiedBy: userId);
|
||||
response.ReturnMessage.Add("System Information saved successfully...");
|
||||
|
||||
//Cache
|
||||
_cache.Clear("ThisSystem");
|
||||
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex);
|
||||
response.ReturnStatus = StatusCodes.Status500InternalServerError;
|
||||
response.ReturnMessage.Add(ex.InnerException != null ? ex.InnerException.Message : ex.Message);
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, response);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[ValidateSession]
|
||||
[HttpPost("getThisSystem")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(ThisSystemResponse))]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent, Type = typeof(ThisSystemResponse))]
|
||||
public async Task<IActionResult> GetThisSystem([FromBody] NoContentRequest request)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(request);
|
||||
|
||||
ThisSystemResponse response = new() { ReturnStatus = StatusCodes.Status200OK };
|
||||
try
|
||||
{
|
||||
string key = "ThisSystem";
|
||||
string key2 = string.Empty;
|
||||
if (!_cache.TryGetValue(key: key, key2: key2, value: out response))
|
||||
{
|
||||
response = await _service.GetAsync();
|
||||
response.ReturnStatus = StatusCodes.Status200OK;
|
||||
|
||||
//Cache
|
||||
_ = _cache.Set(key: key, key2: key2, value: response, options: _options);
|
||||
}
|
||||
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex);
|
||||
response.ReturnStatus = StatusCodes.Status500InternalServerError;
|
||||
response.ReturnMessage.Add(ex.InnerException != null ? ex.InnerException.Message : ex.Message);
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, response);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[ValidateSession]
|
||||
[HttpPost("saveStandardTerms")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(BooleanResponse))]
|
||||
public async Task<IActionResult> SaveStandardTerms([FromBody] WOTermsRequest request)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(request);
|
||||
|
||||
BooleanResponse response = new() { ReturnStatus = StatusCodes.Status200OK };
|
||||
bool permitted = await HttpContext.IsPermitted("ELIT.5.1.3_1") || await HttpContext.IsPermitted("ELIT.5.1.3_2");
|
||||
if (!permitted)
|
||||
{
|
||||
response.ReturnStatus = StatusCodes.Status403Forbidden;
|
||||
response.ReturnMessage.Add("You are not authorize to Save Work Order terms & conditions.");
|
||||
return StatusCode(StatusCodes.Status417ExpectationFailed, response);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
string ipAddress = Request.HttpContext.GetIpAddress();
|
||||
int savedBy = HttpContext.User.GetClaimValue<int>(Constants.UserId);
|
||||
response.Value = await _service.SaveWOTermsAsync(request: request, ipAddress: ipAddress, savedBy: savedBy);
|
||||
response.ReturnMessage.Add("Work Order terms & conditions saved successfully...");
|
||||
|
||||
//Cache
|
||||
_cache.Clear("WOTerms");
|
||||
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex);
|
||||
response.ReturnStatus = StatusCodes.Status500InternalServerError;
|
||||
response.ReturnMessage.Add(ex.InnerException != null ? ex.InnerException.Message : ex.Message);
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, response);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[ValidateSession]
|
||||
[HttpPost("getStandardTerms")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(WOTermsResponse))]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent, Type = typeof(WOTermsResponse))]
|
||||
public async Task<IActionResult> GetStandardTerms([FromBody] NoContentRequest request)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(request);
|
||||
|
||||
WOTermsResponse response = new() { ReturnStatus = StatusCodes.Status200OK };
|
||||
try
|
||||
{
|
||||
string key = "WOTerms";
|
||||
string key2 = string.Empty;
|
||||
if (!_cache.TryGetValue(key: key, key2: key2, value: out response))
|
||||
{
|
||||
response = await _service.GetWOTermsAsync();
|
||||
response.ReturnStatus = StatusCodes.Status200OK;
|
||||
|
||||
//Cache
|
||||
_ = _cache.Set(key: key, key2: key2, value: response, options: _options);
|
||||
}
|
||||
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex);
|
||||
response.ReturnStatus = StatusCodes.Status500InternalServerError;
|
||||
response.ReturnMessage.Add(ex.InnerException != null ? ex.InnerException.Message : ex.Message);
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, response);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
2085
Api/OnlineSalesAutoCrop.CoreAPI/Controllers/V1/UserController.cs
Normal file
2085
Api/OnlineSalesAutoCrop.CoreAPI/Controllers/V1/UserController.cs
Normal file
File diff suppressed because it is too large
Load Diff
33
Api/OnlineSalesAutoCrop.CoreAPI/Dockerfile
Normal file
33
Api/OnlineSalesAutoCrop.CoreAPI/Dockerfile
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
# See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
|
||||
|
||||
# Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
|
||||
# For more information, please see https://aka.ms/containercompat
|
||||
|
||||
# This stage is used when running from VS in fast mode (Default for Debug configuration)
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:9.0-nanoserver-1809 AS base
|
||||
WORKDIR /app
|
||||
EXPOSE 8080
|
||||
|
||||
|
||||
# This stage is used to build the service project
|
||||
FROM mcr.microsoft.com/dotnet/sdk:9.0-nanoserver-1809 AS build
|
||||
ARG BUILD_CONFIGURATION=Release
|
||||
WORKDIR /src
|
||||
COPY ["Api/OnlineSalesAutoCrop.CoreAPI/OnlineSalesAutoCrop.CoreAPI.csproj", "Api/OnlineSalesAutoCrop.CoreAPI/"]
|
||||
COPY ["Api/OnlineSalesAutoCrop.CoreAPI.Models/OnlineSalesAutoCrop.CoreAPI.Models.csproj", "Api/OnlineSalesAutoCrop.CoreAPI.Models/"]
|
||||
COPY ["Api/OnlineSalesAutoCrop.CoreAPI.Services/OnlineSalesAutoCrop.CoreAPI.Services.csproj", "Api/OnlineSalesAutoCrop.CoreAPI.Services/"]
|
||||
RUN dotnet restore "./Api/OnlineSalesAutoCrop.CoreAPI/OnlineSalesAutoCrop.CoreAPI.csproj"
|
||||
COPY . .
|
||||
WORKDIR "/src/Api/OnlineSalesAutoCrop.CoreAPI"
|
||||
RUN dotnet build "./OnlineSalesAutoCrop.CoreAPI.csproj" -c %BUILD_CONFIGURATION% -o /app/build
|
||||
|
||||
# This stage is used to publish the service project to be copied to the final stage
|
||||
FROM build AS publish
|
||||
ARG BUILD_CONFIGURATION=Release
|
||||
RUN dotnet publish "./OnlineSalesAutoCrop.CoreAPI.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false
|
||||
|
||||
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
|
||||
FROM base AS final
|
||||
WORKDIR /app
|
||||
COPY --from=publish /app/publish .
|
||||
ENTRYPOINT ["dotnet", "OnlineSalesAutoCrop.CoreAPI.dll"]
|
||||
47
Api/OnlineSalesAutoCrop.CoreAPI/Helper/CacheHelper.cs
Normal file
47
Api/OnlineSalesAutoCrop.CoreAPI/Helper/CacheHelper.cs
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Global;
|
||||
using StackExchange.Redis;
|
||||
using System;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI
|
||||
{
|
||||
internal class CacheConnection
|
||||
{
|
||||
private readonly EnumCacheType cacheType;
|
||||
private readonly Lazy<ConnectionMultiplexer> lazyConnection;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="settings"></param>
|
||||
/// <exception cref="InvalidOperationException"></exception>
|
||||
internal CacheConnection(AppSettings settings)
|
||||
{
|
||||
try
|
||||
{
|
||||
cacheType = settings.CacheType;
|
||||
if (cacheType == EnumCacheType.Redis && !string.IsNullOrEmpty(settings.CacheUrl))
|
||||
{
|
||||
lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
|
||||
{
|
||||
return ConnectionMultiplexer.Connect(settings.CacheUrl);
|
||||
});
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
internal ConnectionMultiplexer Connection => lazyConnection?.Value;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
internal EnumCacheType CacheType => cacheType;
|
||||
}
|
||||
}
|
||||
237
Api/OnlineSalesAutoCrop.CoreAPI/Helper/EaseCache.cs
Normal file
237
Api/OnlineSalesAutoCrop.CoreAPI/Helper/EaseCache.cs
Normal file
|
|
@ -0,0 +1,237 @@
|
|||
using OnlineSalesAutoCrop.CoreAPI.Models;
|
||||
using OnlineSalesAutoCrop.CoreAPI.Models.Global;
|
||||
using Microsoft.Extensions.Caching.Distributed;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Newtonsoft.Json;
|
||||
using StackExchange.Redis;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI
|
||||
{
|
||||
/// <summary>
|
||||
/// Customized cache, it may be "Distributed Cache (Redis)" or "Memory Cache",
|
||||
/// it depends on value in appsettings.json file.
|
||||
/// If the value of "RedisCacheUrl" field is present it will use "Distributed Cache (Redis)."
|
||||
/// If the value of "SqlServerCacheUrl" field is present it will use "Distributed Cache (Sql Server)"
|
||||
/// otherwise it will use "Memory Cache".
|
||||
/// </summary>
|
||||
public interface IEaseCache : IEnumerable<KeyValuePair<string, object>>
|
||||
{
|
||||
/// <summary>
|
||||
/// Get cached object
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Any type of object</typeparam>
|
||||
/// <param name="key">Key to retrieve data</param>
|
||||
/// <param name="key2">2nd part of Key to retrieve data</param>
|
||||
/// <param name="value">Instance of an object type T</param>
|
||||
/// <returns>True if successful otherwise false</returns>
|
||||
bool TryGetValue<T>(string key, string key2, out T value);
|
||||
|
||||
/// <summary>
|
||||
/// Set object to cache
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Any type of object</typeparam>
|
||||
/// <param name="key">Key to set data to cache</param>
|
||||
/// <param name="key2">2nd part of Key to retrieve data</param>
|
||||
/// <param name="value">Instance of an object type T</param>
|
||||
/// <param name="options">How many time to keep in cache</param>
|
||||
/// <returns>True if successful otherwise false</returns>
|
||||
bool Set<T>(string key, string key2, T value, DateTimeOffset options);
|
||||
|
||||
/// <summary>
|
||||
/// Delete caches of matched pattern
|
||||
/// </summary>
|
||||
/// <param name="pattern">Pattern to search</param>
|
||||
void Clear(string pattern);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class EaseCache : IEaseCache
|
||||
{
|
||||
private readonly IDatabase _db;
|
||||
private readonly IServer _server;
|
||||
private readonly EnumCacheType _cacheType;
|
||||
private readonly IMemoryCache _memoryCache;
|
||||
private readonly IDistributedCache _distributedCache;
|
||||
private readonly ConcurrentBag<string> _distributedKeys = [];
|
||||
private readonly ConcurrentDictionary<string, ICacheEntry> _cacheEntries = new();
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="memoryCache"></param>
|
||||
/// <param name="distributedCache"></param>
|
||||
/// <param name="settings"></param>
|
||||
public EaseCache(IMemoryCache memoryCache, IDistributedCache distributedCache, IOptions<AppSettings> settings)
|
||||
{
|
||||
CacheConnection cacheCon = new(settings: settings.Value);
|
||||
|
||||
_cacheType = cacheCon.CacheType;
|
||||
if (_cacheType == EnumCacheType.Redis)
|
||||
{
|
||||
_db = cacheCon.Connection.GetDatabase();
|
||||
foreach (EndPoint endpoint in cacheCon.Connection.GetEndPoints(configuredOnly: true))
|
||||
{
|
||||
_server = cacheCon.Connection.GetServer(endpoint);
|
||||
}
|
||||
}
|
||||
else if (_cacheType == EnumCacheType.SqlServer)
|
||||
{
|
||||
_distributedCache = distributedCache;
|
||||
}
|
||||
else
|
||||
{
|
||||
_memoryCache = memoryCache;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="key2"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="options"></param>
|
||||
/// <returns></returns>
|
||||
public bool Set<T>(string key, string key2, T value, DateTimeOffset options)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(key2))
|
||||
key = $"{key}~{key2}";
|
||||
|
||||
if (_cacheType == EnumCacheType.Redis)
|
||||
{
|
||||
TimeSpan expiryTime = options.DateTime.Subtract(DateTime.Now);
|
||||
return _db.StringSet(key: key, value: JsonConvert.SerializeObject(value), expiry: expiryTime);
|
||||
}
|
||||
else if (_cacheType == EnumCacheType.SqlServer)
|
||||
{
|
||||
_distributedKeys.Add(key);
|
||||
DistributedCacheEntryOptions expiryTime = new() { SlidingExpiration = options.DateTime.Subtract(DateTime.Now) };
|
||||
_distributedCache.SetString(key: key, value: JsonConvert.SerializeObject(value), options: expiryTime);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
using ICacheEntry entry = _memoryCache.CreateEntry(key);
|
||||
entry.RegisterPostEvictionCallback(PostEvictionCallback);
|
||||
_cacheEntries.AddOrUpdate(key: key, addValue: entry, (o, cacheEntry) =>
|
||||
{
|
||||
cacheEntry.Value = entry;
|
||||
return cacheEntry;
|
||||
});
|
||||
entry.AbsoluteExpiration = options;
|
||||
entry.Value = value;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="reason"></param>
|
||||
/// <param name="state"></param>
|
||||
private void PostEvictionCallback(object key, object value, EvictionReason reason, object state)
|
||||
{
|
||||
if (_cacheType == EnumCacheType.InMemory && reason != EvictionReason.Replaced)
|
||||
{
|
||||
_cacheEntries.TryRemove(key: $"{key}", value: out _);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="key2"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
public bool TryGetValue<T>(string key, string key2, out T value)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(key2))
|
||||
key = $"{key}~{key2}";
|
||||
|
||||
if (_cacheType == EnumCacheType.Redis)
|
||||
{
|
||||
RedisValue keyValue = _db.StringGet(key);
|
||||
if (string.IsNullOrEmpty(keyValue))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
value = JsonConvert.DeserializeObject<T>(keyValue);
|
||||
return true;
|
||||
}
|
||||
else if (_cacheType == EnumCacheType.SqlServer)
|
||||
{
|
||||
string keyValue = _distributedCache.GetString(key);
|
||||
if (string.IsNullOrEmpty(keyValue))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
value = JsonConvert.DeserializeObject<T>(keyValue);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return _memoryCache.TryGetValue(key: key, value: out value);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Delete caches of matched pattern
|
||||
/// </summary>
|
||||
/// <param name="pattern">Pattern to search</param>
|
||||
public void Clear(string pattern)
|
||||
{
|
||||
if (_cacheType == EnumCacheType.Redis)
|
||||
{
|
||||
foreach (RedisKey key in _server.Keys(pattern: $"*{pattern}*"))
|
||||
{
|
||||
_db.KeyDelete(key: key);
|
||||
}
|
||||
}
|
||||
else if (_cacheType == EnumCacheType.SqlServer)
|
||||
{
|
||||
foreach (string key in _distributedKeys.Where(key => key.Contains(pattern, StringComparison.OrdinalIgnoreCase)))
|
||||
{
|
||||
_distributedCache.Remove(key: key);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (string key in _cacheEntries.Keys.Where(key => key.Contains(pattern, StringComparison.CurrentCultureIgnoreCase)))
|
||||
{
|
||||
_memoryCache.Remove(key: key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public IEnumerator<KeyValuePair<string, object>> GetEnumerator() => _cacheEntries.Select(pair => new KeyValuePair<string, object>(pair.Key, pair.Value.Value)).GetEnumerator();
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
|
||||
}
|
||||
}
|
||||
295
Api/OnlineSalesAutoCrop.CoreAPI/Helper/ExtensionMethods.cs
Normal file
295
Api/OnlineSalesAutoCrop.CoreAPI/Helper/ExtensionMethods.cs
Normal file
|
|
@ -0,0 +1,295 @@
|
|||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Linq;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Security.Claims;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static class ExtensionMethods
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="principal"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
public static T GetClaimValue<T>(this ClaimsPrincipal principal, string type)
|
||||
{
|
||||
if (principal?.Identity == null || !principal.Identity.IsAuthenticated)
|
||||
return typeof(T) == typeof(string) ? ((T)Convert.ChangeType(string.Empty, typeof(T))) : default;
|
||||
|
||||
Claim claim = principal.Claims.SingleOrDefault(p => p.Type == type);
|
||||
if (string.IsNullOrEmpty(claim?.Value))
|
||||
return typeof(T) == typeof(string) ? ((T)Convert.ChangeType(string.Empty, typeof(T))) : default;
|
||||
|
||||
return (T)Convert.ChangeType(claim.Value, typeof(T));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="session"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<bool> SetModulesToSession<T>(this ISession session, string key, T value)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(session);
|
||||
|
||||
try
|
||||
{
|
||||
string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(value);
|
||||
session.SetString(key: key, value: jsonString);
|
||||
await session.CommitAsync();
|
||||
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
/// <param name="moduleId"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<bool> IsPermitted(this HttpContext context, string moduleId)
|
||||
{
|
||||
if (context?.Session is null)
|
||||
return false;
|
||||
|
||||
string key = context.GetAuthenticationToken();
|
||||
if (string.IsNullOrEmpty(key))
|
||||
return false;
|
||||
|
||||
await context.Session.LoadAsync();
|
||||
string moduleIds = context.Session.GetString(key: key);
|
||||
if (string.IsNullOrEmpty(moduleIds))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
List<string> value = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(moduleIds);
|
||||
return value.Contains(moduleId);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="moduleId"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<bool> IsPermitted(this List<string> value, string moduleId)
|
||||
{
|
||||
if (value?.Count <= 0)
|
||||
return false;
|
||||
|
||||
try
|
||||
{
|
||||
return value.Contains(moduleId);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsSessionExpired(this HttpContext context)
|
||||
{
|
||||
if (context?.Session is null)
|
||||
return true;
|
||||
|
||||
string key = context.GetAuthenticationToken();
|
||||
if (string.IsNullOrEmpty(key))
|
||||
return true;
|
||||
|
||||
string moduleIds = context.Session.GetString(key: key);
|
||||
if (string.IsNullOrEmpty(moduleIds))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<bool> ClearSessionAsync(this HttpContext context)
|
||||
{
|
||||
if (context?.Session is null)
|
||||
return false;
|
||||
|
||||
context.Session.Clear();
|
||||
await context.Session.CommitAsync();
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetAuthenticationToken(this HttpContext context)
|
||||
{
|
||||
if (context == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Attempt to retrieve the "Authorization" header
|
||||
if (context.Request.Headers.TryGetValue("Authorization", out StringValues authHeaderValues))
|
||||
{
|
||||
var authHeader = authHeaderValues.FirstOrDefault();
|
||||
// Parse the header using AuthenticationHeaderValue
|
||||
if (authHeader != null && AuthenticationHeaderValue.TryParse(authHeader, out AuthenticationHeaderValue authHeaderValue))
|
||||
{
|
||||
// For Bearer tokens, the scheme is "Bearer" and the parameter is the token
|
||||
if (authHeaderValue.Scheme.Equals("Bearer", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return authHeaderValue.Parameter;
|
||||
}
|
||||
// For Basic authentication, the scheme is "Basic" and the parameter is base64 encoded credentials
|
||||
else if (authHeaderValue.Scheme.Equals("Basic", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
// You would then typically decode this parameter to get username and password
|
||||
return authHeaderValue.Parameter;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetIpAddress(this HttpContext context)
|
||||
{
|
||||
string ip = GetHeaderValueAs<string>(context: context, headerName: "X-Forwarded-For").SplitCsv().FirstOrDefault();
|
||||
if (string.IsNullOrEmpty(ip) && context?.Connection?.RemoteIpAddress != null)
|
||||
{
|
||||
ip = context?.Connection?.RemoteIpAddress.ToString();
|
||||
if (string.IsNullOrEmpty(ip))
|
||||
{
|
||||
ip = GetHeaderValueAs<string>(context: context, headerName: "REMOTE_ADDR");
|
||||
if (string.IsNullOrEmpty(ip))
|
||||
ip = context.Request?.Host.Value;
|
||||
}
|
||||
}
|
||||
|
||||
return ip ?? string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="context"></param>
|
||||
/// <param name="headerName"></param>
|
||||
/// <returns></returns>
|
||||
private static T GetHeaderValueAs<T>(HttpContext context, string headerName)
|
||||
{
|
||||
if (context.Request?.Headers?.TryGetValue(headerName, out StringValues values) ?? false)
|
||||
{
|
||||
string rawValues = values.ToString();
|
||||
|
||||
if (!string.IsNullOrEmpty(rawValues))
|
||||
return (T)Convert.ChangeType(values.ToString(), typeof(T));
|
||||
}
|
||||
return default;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="csvList"></param>
|
||||
/// <returns></returns>
|
||||
private static List<string> SplitCsv(this string csvList)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(csvList))
|
||||
return [];
|
||||
|
||||
return [.. csvList.TrimEnd(',').Split(',').AsEnumerable().Select(s => s.Trim())];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="textToCompress"></param>
|
||||
/// <returns></returns>
|
||||
public static string CompressString(this string textToCompress)
|
||||
{
|
||||
byte[] bytes = Encoding.UTF8.GetBytes(textToCompress);
|
||||
using var ms = new MemoryStream();
|
||||
using (BrotliStream brotli = new(ms, CompressionLevel.Optimal))
|
||||
{
|
||||
brotli.Write(bytes, 0, bytes.Length);
|
||||
}
|
||||
return Convert.ToBase64String(ms.ToArray());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="textToDecompress"></param>
|
||||
/// <returns></returns>
|
||||
public static string DecompressString(this string textToDecompress)
|
||||
{
|
||||
byte[] bytes = Convert.FromBase64String(textToDecompress);
|
||||
using var ms = new MemoryStream(bytes);
|
||||
using var Brotli = new BrotliStream(ms, CompressionMode.Decompress);
|
||||
using var sr = new StreamReader(Brotli);
|
||||
return sr.ReadToEnd();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="textToDecompress"></param>
|
||||
/// <returns></returns>
|
||||
public static List<string> DecompressModuleIds(this string textToDecompress)
|
||||
{
|
||||
return textToDecompress.DecompressString().SplitCsv();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="logger"></param>
|
||||
/// <param name="exception"></param>
|
||||
public static void LogError(this ILogger logger, Exception exception)
|
||||
{
|
||||
logger.LogError(exception: exception, message: string.Empty);
|
||||
}
|
||||
}
|
||||
}
|
||||
97
Api/OnlineSalesAutoCrop.CoreAPI/Helper/Helper.cs
Normal file
97
Api/OnlineSalesAutoCrop.CoreAPI/Helper/Helper.cs
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
using Ease.NetCore.Utility;
|
||||
using Microsoft.Reporting.NETCore;
|
||||
using System;
|
||||
using System.Security.Claims;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static class Helper
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates a new claim with the specified type and value.
|
||||
/// </summary>
|
||||
/// <param name="type">The type of the claim, such as a role or permission identifier. Cannot be null or empty.</param>
|
||||
/// <param name="value">The value of the claim, representing the associated data for the specified type. Cannot be null or empty.</param>
|
||||
/// <returns>A <see cref="Claim"/> object initialized with the specified type and value.</returns>
|
||||
public static Claim CreateClaim(string type, string value)
|
||||
{
|
||||
return new Claim(type: type, value: value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="expirationInMinutes"></param>
|
||||
/// <returns></returns>
|
||||
public static DateTimeOffset CreateEaseCacheOptions(double expirationInMinutes = 1440)
|
||||
{
|
||||
return DateTime.Now.AddMinutes(expirationInMinutes);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Decrypt data by 128 bit AES encryption algorithm
|
||||
/// </summary>
|
||||
/// <param name="secret">Used to decrypt data</param>
|
||||
/// <param name="data">Value to decrypt and value must be Base64String</param>
|
||||
/// <returns>Return plain text data if successful otherwise throw error</returns>
|
||||
public static string DecryptData(string secret, string data)
|
||||
{
|
||||
if (data == null || data.Length <= 0)
|
||||
throw new ArgumentNullException(nameof(data));
|
||||
|
||||
if (secret == null || secret.Length <= 0)
|
||||
throw new ArgumentNullException(nameof(secret));
|
||||
|
||||
try
|
||||
{
|
||||
data = Global.CipherFunctions.DecryptByAES(privateKey: secret, publicKey: secret, data: data, input: 2, output: 3);
|
||||
}
|
||||
|
||||
catch
|
||||
{
|
||||
data = "*Key/Data Error*";
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="report"></param>
|
||||
/// <param name="format"></param>
|
||||
/// <param name="contentType"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="Exception"></exception>
|
||||
public static byte[] GenerateRdlcOutputFile(LocalReport report, string format, out string contentType)
|
||||
{
|
||||
try
|
||||
{
|
||||
byte[] bytes = report.Render(format: format, deviceInfo: null, mimeType: out contentType, encoding: out string _, fileNameExtension: out string _, streams: out string[] _, warnings: out Warning[] _);
|
||||
return bytes;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new InvalidOperationException(e.Message, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static partial class StatusCodesExt
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public const int PasswordChanged = 898;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public const int StatusSessionExpired = 899;
|
||||
}
|
||||
}
|
||||
10
Api/OnlineSalesAutoCrop.CoreAPI/Index.html
Normal file
10
Api/OnlineSalesAutoCrop.CoreAPI/Index.html
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Ease O2C .net Core9 </title>
|
||||
</head>
|
||||
<body>
|
||||
<h4>Ease O2C IS RUNNING</h4>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,246 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<Authors>S M Russel</Authors>
|
||||
<Company>Computer Ease Limited</Company>
|
||||
<Product>OnlineSalesAutoCrop.CoreAPI</Product>
|
||||
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
|
||||
<DockerDefaultTargetOS>Windows</DockerDefaultTargetOS>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<NoWarn>1701;1702</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Connected Services\**" />
|
||||
<Compile Remove="Controllers\V2\**" />
|
||||
<Compile Remove="wwwroot\**" />
|
||||
<Content Remove="Connected Services\**" />
|
||||
<Content Remove="Controllers\V2\**" />
|
||||
<Content Remove="wwwroot\**" />
|
||||
<EmbeddedResource Remove="Connected Services\**" />
|
||||
<EmbeddedResource Remove="Controllers\V2\**" />
|
||||
<EmbeddedResource Remove="wwwroot\**" />
|
||||
<None Remove="Connected Services\**" />
|
||||
<None Remove="Controllers\V2\**" />
|
||||
<None Remove="wwwroot\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Remove="web.config" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="Reports\rptAdvancePayment.rdlc" />
|
||||
<None Remove="Reports\rptBalanceSheet.rdlc" />
|
||||
<None Remove="Reports\rptBalanceSheetCompare.rdlc" />
|
||||
<None Remove="Reports\rptBankOrCashBook.rdlc" />
|
||||
<None Remove="Reports\rptCashflow.rdlc" />
|
||||
<None Remove="Reports\rptCashflowCompare.rdlc" />
|
||||
<None Remove="Reports\rptCashPurchase.rdlc" />
|
||||
<None Remove="Reports\rptDayBook.rdlc" />
|
||||
<None Remove="Reports\rptDayBookSummary.rdlc" />
|
||||
<None Remove="Reports\rptFAAddAsset.rdlc" />
|
||||
<None Remove="Reports\rptFAInstallation.rdlc" />
|
||||
<None Remove="Reports\rptFAReduceAsset.rdlc" />
|
||||
<None Remove="Reports\rptFASales.rdlc" />
|
||||
<None Remove="Reports\rptFATransfer.rdlc" />
|
||||
<None Remove="Reports\rptFAWriteOff.rdlc" />
|
||||
<None Remove="Reports\rptFixedAssetDepreciation.rdlc" />
|
||||
<None Remove="Reports\rptGRN.rdlc" />
|
||||
<None Remove="Reports\rptIncomeExpenditure.rdlc" />
|
||||
<None Remove="Reports\rptInvoice.rdlc" />
|
||||
<None Remove="Reports\rptInvoiceFAP2P.rdlc" />
|
||||
<None Remove="Reports\rptLedger.rdlc" />
|
||||
<None Remove="Reports\rptMonthlyTurnover.rdlc" />
|
||||
<None Remove="Reports\rptPaymentFAP2P.rdlc" />
|
||||
<None Remove="Reports\rptProfitLoss.rdlc" />
|
||||
<None Remove="Reports\rptProfitLossCompare.rdlc" />
|
||||
<None Remove="Reports\rptPurchaseOrder.rdlc" />
|
||||
<None Remove="Reports\rptStockTran.rdlc" />
|
||||
<None Remove="Reports\rptTrialBalance.rdlc" />
|
||||
<None Remove="Reports\rptVoucher.rdlc" />
|
||||
<None Remove="Reports\rptWorkOrder.rdlc" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="cel.ico" />
|
||||
<Content Include="Reports\rptAdvancePayment.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptBalanceSheet.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptBalanceSheetCompare.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptBankOrCashBook.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptCashflow.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptCashflowCompare.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptCashPurchase.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptDayBook.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptDayBookSummary.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptFAAddAsset.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptFAInstallation.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptFAReduceAsset.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptFASales.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptFATransfer.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptFAWriteOff.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptFixedAssetDepreciation.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptGRN.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptIncomeExpenditure.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptInvoice.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptInvoiceFAP2P.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptLedger.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptMonthlyTurnover.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptPaymentFAP2P.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptProfitLoss.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptProfitLossCompare.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptPurchaseOrder.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptStockTran.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptTrialBalance.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptVoucher.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Reports\rptWorkOrder.rdlc">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Asp.Versioning.Mvc.ApiExplorer" Version="10.0.0" />
|
||||
<PackageReference Include="Ease.NetCore" Version="2.1.4" />
|
||||
<PackageReference Include="Google.Cloud.Speech.V1" Version="3.9.0" />
|
||||
<PackageReference Include="Hangfire" Version="1.8.23" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.8" />
|
||||
<PackageReference Include="Microsoft.Extensions.Caching.SqlServer" Version="10.0.8" />
|
||||
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="10.0.8" />
|
||||
<PackageReference Include="OpenAI" Version="2.10.0" />
|
||||
<PackageReference Include="RabbitMQ.Client" Version="7.2.1" />
|
||||
<PackageReference Include="ReportViewerCore.NETCore" Version="15.1.33" />
|
||||
<PackageReference Include="Serilog.Extensions.Logging.File" Version="3.0.0" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="10.2.1" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="10.2.1" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="10.2.1" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUi" Version="10.2.1" />
|
||||
<PackageReference Include="System.DirectoryServices" Version="10.0.8" />
|
||||
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.18.0" />
|
||||
<PackageReference Include="System.ServiceModel.Duplex" Version="6.0.0" />
|
||||
<PackageReference Include="System.ServiceModel.Http" Version="10.0.652802" />
|
||||
<PackageReference Include="System.ServiceModel.NetTcp" Version="10.0.652802" />
|
||||
<PackageReference Include="System.ServiceModel.Primitives" Version="10.0.652802" />
|
||||
<PackageReference Include="System.ServiceModel.Security" Version="6.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="FileProcessFolder\" />
|
||||
<Folder Include="Logs\" />
|
||||
<Folder Include="UploadedFiles\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\OnlineSalesAutoCrop.CoreAPI.Models\OnlineSalesAutoCrop.CoreAPI.Models.csproj" />
|
||||
<ProjectReference Include="..\OnlineSalesAutoCrop.CoreAPI.Services\OnlineSalesAutoCrop.CoreAPI.Services.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<WCFMetadata Include="Connected Services" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Globals">
|
||||
<SccProjectName></SccProjectName>
|
||||
<SccProvider></SccProvider>
|
||||
<SccAuxPath></SccAuxPath>
|
||||
<SccLocalPath></SccLocalPath>
|
||||
<UserSecretsId>503f2393-8ec7-4681-85b2-dc86edb77199</UserSecretsId>
|
||||
<ApplicationIcon>cel.ico</ApplicationIcon>
|
||||
<DockerfileContext>..\..</DockerfileContext>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||
<TypeScriptTarget>ES6</TypeScriptTarget>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
|
||||
<TypeScriptTarget>ES6</TypeScriptTarget>
|
||||
<TypeScriptJSXEmit>None</TypeScriptJSXEmit>
|
||||
<TypeScriptModuleKind />
|
||||
<TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
|
||||
<TypeScriptNoImplicitAny>False</TypeScriptNoImplicitAny>
|
||||
<TypeScriptRemoveComments>False</TypeScriptRemoveComments>
|
||||
<TypeScriptOutFile />
|
||||
<TypeScriptOutDir />
|
||||
<TypeScriptGeneratesDeclarations>False</TypeScriptGeneratesDeclarations>
|
||||
<TypeScriptNoEmitOnError>True</TypeScriptNoEmitOnError>
|
||||
<TypeScriptSourceMap>True</TypeScriptSourceMap>
|
||||
<TypeScriptMapRoot />
|
||||
<TypeScriptSourceRoot />
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||
<DocumentationFile>obj\Debug\netcoreapp3.1\OnlineSalesAutoCrop.CoreAPI.xml</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ProjectExtensions><VisualStudio><UserProperties appsettings_1json__JsonSchema="" /></VisualStudio></ProjectExtensions>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<NameOfLastUsedPublishProfile>D:\Local\EaseBilling\Api\EaseO2C.CoreAPI\Properties\PublishProfiles\Windows.Publish.pubxml</NameOfLastUsedPublishProfile>
|
||||
<ActiveDebugProfile>IIS Express</ActiveDebugProfile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
74
Api/OnlineSalesAutoCrop.CoreAPI/Program.cs
Normal file
74
Api/OnlineSalesAutoCrop.CoreAPI/Program.cs
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
|
||||
namespace OnlineSalesAutoCrop.CoreAPI
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class Program
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
protected Program()
|
||||
{
|
||||
//Noting to do here
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
bool hasError = false;
|
||||
IHost host = CreateHostBuilder(args).Build();
|
||||
ILogger<Program> logger = host.Services.GetRequiredService<ILogger<Program>>();
|
||||
try
|
||||
{
|
||||
logger.LogInformation("Starting the application...");
|
||||
host.Run();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
hasError = true;
|
||||
logger.LogCritical(exception: e, message: "Application terminated unexpectedly.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (hasError)
|
||||
{
|
||||
logger.LogCritical(message: "Application encountered an error.");
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.LogInformation(message: "Application was started.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
public static IHostBuilder CreateHostBuilder(string[] args) =>
|
||||
Host.CreateDefaultBuilder(args)
|
||||
.ConfigureLogging(logging =>
|
||||
{
|
||||
logging.ClearProviders();
|
||||
logging.AddConsole();
|
||||
logging.AddDebug();
|
||||
})
|
||||
.ConfigureWebHostDefaults(webBuilder =>
|
||||
{
|
||||
webBuilder.UseIISIntegration();
|
||||
webBuilder.UseStartup<Startup>();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
|
||||
by editing this MSBuild file. In order to learn more about this please visit https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||
-->
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<WebPublishMethod>FileSystem</WebPublishMethod>
|
||||
<PublishProvider>FileSystem</PublishProvider>
|
||||
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
|
||||
<LastUsedPlatform>Any CPU</LastUsedPlatform>
|
||||
<SiteUrlToLaunchAfterPublish />
|
||||
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
|
||||
<ExcludeApp_Data>false</ExcludeApp_Data>
|
||||
<ProjectGuid>20ddab52-da1b-41f3-90e9-0883efc29c95</ProjectGuid>
|
||||
<publishUrl>D:\Local\EaseBilling\Deployment\Api</publishUrl>
|
||||
<DeleteExistingFiles>true</DeleteExistingFiles>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<SelfContained>false</SelfContained>
|
||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||
<PublishReadyToRun>true</PublishReadyToRun>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
|
||||
by editing this MSBuild file. In order to learn more about this please visit https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||
-->
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<_PublishTargetUrl>D:\Local\EaseBilling\Deployment\Api</_PublishTargetUrl>
|
||||
<History>True|2026-05-06T11:25:05.5263630Z||;True|2026-03-15T08:59:26.8862757+06:00||;False|2026-03-15T08:57:56.1101162+06:00||;True|2026-03-14T17:09:23.7076829+06:00||;False|2026-03-14T17:08:16.4923030+06:00||;True|2026-02-08T09:20:34.0831167+06:00||;True|2026-01-30T12:23:50.0237173+06:00||;True|2025-11-12T14:17:06.2307022+06:00||;False|2025-11-12T14:14:27.8832414+06:00||;True|2025-09-25T16:15:49.9946130+06:00||;True|2025-09-20T12:22:45.1255126+06:00||;True|2025-08-17T15:53:17.2270097+06:00||;True|2025-08-17T14:48:18.3529589+06:00||;True|2025-08-07T12:08:24.1050561+06:00||;False|2025-08-07T12:05:48.8009082+06:00||;True|2025-08-03T17:18:51.1008385+06:00||;True|2025-07-31T16:51:59.3175380+06:00||;True|2025-07-30T17:28:46.5087066+06:00||;True|2025-06-29T18:08:12.5889769+06:00||;True|2025-06-29T17:58:35.6473413+06:00||;True|2025-06-23T12:54:26.3884725+06:00||;True|2025-06-17T13:31:29.6019090+06:00||;True|2025-06-15T17:32:58.8800113+06:00||;True|2025-06-14T09:58:27.0452245+06:00||;False|2025-06-14T09:57:22.9732446+06:00||;True|2025-06-05T11:59:58.2905247+06:00||;False|2025-06-05T11:58:53.5868035+06:00||;True|2025-05-28T08:52:09.4080712+06:00||;True|2025-05-24T16:44:02.8576636+06:00||;True|2025-05-22T16:06:03.6424921+06:00||;True|2025-05-08T12:15:57.1704658+06:00||;True|2025-05-06T17:58:18.2130338+06:00||;True|2025-05-06T17:24:04.5378833+06:00||;True|2025-05-05T09:19:51.6110361+06:00||;True|2025-04-28T11:43:09.4666162+06:00||;True|2025-04-26T12:33:00.7429590+06:00||;True|2025-04-25T11:30:46.3791417+06:00||;True|2025-04-22T16:16:08.2122693+06:00||;True|2025-04-21T09:09:54.5468791+06:00||;True|2025-04-19T12:55:01.6251882+06:00||;True|2025-04-18T20:11:49.5252316+06:00||;True|2025-04-17T18:08:44.4742942+06:00||;True|2025-04-14T19:04:03.8022194+06:00||;True|2025-04-14T12:36:15.9198937+06:00||;True|2025-04-13T21:52:58.3995889+06:00||;True|2025-04-13T21:22:41.8976783+06:00||;False|2025-04-13T21:21:06.4416709+06:00||;True|2025-04-13T09:20:28.5710537+06:00||;True|2025-04-10T17:28:42.0560047+06:00||;True|2025-04-10T17:08:13.6899576+06:00||;True|2025-04-10T09:23:51.9121346+06:00||;False|2025-04-10T09:22:32.3774181+06:00||;True|2025-04-08T15:00:01.4594832+06:00||;True|2025-04-06T17:07:49.7187834+06:00||;True|2025-03-28T16:52:26.4264204+06:00||;True|2025-03-25T09:04:45.6712077+06:00||;True|2025-03-24T11:01:31.3766223+06:00||;True|2025-03-23T16:22:03.7871495+06:00||;True|2025-03-21T19:06:16.6539314+06:00||;True|2025-03-19T10:50:27.1248564+06:00||;True|2025-03-19T10:04:52.2351919+06:00||;True|2025-03-18T16:45:03.3648012+06:00||;True|2025-03-14T17:30:57.4444995+06:00||;True|2025-03-14T12:12:22.0834501+06:00||;False|2025-03-14T12:08:22.3149387+06:00||;True|2025-03-13T12:12:43.0015928+06:00||;False|2025-03-13T12:08:46.2254864+06:00||;True|2025-03-11T16:30:15.7645714+06:00||;True|2025-03-10T20:00:29.3910451+06:00||;True|2025-03-09T19:34:38.5798710+06:00||;True|2025-03-09T19:11:16.6478785+06:00||;False|2025-03-09T19:09:25.4916140+06:00||;True|2025-03-09T14:13:11.4931705+06:00||;False|2025-03-09T14:11:57.9713338+06:00||;True|2025-02-05T17:34:48.2088527+06:00||;True|2025-02-04T21:02:04.4639904+06:00||;True|2025-02-03T20:14:47.2959982+06:00||;True|2025-02-03T11:51:10.8667150+06:00||;True|2025-02-03T11:21:40.8436307+06:00||;True|2025-01-29T17:36:22.5959619+06:00||;True|2025-01-19T19:59:11.0866750+06:00||;True|2025-01-19T14:29:56.3042387+06:00||;True|2025-01-18T19:37:29.0120111+06:00||;False|2025-01-18T19:36:21.1797009+06:00||;True|2025-01-13T09:58:12.7255011+06:00||;True|2025-01-12T16:12:45.5633586+06:00||;True|2025-01-09T17:27:36.5615426+06:00||;True|2025-01-09T17:14:06.2461997+06:00||;True|2025-01-08T15:56:27.2254650+06:00||;True|2025-01-07T16:42:53.0937028+06:00||;True|2025-01-06T21:10:57.4064745+06:00||;True|2024-12-31T16:23:39.1605617+06:00||;True|2024-12-30T16:49:26.7010350+06:00||;True|2024-12-23T15:18:03.0555471+06:00||;False|2024-12-23T15:13:18.4393430+06:00||;False|2024-12-23T15:12:03.9555165+06:00||;False|2024-12-23T15:09:52.2534646+06:00||;False|2024-12-23T14:58:07.5228553+06:00||;False|2024-12-23T14:57:28.5435288+06:00||;False|2024-12-23T14:53:46.2896217+06:00||;</History>
|
||||
<LastFailureDetails />
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"$schema": "https://json.schemastore.org/launchsettings.json",
|
||||
"iisSettings": {
|
||||
"anonymousAuthentication": true,
|
||||
"windowsAuthentication": false,
|
||||
"iisExpress": {
|
||||
"applicationUrl": "http://localhost:4204/"
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"Docker": {
|
||||
"commandName": "Docker",
|
||||
"launchBrowser": true,
|
||||
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
|
||||
"publishAllPorts": true
|
||||
},
|
||||
"OnlineSalesAutoCrop.CoreAPI.API": {
|
||||
"commandName": "IISExpress",
|
||||
"launchBrowser": true,
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
},
|
||||
"applicationUrl": "http://localhost:4205/"
|
||||
},
|
||||
"IIS Express": {
|
||||
"commandName": "IISExpress",
|
||||
"launchBrowser": true,
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
},
|
||||
"nativeDebugging": false,
|
||||
"jsWebView2Debugging": false
|
||||
}
|
||||
}
|
||||
}
|
||||
1048
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptAdvancePayment.rdlc
Normal file
1048
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptAdvancePayment.rdlc
Normal file
File diff suppressed because it is too large
Load Diff
353
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptBalanceSheet.rdlc
Normal file
353
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptBalanceSheet.rdlc
Normal file
|
|
@ -0,0 +1,353 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
|
||||
<DataSources>
|
||||
<DataSource Name="DummyDataSource">
|
||||
<rd:DataSourceID>b2609be8-0a6d-4c06-94f8-d6e6880bca99</rd:DataSourceID>
|
||||
<ConnectionProperties>
|
||||
<DataProvider>SQL</DataProvider>
|
||||
<ConnectString />
|
||||
</ConnectionProperties>
|
||||
</DataSource>
|
||||
</DataSources>
|
||||
<InteractiveHeight>11in</InteractiveHeight>
|
||||
<ReportParameters>
|
||||
<ReportParameter Name="CompanyName">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramCompanyName</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Address">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramAddress</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="ProcessDate">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramProcessDate</Prompt>
|
||||
</ReportParameter>
|
||||
</ReportParameters>
|
||||
<rd:DrawGrid>true</rd:DrawGrid>
|
||||
<InteractiveWidth>8.5in</InteractiveWidth>
|
||||
<rd:GridSpacing>0.05in</rd:GridSpacing>
|
||||
<rd:SnapToGrid>false</rd:SnapToGrid>
|
||||
<RightMargin>0.4in</RightMargin>
|
||||
<LeftMargin>0.5in</LeftMargin>
|
||||
<BottomMargin>0.29in</BottomMargin>
|
||||
<rd:ReportID>ecd24c8c-626b-4815-b8fa-3df9c5252e67</rd:ReportID>
|
||||
<PageWidth>8.27in</PageWidth>
|
||||
<DataSets>
|
||||
<DataSet Name="ReportData_dtFinalAccount">
|
||||
<Fields>
|
||||
<Field Name="Description">
|
||||
<DataField>Description</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="CurrentAmount">
|
||||
<DataField>CurrentAmount</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PreviousAmount">
|
||||
<DataField>PreviousAmount</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="ItemLevel">
|
||||
<DataField>ItemLevel</DataField>
|
||||
<rd:TypeName>System.Int16</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PrintAmount">
|
||||
<DataField>PrintAmount</DataField>
|
||||
<rd:TypeName>System.Boolean</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PrintSubtotal">
|
||||
<DataField>PrintSubtotal</DataField>
|
||||
<rd:TypeName>System.Boolean</rd:TypeName>
|
||||
</Field>
|
||||
</Fields>
|
||||
<Query>
|
||||
<DataSourceName>DummyDataSource</DataSourceName>
|
||||
<CommandText />
|
||||
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
|
||||
</Query>
|
||||
<rd:DataSetInfo>
|
||||
<rd:DataSetName>ReportData</rd:DataSetName>
|
||||
<rd:TableName>dtFinalAccount</rd:TableName>
|
||||
</rd:DataSetInfo>
|
||||
</DataSet>
|
||||
</DataSets>
|
||||
<Code />
|
||||
<Width>7.32292in</Width>
|
||||
<Body>
|
||||
<ReportItems>
|
||||
<Table Name="table1">
|
||||
<DataSetName>ReportData_dtFinalAccount</DataSetName>
|
||||
<Details>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="Description">
|
||||
<rd:DefaultName>Description</rd:DefaultName>
|
||||
<Style>
|
||||
<FontStyle>=IIF(Cint(Fields!ItemLevel.Value)=3, "Italic", "Normal")</FontStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>1</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(Cint(Fields!ItemLevel.Value)=4, Space(5), Space((Cint(Fields!ItemLevel.Value)-1)*5)) & Fields!Description.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="CurrentAmount">
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Top>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Top>
|
||||
<Bottom>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
</BorderWidth>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(CBool(Fields!PrintAmount.Value), Fields!CurrentAmount.Value, "")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.19in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Details>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox7">
|
||||
<rd:DefaultName>textbox7</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>12pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>7</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!CompanyName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox5">
|
||||
<rd:DefaultName>textbox5</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>3</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Print Date & Time: " & Format(Now(), "dd MMM yyyy, hh:mm:ss tt")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox4">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>6</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!Address.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox9">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>11pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>5</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Balance Sheet</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox6">
|
||||
<rd:DefaultName>textbox6</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>4</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!ProcessDate.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.22in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox1">
|
||||
<rd:DefaultName>textbox1</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Header>
|
||||
<TableColumns>
|
||||
<TableColumn>
|
||||
<Width>4.91292in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.12in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.29in</Width>
|
||||
</TableColumn>
|
||||
</TableColumns>
|
||||
</Table>
|
||||
</ReportItems>
|
||||
<Height>1.36in</Height>
|
||||
</Body>
|
||||
<Language>en-US</Language>
|
||||
<PageFooter>
|
||||
<PrintOnFirstPage>true</PrintOnFirstPage>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox2">
|
||||
<Top>0.06875in</Top>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Page " & Globals!PageNumber & " of " & Globals!TotalPages</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
<Height>0.23875in</Height>
|
||||
<PrintOnLastPage>true</PrintOnLastPage>
|
||||
</PageFooter>
|
||||
<TopMargin>0.4in</TopMargin>
|
||||
<PageHeight>11.69in</PageHeight>
|
||||
</Report>
|
||||
|
|
@ -0,0 +1,459 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
|
||||
<DataSources>
|
||||
<DataSource Name="DummyDataSource">
|
||||
<rd:DataSourceID>b2609be8-0a6d-4c06-94f8-d6e6880bca99</rd:DataSourceID>
|
||||
<ConnectionProperties>
|
||||
<DataProvider>SQL</DataProvider>
|
||||
<ConnectString />
|
||||
</ConnectionProperties>
|
||||
</DataSource>
|
||||
</DataSources>
|
||||
<InteractiveHeight>11in</InteractiveHeight>
|
||||
<ReportParameters>
|
||||
<ReportParameter Name="CompanyName">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramCompanyName</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Address">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramAddress</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="PreviousDate">
|
||||
<DataType>DateTime</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramPreviousDate</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="CurrentDate">
|
||||
<DataType>DateTime</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramCurrentDate</Prompt>
|
||||
</ReportParameter>
|
||||
</ReportParameters>
|
||||
<rd:DrawGrid>true</rd:DrawGrid>
|
||||
<InteractiveWidth>8.5in</InteractiveWidth>
|
||||
<rd:GridSpacing>0.05in</rd:GridSpacing>
|
||||
<rd:SnapToGrid>false</rd:SnapToGrid>
|
||||
<RightMargin>0.4in</RightMargin>
|
||||
<LeftMargin>0.5in</LeftMargin>
|
||||
<BottomMargin>0.29in</BottomMargin>
|
||||
<rd:ReportID>ecd24c8c-626b-4815-b8fa-3df9c5252e67</rd:ReportID>
|
||||
<PageWidth>8.27in</PageWidth>
|
||||
<DataSets>
|
||||
<DataSet Name="ReportData_dtFinalAccount">
|
||||
<Fields>
|
||||
<Field Name="Description">
|
||||
<DataField>Description</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="CurrentAmount">
|
||||
<DataField>CurrentAmount</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PreviousAmount">
|
||||
<DataField>PreviousAmount</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="ItemLevel">
|
||||
<DataField>ItemLevel</DataField>
|
||||
<rd:TypeName>System.Int16</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PrintAmount">
|
||||
<DataField>PrintAmount</DataField>
|
||||
<rd:TypeName>System.Boolean</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PrintSubtotal">
|
||||
<DataField>PrintSubtotal</DataField>
|
||||
<rd:TypeName>System.Boolean</rd:TypeName>
|
||||
</Field>
|
||||
</Fields>
|
||||
<Query>
|
||||
<DataSourceName>DummyDataSource</DataSourceName>
|
||||
<CommandText />
|
||||
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
|
||||
</Query>
|
||||
<rd:DataSetInfo>
|
||||
<rd:DataSetName>ReportData</rd:DataSetName>
|
||||
<rd:TableName>dtFinalAccount</rd:TableName>
|
||||
</rd:DataSetInfo>
|
||||
</DataSet>
|
||||
</DataSets>
|
||||
<Code />
|
||||
<Width>7.32292in</Width>
|
||||
<Body>
|
||||
<ReportItems>
|
||||
<Table Name="table1">
|
||||
<DataSetName>ReportData_dtFinalAccount</DataSetName>
|
||||
<Details>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="Description">
|
||||
<rd:DefaultName>Description</rd:DefaultName>
|
||||
<Style>
|
||||
<FontStyle>=IIF(Cint(Fields!ItemLevel.Value)=3, "Italic", "Normal")</FontStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>4</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(Cint(Fields!ItemLevel.Value)=4, Space(5), Space((Cint(Fields!ItemLevel.Value)-1)*5)) & Fields!Description.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="CurrentAmount">
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Top>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Top>
|
||||
<Bottom>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
</BorderWidth>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>3</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(CBool(Fields!PrintAmount.Value), Fields!CurrentAmount.Value, "")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox6">
|
||||
<Style>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
</BorderWidth>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox4">
|
||||
<rd:DefaultName>textbox4</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Top>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Top>
|
||||
<Bottom>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
</BorderWidth>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>1</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(CBool(Fields!PrintAmount.Value), Fields!PreviousAmount.Value, "")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.19in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Details>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox21">
|
||||
<rd:DefaultName>textbox21</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>11pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextDecoration>Underline</TextDecoration>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!CompanyName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox9">
|
||||
<rd:DefaultName>textbox9</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Print Date & Time: " & Format(Now(), "dd MMM yyyy, hh:mm:ss tt")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox3">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!Address.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox19">
|
||||
<rd:DefaultName>textbox19</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>11pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextDecoration>Underline</TextDecoration>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox1">
|
||||
<rd:DefaultName>textbox1</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Right>Black</Right>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Right>Solid</Right>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Right>1pt</Right>
|
||||
</BorderWidth>
|
||||
<FontSize>11pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextDecoration>Underline</TextDecoration>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>9</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Balance Sheet Comparison</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox2">
|
||||
<rd:DefaultName>textbox2</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>8</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Format(Parameters!CurrentDate.Value,"dd.MM.yyyy")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox5">
|
||||
<rd:DefaultName>textbox5</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Right>Black</Right>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Right>Solid</Right>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Left>1pt</Left>
|
||||
<Right>1pt</Right>
|
||||
</BorderWidth>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>7</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox7">
|
||||
<rd:DefaultName>textbox7</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>6</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Format(Parameters!PreviousDate.Value,"dd.MM.yyyy")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.26in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
<RepeatOnNewPage>true</RepeatOnNewPage>
|
||||
</Header>
|
||||
<TableColumns>
|
||||
<TableColumn>
|
||||
<Width>4.82292in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.17in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.16in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.17in</Width>
|
||||
</TableColumn>
|
||||
</TableColumns>
|
||||
</Table>
|
||||
</ReportItems>
|
||||
<Height>1.15in</Height>
|
||||
</Body>
|
||||
<Language>en-US</Language>
|
||||
<PageFooter>
|
||||
<PrintOnFirstPage>true</PrintOnFirstPage>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox14">
|
||||
<Top>0.07292in</Top>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Page " & Globals!PageNumber & " of " & Globals!TotalPages</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
<Height>0.24209in</Height>
|
||||
<PrintOnLastPage>true</PrintOnLastPage>
|
||||
</PageFooter>
|
||||
<TopMargin>0.4in</TopMargin>
|
||||
<PageHeight>11.69in</PageHeight>
|
||||
</Report>
|
||||
977
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptBankOrCashBook.rdlc
Normal file
977
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptBankOrCashBook.rdlc
Normal file
|
|
@ -0,0 +1,977 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
|
||||
<DataSources>
|
||||
<DataSource Name="DummyDataSource">
|
||||
<rd:DataSourceID>696cb1ee-c179-477b-89ea-5748c2dd7a4e</rd:DataSourceID>
|
||||
<ConnectionProperties>
|
||||
<DataProvider>SQL</DataProvider>
|
||||
<ConnectString />
|
||||
</ConnectionProperties>
|
||||
</DataSource>
|
||||
</DataSources>
|
||||
<InteractiveHeight>7.7in</InteractiveHeight>
|
||||
<ReportParameters>
|
||||
<ReportParameter Name="CompanyName">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramCompanyName</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Address">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramAddress</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="StartDate">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramStartDate</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="EndDate">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramEndDate</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="BookType">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paremBookType</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="GLHead">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramGLHead</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="OpeningBalance">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramOpeningBalance</Prompt>
|
||||
</ReportParameter>
|
||||
</ReportParameters>
|
||||
<rd:DrawGrid>true</rd:DrawGrid>
|
||||
<InteractiveWidth>10.2in</InteractiveWidth>
|
||||
<rd:GridSpacing>0.05in</rd:GridSpacing>
|
||||
<rd:SnapToGrid>true</rd:SnapToGrid>
|
||||
<RightMargin>0.4in</RightMargin>
|
||||
<LeftMargin>0.5in</LeftMargin>
|
||||
<BottomMargin>0.29in</BottomMargin>
|
||||
<rd:ReportID>9dd1af5d-17a3-49eb-96b4-ff2d77a38b49</rd:ReportID>
|
||||
<EmbeddedImages>
|
||||
<EmbeddedImage Name="nec_logo">
|
||||
<MIMEType>image/bmp</MIMEType>
|
||||
<ImageData />
|
||||
</EmbeddedImage>
|
||||
</EmbeddedImages>
|
||||
<PageWidth>8.27in</PageWidth>
|
||||
<DataSets>
|
||||
<DataSet Name="ReportData_dtBankOrCashBook">
|
||||
<Fields>
|
||||
<Field Name="TranDate">
|
||||
<DataField>TranDate</DataField>
|
||||
<rd:TypeName>System.Date</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="VoucherNo">
|
||||
<DataField>VoucherNo</DataField>
|
||||
<rd:TypeName>System.Int32</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="VoucherRef">
|
||||
<DataField>VoucherRef</DataField>
|
||||
<rd:TypeName>System.Int32</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="AccountCode">
|
||||
<DataField>AccountCode</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="AccountName">
|
||||
<DataField>AccountName</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PaidAmount">
|
||||
<DataField>PaidAmount</DataField>
|
||||
<rd:TypeName>System.Double</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="ReceivedAmount">
|
||||
<DataField>ReceivedAmount</DataField>
|
||||
<rd:TypeName>System.Double</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="ClosingBalance">
|
||||
<DataField>ClosingBalance</DataField>
|
||||
<rd:TypeName>System.Double</rd:TypeName>
|
||||
</Field>
|
||||
</Fields>
|
||||
<Query>
|
||||
<DataSourceName>DummyDataSource</DataSourceName>
|
||||
<CommandText />
|
||||
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
|
||||
</Query>
|
||||
<rd:DataSetInfo>
|
||||
<rd:DataSetName>ReportData</rd:DataSetName>
|
||||
<rd:TableName>dtBankOrCashBook</rd:TableName>
|
||||
</rd:DataSetInfo>
|
||||
</DataSet>
|
||||
</DataSets>
|
||||
<Code />
|
||||
<Width>7.32292in</Width>
|
||||
<Body>
|
||||
<ReportItems>
|
||||
<Table Name="table1">
|
||||
<DataSetName>ReportData_dtBankOrCashBook</DataSetName>
|
||||
<Details>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="Date_1">
|
||||
<rd:DefaultName>Date_1</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<Format>dd MMM yyyy</Format>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>6</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!TranDate.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox12">
|
||||
<rd:DefaultName>textbox12</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>5</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!VoucherNo.Value & " " & Fields!VoucherRef.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="Description_1">
|
||||
<rd:DefaultName>Description_1</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>4</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!AccountCode.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox15">
|
||||
<rd:DefaultName>textbox15</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>3</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!AccountName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="PaidAmout">
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(Fields!PaidAmount.Value=0, "", Fields!PaidAmount.Value)</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="RcvdAmount">
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>1</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(Fields!ReceivedAmount.Value=0, "", Fields!ReceivedAmount.Value)</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox4">
|
||||
<rd:DefaultName>textbox4</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(Fields!ClosingBalance.Value<0, "(" & Format(Fields!ClosingBalance.Value,"#,##.00") & ")", Format(Fields!ClosingBalance.Value,"#,##.00"))</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Details>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox20">
|
||||
<rd:DefaultName>textbox20</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>12pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!CompanyName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox45">
|
||||
<rd:DefaultName>textbox45</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Print Date & Time: " & Format(Now(), "dd MMM yyyy, hh:mm:ss tt")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>7</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox29">
|
||||
<rd:DefaultName>textbox29</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!Address.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>7</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox57">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>11pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!BookType.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>7</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox16">
|
||||
<rd:DefaultName>textbox16</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Date range: " & Parameters!StartDate.Value & " to " & Parameters!EndDate.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>7</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox21">
|
||||
<rd:DefaultName>textbox21</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox8">
|
||||
<rd:DefaultName>textbox8</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>23</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Date</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox9">
|
||||
<rd:DefaultName>textbox9</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>22</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Reference</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox11">
|
||||
<rd:DefaultName>textbox11</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>21</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Posting Code</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox13">
|
||||
<rd:DefaultName>textbox13</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>20</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Description</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox17">
|
||||
<rd:DefaultName>textbox17</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>19</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Paid Amount</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox18">
|
||||
<rd:DefaultName>textbox18</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>18</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Received Amount</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox2">
|
||||
<rd:DefaultName>textbox2</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>17</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Balance</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.37in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox1">
|
||||
<rd:DefaultName>textbox1</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>White</BackgroundColor>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Top>Black</Top>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Left>1pt</Left>
|
||||
<Top>1pt</Top>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>16</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!GLHead.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox5">
|
||||
<rd:DefaultName>textbox5</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>White</BackgroundColor>
|
||||
<BorderColor>
|
||||
<Right>Black</Right>
|
||||
<Top>Black</Top>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Right>Solid</Right>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Right>1pt</Right>
|
||||
<Top>1pt</Top>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>15</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Balance B/F:</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox3">
|
||||
<rd:DefaultName>textbox3</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>White</BackgroundColor>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>14</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!OpeningBalance.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
<RepeatOnNewPage>true</RepeatOnNewPage>
|
||||
</Header>
|
||||
<TableColumns>
|
||||
<TableColumn>
|
||||
<Width>0.7in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.9in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.8in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>2.22292in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.9in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.9in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.9in</Width>
|
||||
</TableColumn>
|
||||
</TableColumns>
|
||||
<Footer>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox6">
|
||||
<rd:DefaultName>textbox6</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>13</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox10">
|
||||
<rd:DefaultName>textbox10</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>12</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox14">
|
||||
<rd:DefaultName>textbox14</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>11</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox19">
|
||||
<rd:DefaultName>textbox19</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Right>Black</Right>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Right>Solid</Right>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Right>1pt</Right>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>10</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="PaidAmount">
|
||||
<rd:DefaultName>PaidAmount</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>9</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Sum(Fields!PaidAmount.Value)</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="ReceivedAmount">
|
||||
<rd:DefaultName>ReceivedAmount</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>8</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Sum(Fields!ReceivedAmount.Value)</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox23">
|
||||
<rd:DefaultName>textbox23</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Left>1pt</Left>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>7</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Footer>
|
||||
</Table>
|
||||
</ReportItems>
|
||||
<Height>2.16in</Height>
|
||||
</Body>
|
||||
<Language>en-US</Language>
|
||||
<PageFooter>
|
||||
<PrintOnFirstPage>true</PrintOnFirstPage>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox7">
|
||||
<Top>0.06875in</Top>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Page " & Globals!PageNumber & " of " & Globals!TotalPages</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
<Height>0.23875in</Height>
|
||||
<PrintOnLastPage>true</PrintOnLastPage>
|
||||
</PageFooter>
|
||||
<TopMargin>0.5in</TopMargin>
|
||||
<PageHeight>11.69in</PageHeight>
|
||||
</Report>
|
||||
1516
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptCashPurchase.rdlc
Normal file
1516
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptCashPurchase.rdlc
Normal file
File diff suppressed because it is too large
Load Diff
350
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptCashflow.rdlc
Normal file
350
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptCashflow.rdlc
Normal file
|
|
@ -0,0 +1,350 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
|
||||
<DataSources>
|
||||
<DataSource Name="DummyDataSource">
|
||||
<rd:DataSourceID>b2609be8-0a6d-4c06-94f8-d6e6880bca99</rd:DataSourceID>
|
||||
<ConnectionProperties>
|
||||
<DataProvider>SQL</DataProvider>
|
||||
<ConnectString />
|
||||
</ConnectionProperties>
|
||||
</DataSource>
|
||||
</DataSources>
|
||||
<InteractiveHeight>11in</InteractiveHeight>
|
||||
<ReportParameters>
|
||||
<ReportParameter Name="CompanyName">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramCompanyName</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Address">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramAddress</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="ProcessDate">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramProcessDate</Prompt>
|
||||
</ReportParameter>
|
||||
</ReportParameters>
|
||||
<rd:DrawGrid>true</rd:DrawGrid>
|
||||
<InteractiveWidth>8.5in</InteractiveWidth>
|
||||
<rd:GridSpacing>0.05in</rd:GridSpacing>
|
||||
<rd:SnapToGrid>false</rd:SnapToGrid>
|
||||
<RightMargin>0.4in</RightMargin>
|
||||
<LeftMargin>0.5in</LeftMargin>
|
||||
<BottomMargin>0.29in</BottomMargin>
|
||||
<rd:ReportID>ecd24c8c-626b-4815-b8fa-3df9c5252e67</rd:ReportID>
|
||||
<PageWidth>8.27in</PageWidth>
|
||||
<DataSets>
|
||||
<DataSet Name="ReportData_dtFinalAccount">
|
||||
<Fields>
|
||||
<Field Name="Description">
|
||||
<DataField>Description</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="CurrentAmount">
|
||||
<DataField>CurrentAmount</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PreviousAmount">
|
||||
<DataField>PreviousAmount</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="ItemLevel">
|
||||
<DataField>ItemLevel</DataField>
|
||||
<rd:TypeName>System.Int16</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PrintAmount">
|
||||
<DataField>PrintAmount</DataField>
|
||||
<rd:TypeName>System.Boolean</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PrintSubtotal">
|
||||
<DataField>PrintSubtotal</DataField>
|
||||
<rd:TypeName>System.Boolean</rd:TypeName>
|
||||
</Field>
|
||||
</Fields>
|
||||
<Query>
|
||||
<DataSourceName>DummyDataSource</DataSourceName>
|
||||
<CommandText />
|
||||
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
|
||||
</Query>
|
||||
<rd:DataSetInfo>
|
||||
<rd:DataSetName>ReportData</rd:DataSetName>
|
||||
<rd:TableName>dtFinalAccount</rd:TableName>
|
||||
</rd:DataSetInfo>
|
||||
</DataSet>
|
||||
</DataSets>
|
||||
<Code />
|
||||
<Width>7.32292in</Width>
|
||||
<Body>
|
||||
<ReportItems>
|
||||
<Table Name="table1">
|
||||
<DataSetName>ReportData_dtFinalAccount</DataSetName>
|
||||
<Details>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="Description">
|
||||
<rd:DefaultName>Description</rd:DefaultName>
|
||||
<Style>
|
||||
<FontStyle>=IIF(Cint(Fields!ItemLevel.Value)=3, "Italic", "Normal")</FontStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>1</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Space((Cint(Fields!ItemLevel.Value)-1)*5) & IIF(Fields!Description.Value.ToString().ToLower().Equals("blank"), "" , Fields!Description.Value)</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="CurrentAmount">
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Top>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Top>
|
||||
<Bottom>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
</BorderWidth>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(CBool(Fields!PrintAmount.Value), Fields!CurrentAmount.Value, "")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.19in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Details>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox11">
|
||||
<Style>
|
||||
<FontSize>12pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>7</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!CompanyName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox15">
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>3</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Print Date & Time: " & Format(Now(), "dd MMM yyyy, hh:mm:ss tt")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox12">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>6</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!Address.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox13">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>11pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>5</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Cash Flow Statement</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox14">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>4</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!ProcessDate.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.22in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox17">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Header>
|
||||
<TableColumns>
|
||||
<TableColumn>
|
||||
<Width>4.91292in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.12in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.29in</Width>
|
||||
</TableColumn>
|
||||
</TableColumns>
|
||||
</Table>
|
||||
</ReportItems>
|
||||
<Height>1.36in</Height>
|
||||
</Body>
|
||||
<Language>en-US</Language>
|
||||
<PageFooter>
|
||||
<PrintOnFirstPage>true</PrintOnFirstPage>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox2">
|
||||
<Top>0.07167in</Top>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Page " & Globals!PageNumber & " of " & Globals!TotalPages</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
<Height>0.24167in</Height>
|
||||
<PrintOnLastPage>true</PrintOnLastPage>
|
||||
</PageFooter>
|
||||
<TopMargin>0.4in</TopMargin>
|
||||
<PageHeight>11.69in</PageHeight>
|
||||
</Report>
|
||||
444
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptCashflowCompare.rdlc
Normal file
444
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptCashflowCompare.rdlc
Normal file
|
|
@ -0,0 +1,444 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
|
||||
<DataSources>
|
||||
<DataSource Name="DummyDataSource">
|
||||
<rd:DataSourceID>b2609be8-0a6d-4c06-94f8-d6e6880bca99</rd:DataSourceID>
|
||||
<ConnectionProperties>
|
||||
<DataProvider>SQL</DataProvider>
|
||||
<ConnectString />
|
||||
</ConnectionProperties>
|
||||
</DataSource>
|
||||
</DataSources>
|
||||
<InteractiveHeight>11in</InteractiveHeight>
|
||||
<ReportParameters>
|
||||
<ReportParameter Name="CompanyName">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramCompanyName</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Address">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramAddress</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="PreviousDate">
|
||||
<DataType>DateTime</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramPreviousDate</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="CurrentDate">
|
||||
<DataType>DateTime</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramCurrentDate</Prompt>
|
||||
</ReportParameter>
|
||||
</ReportParameters>
|
||||
<rd:DrawGrid>true</rd:DrawGrid>
|
||||
<InteractiveWidth>8.5in</InteractiveWidth>
|
||||
<rd:GridSpacing>0.05in</rd:GridSpacing>
|
||||
<rd:SnapToGrid>false</rd:SnapToGrid>
|
||||
<RightMargin>0.4in</RightMargin>
|
||||
<LeftMargin>0.5in</LeftMargin>
|
||||
<BottomMargin>0.29in</BottomMargin>
|
||||
<rd:ReportID>ecd24c8c-626b-4815-b8fa-3df9c5252e67</rd:ReportID>
|
||||
<PageWidth>8.27in</PageWidth>
|
||||
<DataSets>
|
||||
<DataSet Name="ReportData_dtFinalAccount">
|
||||
<Fields>
|
||||
<Field Name="Description">
|
||||
<DataField>Description</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="CurrentAmount">
|
||||
<DataField>CurrentAmount</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PreviousAmount">
|
||||
<DataField>PreviousAmount</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="ItemLevel">
|
||||
<DataField>ItemLevel</DataField>
|
||||
<rd:TypeName>System.Int16</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PrintAmount">
|
||||
<DataField>PrintAmount</DataField>
|
||||
<rd:TypeName>System.Boolean</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PrintSubtotal">
|
||||
<DataField>PrintSubtotal</DataField>
|
||||
<rd:TypeName>System.Boolean</rd:TypeName>
|
||||
</Field>
|
||||
</Fields>
|
||||
<Query>
|
||||
<DataSourceName>DummyDataSource</DataSourceName>
|
||||
<CommandText />
|
||||
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
|
||||
</Query>
|
||||
<rd:DataSetInfo>
|
||||
<rd:DataSetName>ReportData</rd:DataSetName>
|
||||
<rd:TableName>dtFinalAccount</rd:TableName>
|
||||
</rd:DataSetInfo>
|
||||
</DataSet>
|
||||
</DataSets>
|
||||
<Code />
|
||||
<Width>7.32292in</Width>
|
||||
<Body>
|
||||
<ReportItems>
|
||||
<Table Name="table1">
|
||||
<DataSetName>ReportData_dtFinalAccount</DataSetName>
|
||||
<Details>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="Description">
|
||||
<rd:DefaultName>Description</rd:DefaultName>
|
||||
<Style>
|
||||
<FontStyle>=IIF(Cint(Fields!ItemLevel.Value)=3, "Italic", "Normal")</FontStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(Cint(Fields!ItemLevel.Value)=4, Space(5), Space((Cint(Fields!ItemLevel.Value)-1)*5)) & Fields!Description.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="CurrentAmount">
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Top>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Top>
|
||||
<Bottom>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Bottom>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>1</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(CBool(Fields!PrintAmount.Value), Fields!CurrentAmount.Value, "")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox7">
|
||||
<rd:DefaultName>textbox7</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox3">
|
||||
<rd:DefaultName>textbox3</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Top>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Top>
|
||||
<Bottom>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Bottom>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(CBool(Fields!PrintAmount.Value), Fields!PreviousAmount.Value, "")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.19in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Details>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox26">
|
||||
<Style>
|
||||
<FontSize>12pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!CompanyName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox1">
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Print Date & Time: " & Format(Now(), "dd MMM yyyy, hh:mm:ss tt")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox10">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!Address.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox11">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>11pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextDecoration>Underline</TextDecoration>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox2">
|
||||
<rd:DefaultName>textbox2</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Right>Black</Right>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Right>Solid</Right>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Right>1pt</Right>
|
||||
</BorderWidth>
|
||||
<FontSize>11pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextDecoration>Underline</TextDecoration>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Cash Flow Comparison</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox5">
|
||||
<rd:DefaultName>textbox5</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Format(Parameters!CurrentDate.Value,"dd.MM.yyyy")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox4">
|
||||
<rd:DefaultName>textbox4</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Right>Black</Right>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Right>Solid</Right>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Left>1pt</Left>
|
||||
<Right>1pt</Right>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox6">
|
||||
<rd:DefaultName>textbox6</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Format(Parameters!PreviousDate.Value, "dd.MM.yyyy")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.26in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
<RepeatOnNewPage>true</RepeatOnNewPage>
|
||||
</Header>
|
||||
<TableColumns>
|
||||
<TableColumn>
|
||||
<Width>4.82292in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.17in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.16in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.17in</Width>
|
||||
</TableColumn>
|
||||
</TableColumns>
|
||||
</Table>
|
||||
</ReportItems>
|
||||
<Height>1.13in</Height>
|
||||
</Body>
|
||||
<Language>en-US</Language>
|
||||
<PageFooter>
|
||||
<PrintOnFirstPage>true</PrintOnFirstPage>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox14">
|
||||
<Top>0.0725in</Top>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Page " & Globals!PageNumber & " of " & Globals!TotalPages</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
<Height>0.25208in</Height>
|
||||
<PrintOnLastPage>true</PrintOnLastPage>
|
||||
</PageFooter>
|
||||
<TopMargin>0.4in</TopMargin>
|
||||
<PageHeight>11.69in</PageHeight>
|
||||
</Report>
|
||||
761
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptDayBook.rdlc
Normal file
761
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptDayBook.rdlc
Normal file
|
|
@ -0,0 +1,761 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
|
||||
<DataSources>
|
||||
<DataSource Name="DummyDataSource">
|
||||
<rd:DataSourceID>696cb1ee-c179-477b-89ea-5748c2dd7a4e</rd:DataSourceID>
|
||||
<ConnectionProperties>
|
||||
<DataProvider>SQL</DataProvider>
|
||||
<ConnectString />
|
||||
</ConnectionProperties>
|
||||
</DataSource>
|
||||
</DataSources>
|
||||
<InteractiveHeight>7.7in</InteractiveHeight>
|
||||
<ReportParameters>
|
||||
<ReportParameter Name="CompanyName">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramCompanyName</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Address">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramAddress</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="StartDate">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramStartDate</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="EndDate">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramEndDate</Prompt>
|
||||
</ReportParameter>
|
||||
</ReportParameters>
|
||||
<rd:DrawGrid>true</rd:DrawGrid>
|
||||
<InteractiveWidth>10.2in</InteractiveWidth>
|
||||
<rd:GridSpacing>0.05in</rd:GridSpacing>
|
||||
<rd:SnapToGrid>true</rd:SnapToGrid>
|
||||
<RightMargin>0.4in</RightMargin>
|
||||
<LeftMargin>0.5in</LeftMargin>
|
||||
<BottomMargin>0.29in</BottomMargin>
|
||||
<rd:ReportID>9dd1af5d-17a3-49eb-96b4-ff2d77a38b49</rd:ReportID>
|
||||
<EmbeddedImages>
|
||||
<EmbeddedImage Name="nec_logo">
|
||||
<MIMEType>image/bmp</MIMEType>
|
||||
<ImageData />
|
||||
</EmbeddedImage>
|
||||
</EmbeddedImages>
|
||||
<PageWidth>8.27in</PageWidth>
|
||||
<DataSets>
|
||||
<DataSet Name="ReportData_dtDayBook">
|
||||
<Fields>
|
||||
<Field Name="TranDate">
|
||||
<DataField>TranDate</DataField>
|
||||
<rd:TypeName>System.Date</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="VoucherNo">
|
||||
<DataField>VoucherNo</DataField>
|
||||
<rd:TypeName>System.Int32</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="VoucherType">
|
||||
<DataField>VoucherType</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="VoucherRef">
|
||||
<DataField>VoucherRef</DataField>
|
||||
<rd:TypeName>System.Int32</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="AccountCode">
|
||||
<DataField>AccountCode</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="AccountName">
|
||||
<DataField>AccountName</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="DebitAmount">
|
||||
<DataField>DebitAmount</DataField>
|
||||
<rd:TypeName>System.Double</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="CreditAmount">
|
||||
<DataField>CreditAmount</DataField>
|
||||
<rd:TypeName>System.Double</rd:TypeName>
|
||||
</Field>
|
||||
</Fields>
|
||||
<Query>
|
||||
<DataSourceName>DummyDataSource</DataSourceName>
|
||||
<CommandText />
|
||||
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
|
||||
</Query>
|
||||
<rd:DataSetInfo>
|
||||
<rd:DataSetName>ReportData</rd:DataSetName>
|
||||
<rd:TableName>dtDayBook</rd:TableName>
|
||||
</rd:DataSetInfo>
|
||||
</DataSet>
|
||||
</DataSets>
|
||||
<Code />
|
||||
<Width>7.32292in</Width>
|
||||
<Body>
|
||||
<ReportItems>
|
||||
<Table Name="table1">
|
||||
<DataSetName>ReportData_dtDayBook</DataSetName>
|
||||
<TableGroups>
|
||||
<TableGroup>
|
||||
<Grouping Name="table1_Group1">
|
||||
<GroupExpressions>
|
||||
<GroupExpression>=Fields!TranDate.Value</GroupExpression>
|
||||
</GroupExpressions>
|
||||
</Grouping>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>7</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox22">
|
||||
<rd:DefaultName>textbox22</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Right>Black</Right>
|
||||
<Top>Black</Top>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Right>Solid</Right>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>1pt</Left>
|
||||
<Right>1pt</Right>
|
||||
<Top>1pt</Top>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<Format>dd MMM yyyy</Format>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>10</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!TranDate.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.22in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
<RepeatOnNewPage>true</RepeatOnNewPage>
|
||||
</Header>
|
||||
<Footer>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox5">
|
||||
<rd:DefaultName>textbox5</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>5pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>9</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Total on " & Format(Fields!TranDate.Value, "dd MMM yyyy")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox40">
|
||||
<rd:DefaultName>textbox40</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>7</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Sum(Fields!DebitAmount.Value)</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox41">
|
||||
<rd:DefaultName>textbox41</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>6</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Sum(Fields!CreditAmount.Value)</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.22in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Footer>
|
||||
</TableGroup>
|
||||
</TableGroups>
|
||||
<Details>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="Date_1">
|
||||
<rd:DefaultName>Date_1</rd:DefaultName>
|
||||
<HideDuplicates>table1_Group1</HideDuplicates>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>5</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!VoucherNo.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox12">
|
||||
<rd:DefaultName>textbox12</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>4</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!VoucherType.Value & " " & Fields!VoucherRef.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="Description_1">
|
||||
<rd:DefaultName>Description_1</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>3</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!AccountCode.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox15">
|
||||
<rd:DefaultName>textbox15</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!AccountName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="DebitEUR_1">
|
||||
<rd:DefaultName>DebitEUR_1</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>1</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!DebitAmount.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="CreditEUR_1">
|
||||
<rd:DefaultName>CreditEUR_1</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
<Left>Solid</Left>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Left>1pt</Left>
|
||||
</BorderWidth>
|
||||
<FontSize>8pt</FontSize>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!CreditAmount.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Details>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox20">
|
||||
<rd:DefaultName>textbox20</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>12pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!CompanyName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox45">
|
||||
<rd:DefaultName>textbox45</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Print Date & Time: " & Format(Now(), "dd MMM yyyy, hh:mm:ss tt")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>7</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox29">
|
||||
<rd:DefaultName>textbox29</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!Address.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>7</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox7">
|
||||
<rd:DefaultName>textbox7</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>11pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Day Book</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>7</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox16">
|
||||
<rd:DefaultName>textbox16</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Date range: " & Parameters!StartDate.Value & " to " & Parameters!EndDate.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>7</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox1">
|
||||
<rd:DefaultName>textbox1</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox8">
|
||||
<rd:DefaultName>textbox8</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>16</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Transaction Reference</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox9">
|
||||
<rd:DefaultName>textbox9</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>15</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Voucher Type & No</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox11">
|
||||
<rd:DefaultName>textbox11</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>14</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Posting Code</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox13">
|
||||
<rd:DefaultName>textbox13</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>13</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Description</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox17">
|
||||
<rd:DefaultName>textbox17</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>12</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Debit Amount</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox18">
|
||||
<rd:DefaultName>textbox18</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>11</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Credit Amount</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.37in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
<RepeatOnNewPage>true</RepeatOnNewPage>
|
||||
</Header>
|
||||
<TableColumns>
|
||||
<TableColumn>
|
||||
<Width>0.9in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.9in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.9in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>2.12292in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.7in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.9in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.9in</Width>
|
||||
</TableColumn>
|
||||
</TableColumns>
|
||||
</Table>
|
||||
</ReportItems>
|
||||
<Height>2.26in</Height>
|
||||
</Body>
|
||||
<Language>en-US</Language>
|
||||
<PageFooter>
|
||||
<PrintOnFirstPage>true</PrintOnFirstPage>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox50">
|
||||
<Top>0.06875in</Top>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Page " & Globals!PageNumber & " of " & Globals!TotalPages</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
<Height>0.23875in</Height>
|
||||
<PrintOnLastPage>true</PrintOnLastPage>
|
||||
</PageFooter>
|
||||
<TopMargin>0.4in</TopMargin>
|
||||
<PageHeight>11.69in</PageHeight>
|
||||
</Report>
|
||||
631
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptDayBookSummary.rdlc
Normal file
631
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptDayBookSummary.rdlc
Normal file
|
|
@ -0,0 +1,631 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
|
||||
<DataSources>
|
||||
<DataSource Name="DummyDataSource">
|
||||
<rd:DataSourceID>696cb1ee-c179-477b-89ea-5748c2dd7a4e</rd:DataSourceID>
|
||||
<ConnectionProperties>
|
||||
<DataProvider>SQL</DataProvider>
|
||||
<ConnectString />
|
||||
</ConnectionProperties>
|
||||
</DataSource>
|
||||
</DataSources>
|
||||
<InteractiveHeight>7.7in</InteractiveHeight>
|
||||
<ReportParameters>
|
||||
<ReportParameter Name="CompanyName">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramCompanyName</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="StartDate">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramStartDate</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="EndDate">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramEndDate</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Address">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramAddress</Prompt>
|
||||
</ReportParameter>
|
||||
</ReportParameters>
|
||||
<rd:DrawGrid>true</rd:DrawGrid>
|
||||
<InteractiveWidth>10.2in</InteractiveWidth>
|
||||
<rd:GridSpacing>0.05in</rd:GridSpacing>
|
||||
<rd:SnapToGrid>false</rd:SnapToGrid>
|
||||
<RightMargin>0.4in</RightMargin>
|
||||
<LeftMargin>0.5in</LeftMargin>
|
||||
<BottomMargin>0.29in</BottomMargin>
|
||||
<rd:ReportID>9dd1af5d-17a3-49eb-96b4-ff2d77a38b49</rd:ReportID>
|
||||
<EmbeddedImages>
|
||||
<EmbeddedImage Name="nec_logo">
|
||||
<MIMEType>image/bmp</MIMEType>
|
||||
<ImageData />
|
||||
</EmbeddedImage>
|
||||
</EmbeddedImages>
|
||||
<PageWidth>8.27in</PageWidth>
|
||||
<DataSets>
|
||||
<DataSet Name="ReportData_dtDayBookSummary">
|
||||
<Fields>
|
||||
<Field Name="TranDate">
|
||||
<DataField>TranDate</DataField>
|
||||
<rd:TypeName>System.Date</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="VoucherType">
|
||||
<DataField>VoucherType</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="VoucherNo">
|
||||
<DataField>VoucherNo</DataField>
|
||||
<rd:TypeName>System.Int32</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="DebitAmount">
|
||||
<DataField>DebitAmount</DataField>
|
||||
<rd:TypeName>System.Double</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="CreditAmount">
|
||||
<DataField>CreditAmount</DataField>
|
||||
<rd:TypeName>System.Double</rd:TypeName>
|
||||
</Field>
|
||||
</Fields>
|
||||
<Query>
|
||||
<DataSourceName>DummyDataSource</DataSourceName>
|
||||
<CommandText />
|
||||
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
|
||||
</Query>
|
||||
<rd:DataSetInfo>
|
||||
<rd:DataSetName>ReportData</rd:DataSetName>
|
||||
<rd:TableName>dtDayBookSummary</rd:TableName>
|
||||
</rd:DataSetInfo>
|
||||
</DataSet>
|
||||
</DataSets>
|
||||
<Code />
|
||||
<Width>7.32292in</Width>
|
||||
<Body>
|
||||
<ReportItems>
|
||||
<Table Name="table1">
|
||||
<DataSetName>ReportData_dtDayBookSummary</DataSetName>
|
||||
<TableGroups>
|
||||
<TableGroup>
|
||||
<Grouping Name="table1_Group1">
|
||||
<GroupExpressions>
|
||||
<GroupExpression>=Fields!TranDate.Value</GroupExpression>
|
||||
</GroupExpressions>
|
||||
</Grouping>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox9">
|
||||
<rd:DefaultName>textbox9</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>600</FontWeight>
|
||||
<Format>dd MMM yyyy</Format>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>7</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!TranDate.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.22in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
<RepeatOnNewPage>true</RepeatOnNewPage>
|
||||
</Header>
|
||||
<Footer>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox3">
|
||||
<rd:DefaultName>textbox3</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Right>Black</Right>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Right>Solid</Right>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Right>0.5pt</Right>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>600</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>5pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>6</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Total on " & Format(Fields!TranDate.Value, "dd MMM yyyy")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox53">
|
||||
<rd:DefaultName>textbox53</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Right>Black</Right>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Right>Solid</Right>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Right>0.5pt</Right>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>5</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Sum(Fields!DebitAmount.Value)</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox54">
|
||||
<rd:DefaultName>textbox54</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Right>Black</Right>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Right>Solid</Right>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Right>0.5pt</Right>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>4</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Sum(Fields!CreditAmount.Value)</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.22in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Footer>
|
||||
</TableGroup>
|
||||
</TableGroups>
|
||||
<Details>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="VoucherType">
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<Format>dd-MMM-yyyy</Format>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>3</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!VoucherType.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="VoucherNo">
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!VoucherNo.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="DebitAmount">
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>1</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!DebitAmount.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="CreditAmount">
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!CreditAmount.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Details>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox20">
|
||||
<rd:DefaultName>textbox20</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>12pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!CompanyName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox45">
|
||||
<rd:DefaultName>textbox45</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Print Date & Time: " & Format(Now(), "dd MMM yyyy, hh:mm:ss tt")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox29">
|
||||
<rd:DefaultName>textbox29</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!Address.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox8">
|
||||
<Style>
|
||||
<FontSize>11pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Day Book (Consolidated by Voucher Type)</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox5">
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Date range: " & Parameters!StartDate.Value & " to " & Parameters!EndDate.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.22in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox1">
|
||||
<rd:DefaultName>textbox1</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox10">
|
||||
<rd:DefaultName>textbox10</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>11</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Voucher Type</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox11">
|
||||
<rd:DefaultName>textbox11</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>10</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Transaction Reference</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox38">
|
||||
<rd:DefaultName>textbox38</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Debit Amount</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox13">
|
||||
<rd:DefaultName>textbox13</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>8</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Credit Amount</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
<RepeatOnNewPage>true</RepeatOnNewPage>
|
||||
</Header>
|
||||
<TableColumns>
|
||||
<TableColumn>
|
||||
<Width>1.75in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>2.07292in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.75in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.75in</Width>
|
||||
</TableColumn>
|
||||
</TableColumns>
|
||||
</Table>
|
||||
</ReportItems>
|
||||
<Height>2.04in</Height>
|
||||
</Body>
|
||||
<Language>en-US</Language>
|
||||
<PageFooter>
|
||||
<PrintOnFirstPage>true</PrintOnFirstPage>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox32">
|
||||
<Top>0.07125in</Top>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Page " & Globals!PageNumber & " of " & Globals!TotalPages</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
<Height>0.24125in</Height>
|
||||
<PrintOnLastPage>true</PrintOnLastPage>
|
||||
</PageFooter>
|
||||
<TopMargin>0.4in</TopMargin>
|
||||
<PageHeight>11.69in</PageHeight>
|
||||
</Report>
|
||||
1132
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptFAAddAsset.rdlc
Normal file
1132
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptFAAddAsset.rdlc
Normal file
File diff suppressed because it is too large
Load Diff
916
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptFAInstallation.rdlc
Normal file
916
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptFAInstallation.rdlc
Normal file
|
|
@ -0,0 +1,916 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
|
||||
<DataSources>
|
||||
<DataSource Name="DummyDataSource">
|
||||
<rd:DataSourceID>01800665-9863-429f-9a2f-b7d9eaec7b5d</rd:DataSourceID>
|
||||
<ConnectionProperties>
|
||||
<DataProvider>SQL</DataProvider>
|
||||
<ConnectString />
|
||||
</ConnectionProperties>
|
||||
</DataSource>
|
||||
</DataSources>
|
||||
<InteractiveHeight>11in</InteractiveHeight>
|
||||
<ReportParameters>
|
||||
<ReportParameter Name="CompanyName">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Company Name</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Address">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Address</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="InstallNo">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>InstallNo</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="InstallDate">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Installation Date</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="FAItemCode">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Fixed Asset Item Code</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="FAItemName">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Fixed Asset Item Name</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="InstallLocation">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Install Location</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="AssignedEmployee">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Assigned to Employee</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="AssignedDate">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Assigned Date</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Remarks">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Remarks</Prompt>
|
||||
</ReportParameter>
|
||||
</ReportParameters>
|
||||
<rd:DrawGrid>true</rd:DrawGrid>
|
||||
<InteractiveWidth>8.5in</InteractiveWidth>
|
||||
<rd:SnapToGrid>true</rd:SnapToGrid>
|
||||
<RightMargin>0.65in</RightMargin>
|
||||
<LeftMargin>0.65in</LeftMargin>
|
||||
<BottomMargin>0.4in</BottomMargin>
|
||||
<rd:ReportID>699cfcc1-0331-4b62-92eb-a0592a11defb</rd:ReportID>
|
||||
<PageWidth>8.3in</PageWidth>
|
||||
<DataSets>
|
||||
<DataSet Name="ReportData_dtFAItem">
|
||||
<Fields>
|
||||
<Field Name="ItemSerialNo">
|
||||
<DataField>ItemSerialNo</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="ItemDescription">
|
||||
<DataField>ItemDescription</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="AcquisitionTime">
|
||||
<DataField>AcquisitionTime</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
</Fields>
|
||||
<Query>
|
||||
<DataSourceName>DummyDataSource</DataSourceName>
|
||||
<CommandText />
|
||||
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
|
||||
</Query>
|
||||
<rd:DataSetInfo>
|
||||
<rd:DataSetName>ReportData</rd:DataSetName>
|
||||
<rd:TableName>dtFAItem</rd:TableName>
|
||||
</rd:DataSetInfo>
|
||||
</DataSet>
|
||||
</DataSets>
|
||||
<Code />
|
||||
<Width>7in</Width>
|
||||
<Body>
|
||||
<ColumnSpacing>0.01in</ColumnSpacing>
|
||||
<ReportItems>
|
||||
<Table Name="table1">
|
||||
<DataSetName>ReportData_dtFAItem</DataSetName>
|
||||
<Details>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="ItemSerialNo">
|
||||
<rd:DefaultName>ItemSerialNo</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!ItemSerialNo.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="Description">
|
||||
<rd:DefaultName>Description</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>1</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!ItemDescription.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="AcquisitionDate">
|
||||
<rd:DefaultName>AcquisitionDate</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Right>Solid</Right>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Right>0.5pt</Right>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<Format>dd MMM yyyy</Format>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!AcquisitionTime.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.19in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Details>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
</Style>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox25">
|
||||
<rd:DefaultName>textbox25</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>12pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>29</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!CompanyName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox29">
|
||||
<rd:DefaultName>textbox29</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>28</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Print Date & Time: " & Format(Now(), "dd MMM yyyy, hh:mm:ss tt")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox20">
|
||||
<rd:DefaultName>textbox20</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>27</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!Address.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox10">
|
||||
<rd:DefaultName>textbox10</rd:DefaultName>
|
||||
<Style>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>26</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Installation of Fixed Asset</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.22in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox4">
|
||||
<rd:DefaultName>textbox4</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>25</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.1in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox6">
|
||||
<rd:DefaultName>textbox6</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>24</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Installation No</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox7">
|
||||
<rd:DefaultName>textbox7</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>23</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!InstallNo.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox16">
|
||||
<rd:DefaultName>textbox16</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>22</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Installation Date</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox45">
|
||||
<rd:DefaultName>textbox45</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>21</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!InstallDate.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox13">
|
||||
<rd:DefaultName>textbox13</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>20</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.1in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox9">
|
||||
<rd:DefaultName>textbox9</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>19</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Fixed Asset Item Code</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox46">
|
||||
<rd:DefaultName>textbox46</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>18</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!FAItemCode.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox5">
|
||||
<rd:DefaultName>textbox5</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>17</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Fixed Asset Item Name</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox47">
|
||||
<rd:DefaultName>textbox47</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>16</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!FAItemName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox19">
|
||||
<rd:DefaultName>textbox19</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>15</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.1in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox1">
|
||||
<rd:DefaultName>textbox1</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Top>Black</Top>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
<Left>Solid</Left>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Top>0.5pt</Top>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>14</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Serial</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox2">
|
||||
<rd:DefaultName>textbox2</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Top>0.5pt</Top>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>13</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Description</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox3">
|
||||
<rd:DefaultName>textbox3</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderColor>
|
||||
<Right>Black</Right>
|
||||
<Top>Black</Top>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
<Right>Solid</Right>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Right>0.5pt</Right>
|
||||
<Top>0.5pt</Top>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>12</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Acquisition Date</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Header>
|
||||
<TableColumns>
|
||||
<TableColumn>
|
||||
<Width>1.4in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.4in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>3.1in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.9in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.2in</Width>
|
||||
</TableColumn>
|
||||
</TableColumns>
|
||||
<Height>3.06in</Height>
|
||||
<Footer>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox22">
|
||||
<rd:DefaultName>textbox22</rd:DefaultName>
|
||||
<Style>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>3</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.1in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox33">
|
||||
<rd:DefaultName>textbox33</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>5</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Install Location</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox52">
|
||||
<rd:DefaultName>textbox52</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>4</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!InstallLocation.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox36">
|
||||
<rd:DefaultName>textbox36</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>7</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Assigned to Employee</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox53">
|
||||
<rd:DefaultName>textbox53</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>6</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!AssignedEmployee.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox39">
|
||||
<rd:DefaultName>textbox39</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>9</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Assigned Date</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox54">
|
||||
<rd:DefaultName>textbox54</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>8</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!AssignedDate.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox42">
|
||||
<rd:DefaultName>textbox42</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>11</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Remarks</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox55">
|
||||
<rd:DefaultName>textbox55</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>10</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!Remarks.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Footer>
|
||||
</Table>
|
||||
</ReportItems>
|
||||
<Height>3.26in</Height>
|
||||
</Body>
|
||||
<Language>en-US</Language>
|
||||
<PageFooter>
|
||||
<PrintOnFirstPage>true</PrintOnFirstPage>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox59">
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>0.5pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Page " & Globals!PageNumber & " of " & Globals!TotalPages</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
<Height>0.17in</Height>
|
||||
<PrintOnLastPage>true</PrintOnLastPage>
|
||||
</PageFooter>
|
||||
<TopMargin>0.65in</TopMargin>
|
||||
<PageHeight>11.7in</PageHeight>
|
||||
</Report>
|
||||
956
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptFAReduceAsset.rdlc
Normal file
956
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptFAReduceAsset.rdlc
Normal file
|
|
@ -0,0 +1,956 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
|
||||
<DataSources>
|
||||
<DataSource Name="DummyDataSource">
|
||||
<rd:DataSourceID>01800665-9863-429f-9a2f-b7d9eaec7b5d</rd:DataSourceID>
|
||||
<ConnectionProperties>
|
||||
<DataProvider>SQL</DataProvider>
|
||||
<ConnectString />
|
||||
</ConnectionProperties>
|
||||
</DataSource>
|
||||
</DataSources>
|
||||
<InteractiveHeight>11in</InteractiveHeight>
|
||||
<ReportParameters>
|
||||
<ReportParameter Name="CompanyName">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Company Name</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Address">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Address</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="TxnNo">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Txn No</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="TxnDate">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Txn Date</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="RefNo">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Ref No</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="ItemName">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Item Name</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="ItemSerialNo">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Item Serial No</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="ItemDescription">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Item Description</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="ItemBookValue">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Item Book Value</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="ReduceValue">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Reduce Value</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="NewBookValue">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>New Book Value</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Remarks">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Remarks</Prompt>
|
||||
</ReportParameter>
|
||||
</ReportParameters>
|
||||
<rd:DrawGrid>true</rd:DrawGrid>
|
||||
<InteractiveWidth>8.5in</InteractiveWidth>
|
||||
<rd:SnapToGrid>true</rd:SnapToGrid>
|
||||
<RightMargin>0.65in</RightMargin>
|
||||
<LeftMargin>0.65in</LeftMargin>
|
||||
<BottomMargin>0.4in</BottomMargin>
|
||||
<rd:ReportID>699cfcc1-0331-4b62-92eb-a0592a11defb</rd:ReportID>
|
||||
<PageWidth>8.3in</PageWidth>
|
||||
<DataSets>
|
||||
<DataSet Name="ReportData_dtFAItem">
|
||||
<Fields>
|
||||
<Field Name="ItemSerialNo">
|
||||
<DataField>ItemSerialNo</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="ItemDescription">
|
||||
<DataField>ItemDescription</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
</Fields>
|
||||
<Query>
|
||||
<DataSourceName>DummyDataSource</DataSourceName>
|
||||
<CommandText />
|
||||
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
|
||||
</Query>
|
||||
<rd:DataSetInfo>
|
||||
<rd:DataSetName>ReportData</rd:DataSetName>
|
||||
<rd:TableName>dtFAItem</rd:TableName>
|
||||
</rd:DataSetInfo>
|
||||
</DataSet>
|
||||
</DataSets>
|
||||
<Code />
|
||||
<Width>7in</Width>
|
||||
<Body>
|
||||
<ColumnSpacing>0.01in</ColumnSpacing>
|
||||
<ReportItems>
|
||||
<Table Name="table1">
|
||||
<DataSetName>ReportData_dtFAItem</DataSetName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
</Style>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox25">
|
||||
<rd:DefaultName>textbox25</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>12pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>28</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!CompanyName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox29">
|
||||
<rd:DefaultName>textbox29</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>27</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Print Date & Time: " & Format(Now(), "dd MMM yyyy, hh:mm:ss tt")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox20">
|
||||
<rd:DefaultName>textbox20</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>26</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!Address.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.21in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox10">
|
||||
<rd:DefaultName>textbox10</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>25</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Reduce Asset Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox41">
|
||||
<rd:DefaultName>textbox41</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox4">
|
||||
<rd:DefaultName>textbox4</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>24</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.1in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox14">
|
||||
<rd:DefaultName>textbox14</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>23</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Transaction No</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox7">
|
||||
<rd:DefaultName>textbox7</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>:</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox12">
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>22</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!TxnNo.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox16">
|
||||
<rd:DefaultName>textbox16</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>21</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Value Reduced Date</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox17">
|
||||
<rd:DefaultName>textbox17</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>:</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox45">
|
||||
<rd:DefaultName>textbox45</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>20</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!TxnDate.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox27">
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>21</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Reference No</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox28">
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>:</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox33">
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>20</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!RefNo.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox3">
|
||||
<rd:DefaultName>textbox3</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>19</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.12in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox11">
|
||||
<rd:DefaultName>textbox11</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>18</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Item Name</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox19">
|
||||
<rd:DefaultName>textbox19</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>:</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox8">
|
||||
<rd:DefaultName>textbox8</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>17</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!ItemName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox30">
|
||||
<rd:DefaultName>textbox30</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>16</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Serial Number</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox22">
|
||||
<rd:DefaultName>textbox22</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>:</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox6">
|
||||
<rd:DefaultName>textbox6</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>15</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!ItemSerialNo.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox1">
|
||||
<rd:DefaultName>textbox1</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Item Description</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox23">
|
||||
<rd:DefaultName>textbox23</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>:</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox2">
|
||||
<rd:DefaultName>textbox2</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!ItemDescription.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox13">
|
||||
<rd:DefaultName>textbox13</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Book Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox24">
|
||||
<rd:DefaultName>textbox24</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>:</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox15">
|
||||
<rd:DefaultName>textbox15</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!ItemBookValue.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Header>
|
||||
<TableColumns>
|
||||
<TableColumn>
|
||||
<Width>2.1in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.1in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>2.7in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>2.1in</Width>
|
||||
</TableColumn>
|
||||
</TableColumns>
|
||||
<Footer>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox31">
|
||||
<rd:DefaultName>textbox31</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Value Reduced</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox38">
|
||||
<rd:DefaultName>textbox38</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>:</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox32">
|
||||
<rd:DefaultName>textbox32</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!ReduceValue.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox26">
|
||||
<rd:DefaultName>textbox26</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.12in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox35">
|
||||
<rd:DefaultName>textbox35</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>New Book Value after Reduction</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox39">
|
||||
<rd:DefaultName>textbox39</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>:</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox36">
|
||||
<rd:DefaultName>textbox36</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!NewBookValue.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox42">
|
||||
<rd:DefaultName>textbox42</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>6</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Remarks</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox40">
|
||||
<rd:DefaultName>textbox40</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>:</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox55">
|
||||
<rd:DefaultName>textbox55</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>5</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!Remarks.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Footer>
|
||||
</Table>
|
||||
</ReportItems>
|
||||
<Height>3.35in</Height>
|
||||
</Body>
|
||||
<Language>en-US</Language>
|
||||
<TopMargin>0.65in</TopMargin>
|
||||
<PageHeight>11.7in</PageHeight>
|
||||
</Report>
|
||||
1171
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptFASales.rdlc
Normal file
1171
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptFASales.rdlc
Normal file
File diff suppressed because it is too large
Load Diff
860
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptFATransfer.rdlc
Normal file
860
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptFATransfer.rdlc
Normal file
|
|
@ -0,0 +1,860 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
|
||||
<DataSources>
|
||||
<DataSource Name="DummyDataSource">
|
||||
<rd:DataSourceID>01800665-9863-429f-9a2f-b7d9eaec7b5d</rd:DataSourceID>
|
||||
<ConnectionProperties>
|
||||
<DataProvider>SQL</DataProvider>
|
||||
<ConnectString />
|
||||
</ConnectionProperties>
|
||||
</DataSource>
|
||||
</DataSources>
|
||||
<InteractiveHeight>11in</InteractiveHeight>
|
||||
<ReportParameters>
|
||||
<ReportParameter Name="CompanyName">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Company Name</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Address">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Address</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="TransferNo">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Transfer No</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="TransferDate">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Transfer Date</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="FromLocation">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>From Location</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="ToLocation">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>To Location</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="FAItemCode">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Fixed Asset Item Code</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="FAItemName">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Fixed Asset Item Name</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="AssignedEmployee">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Assigned to Employee</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Remarks">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Remarks</Prompt>
|
||||
</ReportParameter>
|
||||
</ReportParameters>
|
||||
<rd:DrawGrid>true</rd:DrawGrid>
|
||||
<InteractiveWidth>8.5in</InteractiveWidth>
|
||||
<rd:SnapToGrid>true</rd:SnapToGrid>
|
||||
<RightMargin>0.65in</RightMargin>
|
||||
<LeftMargin>0.65in</LeftMargin>
|
||||
<BottomMargin>0.4in</BottomMargin>
|
||||
<rd:ReportID>699cfcc1-0331-4b62-92eb-a0592a11defb</rd:ReportID>
|
||||
<PageWidth>8.3in</PageWidth>
|
||||
<DataSets>
|
||||
<DataSet Name="ReportData_dtFAItem">
|
||||
<Fields>
|
||||
<Field Name="ItemSerialNo">
|
||||
<DataField>ItemSerialNo</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="ItemDescription">
|
||||
<DataField>ItemDescription</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
</Fields>
|
||||
<Query>
|
||||
<DataSourceName>DummyDataSource</DataSourceName>
|
||||
<CommandText />
|
||||
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
|
||||
</Query>
|
||||
<rd:DataSetInfo>
|
||||
<rd:DataSetName>ReportData</rd:DataSetName>
|
||||
<rd:TableName>dtFAItem</rd:TableName>
|
||||
</rd:DataSetInfo>
|
||||
</DataSet>
|
||||
</DataSets>
|
||||
<Code />
|
||||
<Width>7in</Width>
|
||||
<Body>
|
||||
<ColumnSpacing>0.01in</ColumnSpacing>
|
||||
<ReportItems>
|
||||
<Table Name="table1">
|
||||
<DataSetName>ReportData_dtFAItem</DataSetName>
|
||||
<Details>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="ItemSerialNo">
|
||||
<rd:DefaultName>ItemSerialNo</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>1</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!ItemSerialNo.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="Description">
|
||||
<rd:DefaultName>Description</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Right>Solid</Right>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Right>0.5pt</Right>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!ItemDescription.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.19in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Details>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
</Style>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox25">
|
||||
<rd:DefaultName>textbox25</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>12pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>28</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!CompanyName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox29">
|
||||
<rd:DefaultName>textbox29</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>27</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Print Date & Time: " & Format(Now(), "dd MMM yyyy, hh:mm:ss tt")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox20">
|
||||
<rd:DefaultName>textbox20</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>26</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!Address.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox10">
|
||||
<rd:DefaultName>textbox10</rd:DefaultName>
|
||||
<Style>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>25</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Transfer of Fixed Asset</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.22in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox4">
|
||||
<rd:DefaultName>textbox4</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>24</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.1in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox14">
|
||||
<rd:DefaultName>textbox14</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>23</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Transfer No</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox12">
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>22</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!TransferNo.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox16">
|
||||
<rd:DefaultName>textbox16</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>21</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Transfer Date</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox45">
|
||||
<rd:DefaultName>textbox45</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>20</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!TransferDate.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox3">
|
||||
<rd:DefaultName>textbox3</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>19</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.1in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox11">
|
||||
<rd:DefaultName>textbox11</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>18</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>From Location</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox8">
|
||||
<rd:DefaultName>textbox8</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>17</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!FromLocation.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox30">
|
||||
<rd:DefaultName>textbox30</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>16</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>To Location</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox6">
|
||||
<rd:DefaultName>textbox6</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>15</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!ToLocation.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox43">
|
||||
<rd:DefaultName>textbox43</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>14</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.1in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox9">
|
||||
<rd:DefaultName>textbox9</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>13</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Asset Type Code</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox46">
|
||||
<rd:DefaultName>textbox46</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>12</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!FAItemCode.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox5">
|
||||
<rd:DefaultName>textbox5</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>11</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Asset Type Name</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox47">
|
||||
<rd:DefaultName>textbox47</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>10</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!FAItemName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox19">
|
||||
<rd:DefaultName>textbox19</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>9</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.1in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox1">
|
||||
<rd:DefaultName>textbox1</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Top>Black</Top>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
<Left>Solid</Left>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Top>0.5pt</Top>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>8</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Serial</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox2">
|
||||
<rd:DefaultName>textbox2</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
<Right>Solid</Right>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Right>0.5pt</Right>
|
||||
<Top>0.5pt</Top>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>7</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Description</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Header>
|
||||
<TableColumns>
|
||||
<TableColumn>
|
||||
<Width>1.6in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>3.3in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>2.1in</Width>
|
||||
</TableColumn>
|
||||
</TableColumns>
|
||||
<Height>3.16in</Height>
|
||||
<Footer>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox22">
|
||||
<rd:DefaultName>textbox22</rd:DefaultName>
|
||||
<Style>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.1in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox33">
|
||||
<rd:DefaultName>textbox33</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>4</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Assigned To Employee</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox52">
|
||||
<rd:DefaultName>textbox52</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>3</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!AssignedEmployee.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox42">
|
||||
<rd:DefaultName>textbox42</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>6</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Remarks</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox55">
|
||||
<rd:DefaultName>textbox55</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>5</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!Remarks.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Footer>
|
||||
</Table>
|
||||
</ReportItems>
|
||||
<Height>3.26in</Height>
|
||||
</Body>
|
||||
<Language>en-US</Language>
|
||||
<PageFooter>
|
||||
<PrintOnFirstPage>true</PrintOnFirstPage>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox59">
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>0.5pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Page " & Globals!PageNumber & " of " & Globals!TotalPages</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
<Height>0.17in</Height>
|
||||
<PrintOnLastPage>true</PrintOnLastPage>
|
||||
</PageFooter>
|
||||
<TopMargin>0.65in</TopMargin>
|
||||
<PageHeight>11.7in</PageHeight>
|
||||
</Report>
|
||||
980
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptFAWriteOff.rdlc
Normal file
980
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptFAWriteOff.rdlc
Normal file
|
|
@ -0,0 +1,980 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
|
||||
<DataSources>
|
||||
<DataSource Name="DummyDataSource">
|
||||
<rd:DataSourceID>01800665-9863-429f-9a2f-b7d9eaec7b5d</rd:DataSourceID>
|
||||
<ConnectionProperties>
|
||||
<DataProvider>SQL</DataProvider>
|
||||
<ConnectString />
|
||||
</ConnectionProperties>
|
||||
</DataSource>
|
||||
</DataSources>
|
||||
<InteractiveHeight>11in</InteractiveHeight>
|
||||
<ReportParameters>
|
||||
<ReportParameter Name="CompanyName">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Company Name</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Address">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Address</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="WriteOffNo">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Write Off No</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="WriteOffDate">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Write Off Date</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Remarks">
|
||||
<DataType>String</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>Remarks</Prompt>
|
||||
</ReportParameter>
|
||||
</ReportParameters>
|
||||
<rd:DrawGrid>true</rd:DrawGrid>
|
||||
<InteractiveWidth>8.5in</InteractiveWidth>
|
||||
<rd:SnapToGrid>true</rd:SnapToGrid>
|
||||
<RightMargin>0.65in</RightMargin>
|
||||
<LeftMargin>0.65in</LeftMargin>
|
||||
<BottomMargin>0.4in</BottomMargin>
|
||||
<rd:ReportID>699cfcc1-0331-4b62-92eb-a0592a11defb</rd:ReportID>
|
||||
<PageWidth>11.7in</PageWidth>
|
||||
<DataSets>
|
||||
<DataSet Name="ReportData_dtFAItem">
|
||||
<Fields>
|
||||
<Field Name="ItemCode">
|
||||
<DataField>ItemCode</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="ItemName">
|
||||
<DataField>ItemName</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="ItemSerialNo">
|
||||
<DataField>ItemSerialNo</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="ItemDescription">
|
||||
<DataField>ItemDescription</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="Specification">
|
||||
<DataField>Specification</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="DprnValue">
|
||||
<DataField>DprnValue</DataField>
|
||||
<rd:TypeName>System.Decimal</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="BookValue">
|
||||
<DataField>BookValue</DataField>
|
||||
<rd:TypeName>System.Decimal</rd:TypeName>
|
||||
</Field>
|
||||
</Fields>
|
||||
<Query>
|
||||
<DataSourceName>DummyDataSource</DataSourceName>
|
||||
<CommandText />
|
||||
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
|
||||
</Query>
|
||||
<rd:DataSetInfo>
|
||||
<rd:DataSetName>ReportData</rd:DataSetName>
|
||||
<rd:TableName>dtFAItem</rd:TableName>
|
||||
</rd:DataSetInfo>
|
||||
</DataSet>
|
||||
</DataSets>
|
||||
<Code />
|
||||
<Width>10.4in</Width>
|
||||
<Body>
|
||||
<ColumnSpacing>0.01in</ColumnSpacing>
|
||||
<ReportItems>
|
||||
<Table Name="table1">
|
||||
<DataSetName>ReportData_dtFAItem</DataSetName>
|
||||
<Details>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="ItemCode">
|
||||
<rd:DefaultName>ItemCode</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Left>Groove</Left>
|
||||
<Bottom>Groove</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>5</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!ItemCode.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="ItemName">
|
||||
<rd:DefaultName>ItemName</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Left>Groove</Left>
|
||||
<Bottom>Groove</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>4</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!ItemName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="ItemSerialNo">
|
||||
<rd:DefaultName>ItemSerialNo</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Left>Groove</Left>
|
||||
<Bottom>Groove</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>3</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!ItemSerialNo.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="ItemDescription">
|
||||
<rd:DefaultName>ItemDescription</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Left>Groove</Left>
|
||||
<Bottom>Groove</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!ItemDescription.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="BookValue">
|
||||
<rd:DefaultName>BookValue</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Left>Groove</Left>
|
||||
<Bottom>Groove</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>1</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!BookValue.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="DprnValue">
|
||||
<rd:DefaultName>DprnValue</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Left>Groove</Left>
|
||||
<Right>Groove</Right>
|
||||
<Bottom>Groove</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Right>0.5pt</Right>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!DprnValue.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.19in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Details>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
</Style>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox25">
|
||||
<rd:DefaultName>textbox25</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>12pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>30</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!CompanyName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox29">
|
||||
<rd:DefaultName>textbox29</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>29</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Print Date & Time: " & Format(Now(), "dd MMM yyyy, hh:mm:ss tt")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>6</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox20">
|
||||
<rd:DefaultName>textbox20</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>28</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!Address.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>6</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox10">
|
||||
<rd:DefaultName>textbox10</rd:DefaultName>
|
||||
<Style>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>27</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Write Off of Fixed Asset</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.22in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>6</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox4">
|
||||
<rd:DefaultName>textbox4</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>26</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.1in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox14">
|
||||
<rd:DefaultName>textbox14</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>25</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Write off Number</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox53">
|
||||
<rd:DefaultName>textbox53</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>24</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!WriteOffNo.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox16">
|
||||
<rd:DefaultName>textbox16</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>23</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Write Off Date</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox54">
|
||||
<rd:DefaultName>textbox54</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>22</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!WriteOffDate.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>6</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox3">
|
||||
<rd:DefaultName>textbox3</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>21</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.1in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox1">
|
||||
<rd:DefaultName>textbox1</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Top>Black</Top>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
<Left>Solid</Left>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Top>0.5pt</Top>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>20</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Item Code</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox57">
|
||||
<rd:DefaultName>textbox57</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
<Right>Solid</Right>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Right>0.5pt</Right>
|
||||
<Top>0.5pt</Top>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>19</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Item Name</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox46">
|
||||
<rd:DefaultName>textbox46</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
<Right>Solid</Right>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Right>0.5pt</Right>
|
||||
<Top>0.5pt</Top>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>18</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Serial No</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox34">
|
||||
<rd:DefaultName>textbox34</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
<Right>Solid</Right>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Right>0.5pt</Right>
|
||||
<Top>0.5pt</Top>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>17</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Description</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox2">
|
||||
<rd:DefaultName>textbox2</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
<Right>Solid</Right>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Right>0.5pt</Right>
|
||||
<Top>0.5pt</Top>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>16</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Book Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox61">
|
||||
<rd:DefaultName>textbox61</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
<Right>Solid</Right>
|
||||
<Top>Solid</Top>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Right>0.5pt</Right>
|
||||
<Top>0.5pt</Top>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>15</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Depreciation Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.22in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Header>
|
||||
<TableColumns>
|
||||
<TableColumn>
|
||||
<Width>1.15in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>2.1in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.65in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>3in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.25in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.25in</Width>
|
||||
</TableColumn>
|
||||
</TableColumns>
|
||||
<Footer>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox5">
|
||||
<rd:DefaultName>textbox5</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>11</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox6">
|
||||
<rd:DefaultName>textbox6</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>10</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox7">
|
||||
<rd:DefaultName>textbox7</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>9</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox11">
|
||||
<rd:DefaultName>textbox11</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>8</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="BookValue_1">
|
||||
<rd:DefaultName>BookValue_1</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Left>Groove</Left>
|
||||
<Bottom>Groove</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>7</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Sum(Fields!BookValue.Value)</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="DprnValue_1">
|
||||
<rd:DefaultName>DprnValue_1</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Left>Groove</Left>
|
||||
<Right>Groove</Right>
|
||||
<Bottom>Groove</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
<Left>0.5pt</Left>
|
||||
<Right>0.5pt</Right>
|
||||
<Bottom>0.5pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>6</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Sum(Fields!DprnValue.Value)</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>6</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox22">
|
||||
<rd:DefaultName>textbox22</rd:DefaultName>
|
||||
<Style>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>12</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.1in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox42">
|
||||
<rd:DefaultName>textbox42</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>14</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Remarks</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox60">
|
||||
<rd:DefaultName>textbox60</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>13</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=": " & Parameters!Remarks.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Footer>
|
||||
</Table>
|
||||
</ReportItems>
|
||||
<Height>2.18in</Height>
|
||||
</Body>
|
||||
<Language>en-US</Language>
|
||||
<PageFooter>
|
||||
<PrintOnFirstPage>true</PrintOnFirstPage>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox59">
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>0.5pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Page " & Globals!PageNumber & " of " & Globals!TotalPages</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
<Height>0.17in</Height>
|
||||
<PrintOnLastPage>true</PrintOnLastPage>
|
||||
</PageFooter>
|
||||
<TopMargin>0.65in</TopMargin>
|
||||
<PageHeight>8.3in</PageHeight>
|
||||
</Report>
|
||||
File diff suppressed because it is too large
Load Diff
1176
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptGRN.rdlc
Normal file
1176
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptGRN.rdlc
Normal file
File diff suppressed because it is too large
Load Diff
1327
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptIncomeExpenditure.rdlc
Normal file
1327
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptIncomeExpenditure.rdlc
Normal file
File diff suppressed because it is too large
Load Diff
1186
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptInvoice.rdlc
Normal file
1186
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptInvoice.rdlc
Normal file
File diff suppressed because it is too large
Load Diff
1585
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptInvoiceFAP2P.rdlc
Normal file
1585
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptInvoiceFAP2P.rdlc
Normal file
File diff suppressed because it is too large
Load Diff
1356
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptLedger.rdlc
Normal file
1356
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptLedger.rdlc
Normal file
File diff suppressed because it is too large
Load Diff
678
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptMonthlyTurnover.rdlc
Normal file
678
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptMonthlyTurnover.rdlc
Normal file
|
|
@ -0,0 +1,678 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
|
||||
<DataSources>
|
||||
<DataSource Name="DummyDataSource">
|
||||
<rd:DataSourceID>696cb1ee-c179-477b-89ea-5748c2dd7a4e</rd:DataSourceID>
|
||||
<ConnectionProperties>
|
||||
<DataProvider>SQL</DataProvider>
|
||||
<ConnectString />
|
||||
</ConnectionProperties>
|
||||
</DataSource>
|
||||
</DataSources>
|
||||
<InteractiveHeight>7.7in</InteractiveHeight>
|
||||
<ReportParameters>
|
||||
<ReportParameter Name="CompanyName">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramCompanyName</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="StartDate">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramStartDate</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="EndDate">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramEndDate</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Address">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramAddress</Prompt>
|
||||
</ReportParameter>
|
||||
</ReportParameters>
|
||||
<rd:DrawGrid>true</rd:DrawGrid>
|
||||
<InteractiveWidth>10.2in</InteractiveWidth>
|
||||
<rd:GridSpacing>0.05in</rd:GridSpacing>
|
||||
<rd:SnapToGrid>false</rd:SnapToGrid>
|
||||
<RightMargin>0.4in</RightMargin>
|
||||
<LeftMargin>0.5in</LeftMargin>
|
||||
<BottomMargin>0.29in</BottomMargin>
|
||||
<rd:ReportID>9dd1af5d-17a3-49eb-96b4-ff2d77a38b49</rd:ReportID>
|
||||
<PageWidth>8.27in</PageWidth>
|
||||
<DataSets>
|
||||
<DataSet Name="ReportData_dtTurnover">
|
||||
<Fields>
|
||||
<Field Name="AccountCode">
|
||||
<DataField>AccountCode</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="AccountName">
|
||||
<DataField>AccountName</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="MonthYear">
|
||||
<DataField>MonthYear</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="CreditAmount">
|
||||
<DataField>CreditAmount</DataField>
|
||||
<rd:TypeName>System.Double</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="DebitAmount">
|
||||
<DataField>DebitAmount</DataField>
|
||||
<rd:TypeName>System.Double</rd:TypeName>
|
||||
</Field>
|
||||
</Fields>
|
||||
<Query>
|
||||
<DataSourceName>DummyDataSource</DataSourceName>
|
||||
<CommandText />
|
||||
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
|
||||
</Query>
|
||||
<rd:DataSetInfo>
|
||||
<rd:DataSetName>ReportData</rd:DataSetName>
|
||||
<rd:TableName>dtTurnover</rd:TableName>
|
||||
</rd:DataSetInfo>
|
||||
</DataSet>
|
||||
</DataSets>
|
||||
<Code />
|
||||
<Width>7.32292in</Width>
|
||||
<Body>
|
||||
<ColumnSpacing>0.05in</ColumnSpacing>
|
||||
<ReportItems>
|
||||
<Table Name="table1">
|
||||
<DataSetName>ReportData_dtTurnover</DataSetName>
|
||||
<TableGroups>
|
||||
<TableGroup>
|
||||
<Grouping Name="table1_Group1">
|
||||
<GroupExpressions>
|
||||
<GroupExpression>=Fields!AccountCode.Value</GroupExpression>
|
||||
</GroupExpressions>
|
||||
<PageBreakAtEnd>true</PageBreakAtEnd>
|
||||
</Grouping>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox1">
|
||||
<rd:DefaultName>textbox1</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>23</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>GL Head</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox2">
|
||||
<rd:DefaultName>textbox2</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>22</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Description</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox10">
|
||||
<rd:DefaultName>textbox10</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>21</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Month</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox4">
|
||||
<rd:DefaultName>textbox4</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>18</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Debit Amount</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox6">
|
||||
<rd:DefaultName>textbox6</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>17</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Credit Amount</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.22in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
<RepeatOnNewPage>true</RepeatOnNewPage>
|
||||
</Header>
|
||||
<Footer>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox5">
|
||||
<rd:DefaultName>textbox5</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>5pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>11</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Total of " & Fields!AccountName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox40">
|
||||
<rd:DefaultName>textbox40</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=SUM(Fields!DebitAmount.Value)</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox41">
|
||||
<rd:DefaultName>textbox41</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=SUM(Fields!CreditAmount.Value)</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
<RepeatOnNewPage>true</RepeatOnNewPage>
|
||||
</Footer>
|
||||
</TableGroup>
|
||||
</TableGroups>
|
||||
<Details>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="AccountCode">
|
||||
<HideDuplicates>table1_Group1</HideDuplicates>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Right>Black</Right>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Right>Solid</Right>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Left>1pt</Left>
|
||||
<Right>1pt</Right>
|
||||
</BorderWidth>
|
||||
<FontSize>8pt</FontSize>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>8</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!AccountCode.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="AccountName">
|
||||
<HideDuplicates>table1_Group1</HideDuplicates>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Right>Black</Right>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Right>Solid</Right>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Left>1pt</Left>
|
||||
<Right>1pt</Right>
|
||||
</BorderWidth>
|
||||
<FontSize>8pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>7</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!AccountName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="MonthYear">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Right>Black</Right>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Right>Solid</Right>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Left>1pt</Left>
|
||||
<Right>1pt</Right>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>8pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>6</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!MonthYear.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="DebitAmount">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Right>Black</Right>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Right>Solid</Right>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Left>1pt</Left>
|
||||
<Right>1pt</Right>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>8pt</FontSize>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>3</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!DebitAmount.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="CreditAmount">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Right>Black</Right>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Right>Solid</Right>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Left>1pt</Left>
|
||||
<Right>1pt</Right>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>8pt</FontSize>
|
||||
<Format>N2</Format>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Fields!CreditAmount.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Details>
|
||||
<Style>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
</BorderWidth>
|
||||
</Style>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox20">
|
||||
<rd:DefaultName>textbox20</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>12pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>4</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!CompanyName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox9">
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>1</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Print Date & Time: " & Format(Now(), "dd MMM yyyy, hh:mm:ss tt")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox29">
|
||||
<rd:DefaultName>textbox29</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>4</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!Address.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox3">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>11pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>1</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Mothly Turnover Report</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox8">
|
||||
<Style>
|
||||
<FontSize>9pt</FontSize>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="From " & Parameters!StartDate.Value & " to " & Parameters!EndDate.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>5</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox7">
|
||||
<rd:DefaultName>textbox7</rd:DefaultName>
|
||||
<Style>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Header>
|
||||
<TableColumns>
|
||||
<TableColumn>
|
||||
<Width>0.87in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>3.15292in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.15in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.15in</Width>
|
||||
</TableColumn>
|
||||
</TableColumns>
|
||||
</Table>
|
||||
</ReportItems>
|
||||
<Height>1.77in</Height>
|
||||
</Body>
|
||||
<Language>en-US</Language>
|
||||
<PageFooter>
|
||||
<PrintOnFirstPage>true</PrintOnFirstPage>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox11">
|
||||
<Top>0.07125in</Top>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Page " & Globals!PageNumber & " of " & Globals!TotalPages</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
<Height>0.24125in</Height>
|
||||
<PrintOnLastPage>true</PrintOnLastPage>
|
||||
</PageFooter>
|
||||
<TopMargin>0.4in</TopMargin>
|
||||
<PageHeight>11.69in</PageHeight>
|
||||
</Report>
|
||||
1915
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptPaymentFAP2P.rdlc
Normal file
1915
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptPaymentFAP2P.rdlc
Normal file
File diff suppressed because it is too large
Load Diff
342
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptProfitLoss.rdlc
Normal file
342
Api/OnlineSalesAutoCrop.CoreAPI/Reports/rptProfitLoss.rdlc
Normal file
|
|
@ -0,0 +1,342 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
|
||||
<DataSources>
|
||||
<DataSource Name="DummyDataSource">
|
||||
<rd:DataSourceID>b2609be8-0a6d-4c06-94f8-d6e6880bca99</rd:DataSourceID>
|
||||
<ConnectionProperties>
|
||||
<DataProvider>SQL</DataProvider>
|
||||
<ConnectString />
|
||||
</ConnectionProperties>
|
||||
</DataSource>
|
||||
</DataSources>
|
||||
<InteractiveHeight>11in</InteractiveHeight>
|
||||
<ReportParameters>
|
||||
<ReportParameter Name="CompanyName">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramCompanyName</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Address">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramAddress</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="ProcessDate">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramProcessDate</Prompt>
|
||||
</ReportParameter>
|
||||
</ReportParameters>
|
||||
<rd:DrawGrid>true</rd:DrawGrid>
|
||||
<InteractiveWidth>8.5in</InteractiveWidth>
|
||||
<rd:GridSpacing>0.05in</rd:GridSpacing>
|
||||
<rd:SnapToGrid>false</rd:SnapToGrid>
|
||||
<RightMargin>0.4in</RightMargin>
|
||||
<LeftMargin>0.5in</LeftMargin>
|
||||
<BottomMargin>0.29in</BottomMargin>
|
||||
<rd:ReportID>ecd24c8c-626b-4815-b8fa-3df9c5252e67</rd:ReportID>
|
||||
<PageWidth>8.27in</PageWidth>
|
||||
<DataSets>
|
||||
<DataSet Name="ReportData_dtFinalAccount">
|
||||
<Fields>
|
||||
<Field Name="Description">
|
||||
<DataField>Description</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="CurrentAmount">
|
||||
<DataField>CurrentAmount</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PreviousAmount">
|
||||
<DataField>PreviousAmount</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="ItemLevel">
|
||||
<DataField>ItemLevel</DataField>
|
||||
<rd:TypeName>System.Int16</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PrintAmount">
|
||||
<DataField>PrintAmount</DataField>
|
||||
<rd:TypeName>System.Boolean</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PrintSubtotal">
|
||||
<DataField>PrintSubtotal</DataField>
|
||||
<rd:TypeName>System.Boolean</rd:TypeName>
|
||||
</Field>
|
||||
</Fields>
|
||||
<Query>
|
||||
<DataSourceName>DummyDataSource</DataSourceName>
|
||||
<CommandText />
|
||||
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
|
||||
</Query>
|
||||
<rd:DataSetInfo>
|
||||
<rd:DataSetName>ReportData</rd:DataSetName>
|
||||
<rd:TableName>dtFinalAccount</rd:TableName>
|
||||
</rd:DataSetInfo>
|
||||
</DataSet>
|
||||
</DataSets>
|
||||
<Code />
|
||||
<Width>7.32292in</Width>
|
||||
<Body>
|
||||
<ReportItems>
|
||||
<Table Name="table1">
|
||||
<DataSetName>ReportData_dtFinalAccount</DataSetName>
|
||||
<Details>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="Description">
|
||||
<rd:DefaultName>Description</rd:DefaultName>
|
||||
<Style>
|
||||
<FontStyle>=IIF(Cint(Fields!ItemLevel.Value)=3, "Italic", "Normal")</FontStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>1</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(Cint(Fields!ItemLevel.Value)=4, Space(5), Space((Cint(Fields!ItemLevel.Value)-1)*5)) & Fields!Description.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="CurrentAmount">
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Top>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Top>
|
||||
<Bottom>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Default>0.5pt</Default>
|
||||
</BorderWidth>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(CBool(Fields!PrintAmount.Value), Fields!CurrentAmount.Value, "")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.19in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Details>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox9">
|
||||
<Style>
|
||||
<FontSize>12pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>7</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!CompanyName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>2</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox13">
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>3</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Print Date & Time: " & Format(Now(), "dd MMM yyyy, hh:mm:ss tt")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox10">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>6</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!Address.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox11">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>11pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>5</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Profit/Loss Statement</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox12">
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>4</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!ProcessDate.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.22in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox4">
|
||||
<rd:DefaultName>textbox4</rd:DefaultName>
|
||||
<Style>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Header>
|
||||
<TableColumns>
|
||||
<TableColumn>
|
||||
<Width>4.91292in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.12in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.29in</Width>
|
||||
</TableColumn>
|
||||
</TableColumns>
|
||||
</Table>
|
||||
</ReportItems>
|
||||
<Height>1.36in</Height>
|
||||
</Body>
|
||||
<Language>en-US</Language>
|
||||
<PageFooter>
|
||||
<PrintOnFirstPage>true</PrintOnFirstPage>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox2">
|
||||
<Top>0.07167in</Top>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>3pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Page " & Globals!PageNumber & " of " & Globals!TotalPages</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
<Height>0.24167in</Height>
|
||||
<PrintOnLastPage>true</PrintOnLastPage>
|
||||
</PageFooter>
|
||||
<TopMargin>0.4in</TopMargin>
|
||||
<PageHeight>11.69in</PageHeight>
|
||||
</Report>
|
||||
|
|
@ -0,0 +1,447 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
|
||||
<DataSources>
|
||||
<DataSource Name="DummyDataSource">
|
||||
<rd:DataSourceID>b2609be8-0a6d-4c06-94f8-d6e6880bca99</rd:DataSourceID>
|
||||
<ConnectionProperties>
|
||||
<DataProvider>SQL</DataProvider>
|
||||
<ConnectString />
|
||||
</ConnectionProperties>
|
||||
</DataSource>
|
||||
</DataSources>
|
||||
<InteractiveHeight>11in</InteractiveHeight>
|
||||
<ReportParameters>
|
||||
<ReportParameter Name="CompanyName">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramCompanyName</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="Address">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramAddress</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="PreviousDate">
|
||||
<DataType>DateTime</DataType>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramPreviousDate</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="CurrentDate">
|
||||
<DataType>DateTime</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>paramCurrentDate</Prompt>
|
||||
</ReportParameter>
|
||||
</ReportParameters>
|
||||
<rd:DrawGrid>true</rd:DrawGrid>
|
||||
<InteractiveWidth>8.5in</InteractiveWidth>
|
||||
<rd:GridSpacing>0.05in</rd:GridSpacing>
|
||||
<rd:SnapToGrid>false</rd:SnapToGrid>
|
||||
<RightMargin>0.4in</RightMargin>
|
||||
<LeftMargin>0.5in</LeftMargin>
|
||||
<BottomMargin>0.29in</BottomMargin>
|
||||
<rd:ReportID>ecd24c8c-626b-4815-b8fa-3df9c5252e67</rd:ReportID>
|
||||
<PageWidth>8.27in</PageWidth>
|
||||
<DataSets>
|
||||
<DataSet Name="ReportData_dtFinalAccount">
|
||||
<Fields>
|
||||
<Field Name="Description">
|
||||
<DataField>Description</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="CurrentAmount">
|
||||
<DataField>CurrentAmount</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PreviousAmount">
|
||||
<DataField>PreviousAmount</DataField>
|
||||
<rd:TypeName>System.String</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="ItemLevel">
|
||||
<DataField>ItemLevel</DataField>
|
||||
<rd:TypeName>System.Int16</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PrintAmount">
|
||||
<DataField>PrintAmount</DataField>
|
||||
<rd:TypeName>System.Boolean</rd:TypeName>
|
||||
</Field>
|
||||
<Field Name="PrintSubtotal">
|
||||
<DataField>PrintSubtotal</DataField>
|
||||
<rd:TypeName>System.Boolean</rd:TypeName>
|
||||
</Field>
|
||||
</Fields>
|
||||
<Query>
|
||||
<DataSourceName>DummyDataSource</DataSourceName>
|
||||
<CommandText />
|
||||
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
|
||||
</Query>
|
||||
<rd:DataSetInfo>
|
||||
<rd:DataSetName>ReportData</rd:DataSetName>
|
||||
<rd:TableName>dtFinalAccount</rd:TableName>
|
||||
</rd:DataSetInfo>
|
||||
</DataSet>
|
||||
</DataSets>
|
||||
<Code />
|
||||
<Width>7.32292in</Width>
|
||||
<Body>
|
||||
<ReportItems>
|
||||
<Table Name="table1">
|
||||
<DataSetName>ReportData_dtFinalAccount</DataSetName>
|
||||
<Details>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="Description">
|
||||
<rd:DefaultName>Description</rd:DefaultName>
|
||||
<Style>
|
||||
<FontStyle>=IIF(Cint(Fields!ItemLevel.Value)=3, "Italic", "Normal")</FontStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>2</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(Cint(Fields!ItemLevel.Value)=4, Space(5), Space((Cint(Fields!ItemLevel.Value)-1)*5)) & Fields!Description.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="CurrentAmount">
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Top>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Top>
|
||||
<Bottom>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Bottom>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<ZIndex>1</ZIndex>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(CBool(Fields!PrintAmount.Value), Fields!CurrentAmount.Value, "")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox7">
|
||||
<rd:DefaultName>textbox7</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox3">
|
||||
<rd:DefaultName>textbox3</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderStyle>
|
||||
<Top>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Top>
|
||||
<Bottom>=IIF(CBool(Fields!PrintSubtotal.Value), "Solid", "None")</Bottom>
|
||||
</BorderStyle>
|
||||
<FontSize>8pt</FontSize>
|
||||
<FontWeight>=IIF((Cint(Fields!ItemLevel.Value)=1 OR Cint(Fields!ItemLevel.Value)=4), "Bold", "Normal")</FontWeight>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=IIF(CBool(Fields!PrintAmount.Value), Fields!PreviousAmount.Value, "")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.19in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
</Details>
|
||||
<Header>
|
||||
<TableRows>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox1">
|
||||
<Style>
|
||||
<FontSize>12pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!CompanyName.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ColSpan>3</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox9">
|
||||
<rd:DefaultName>textbox9</rd:DefaultName>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Print Date & Time: " & Format(Now(), "dd MMM yyyy, hh:mm:ss tt")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.25in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox14">
|
||||
<rd:DefaultName>textbox14</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Bottom>Black</Bottom>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Bottom>Solid</Bottom>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Bottom>1pt</Bottom>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Parameters!Address.Value</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.23in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ColSpan>4</ColSpan>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox19">
|
||||
<rd:DefaultName>textbox19</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Top>Black</Top>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Top>Solid</Top>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Top>1pt</Top>
|
||||
</BorderWidth>
|
||||
<FontSize>11pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextDecoration>Underline</TextDecoration>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.2in</Height>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCells>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox2">
|
||||
<rd:DefaultName>textbox2</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Right>Black</Right>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Right>Solid</Right>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Right>1pt</Right>
|
||||
</BorderWidth>
|
||||
<FontSize>11pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextDecoration>Underline</TextDecoration>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>Profit/Loss Comparison</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox5">
|
||||
<rd:DefaultName>textbox5</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Format(Parameters!CurrentDate.Value,"dd.MM.yyyy")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox4">
|
||||
<rd:DefaultName>textbox4</rd:DefaultName>
|
||||
<Style>
|
||||
<BorderColor>
|
||||
<Left>Black</Left>
|
||||
<Right>Black</Right>
|
||||
</BorderColor>
|
||||
<BorderStyle>
|
||||
<Left>Solid</Left>
|
||||
<Right>Solid</Right>
|
||||
</BorderStyle>
|
||||
<BorderWidth>
|
||||
<Left>1pt</Left>
|
||||
<Right>1pt</Right>
|
||||
</BorderWidth>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value />
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox6">
|
||||
<rd:DefaultName>textbox6</rd:DefaultName>
|
||||
<Style>
|
||||
<BackgroundColor>Gainsboro</BackgroundColor>
|
||||
<BorderStyle>
|
||||
<Default>Solid</Default>
|
||||
</BorderStyle>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>700</FontWeight>
|
||||
<TextAlign>Center</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>=Format(Parameters!PreviousDate.Value, "dd.MM.yyyy")</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
</TableCell>
|
||||
</TableCells>
|
||||
<Height>0.26in</Height>
|
||||
</TableRow>
|
||||
</TableRows>
|
||||
<RepeatOnNewPage>true</RepeatOnNewPage>
|
||||
</Header>
|
||||
<TableColumns>
|
||||
<TableColumn>
|
||||
<Width>4.82292in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.17in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>0.16in</Width>
|
||||
</TableColumn>
|
||||
<TableColumn>
|
||||
<Width>1.17in</Width>
|
||||
</TableColumn>
|
||||
</TableColumns>
|
||||
</Table>
|
||||
</ReportItems>
|
||||
<Height>1.13in</Height>
|
||||
</Body>
|
||||
<Language>en-US</Language>
|
||||
<PageFooter>
|
||||
<PrintOnFirstPage>true</PrintOnFirstPage>
|
||||
<ReportItems>
|
||||
<Textbox Name="textbox10">
|
||||
<Top>0.07291in</Top>
|
||||
<Style>
|
||||
<FontSize>7pt</FontSize>
|
||||
<TextAlign>Right</TextAlign>
|
||||
<VerticalAlign>Middle</VerticalAlign>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
<CanGrow>true</CanGrow>
|
||||
<Value>="Page " & Globals!PageNumber & " of " & Globals!TotalPages</Value>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
<Height>0.24041in</Height>
|
||||
<PrintOnLastPage>true</PrintOnLastPage>
|
||||
</PageFooter>
|
||||
<TopMargin>0.4in</TopMargin>
|
||||
<PageHeight>11.69in</PageHeight>
|
||||
</Report>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user