Moved to a new printer name format in PrintLocation

If printing from windows, then the printer name should be prefixed with smb.
If printing from linux, then the printer name should be prefixed with cups.
If printing directly, then the printer name should be prefixed with pdl.
This commit is contained in:
tanshu 2018-05-17 15:52:27 +05:30
parent 7733b16611
commit 49faa9786d
34 changed files with 175 additions and 122 deletions

@ -1,7 +1,7 @@
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode;
using NHibernate.Mapping.ByCode; using NHibernate.Mapping.ByCode.Conformist;
using System.Collections.Generic;
using System; using System;
using System.Collections.Generic;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities
{ {
public class Customer public class Customer

@ -1,5 +1,5 @@
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode;
using NHibernate.Mapping.ByCode; using NHibernate.Mapping.ByCode.Conformist;
using System; using System;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities
{ {

@ -1,9 +1,7 @@
using System.Collections.Generic; using NHibernate.Mapping.ByCode;
using Tanshu.Accounts.Contracts;
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Mapping.ByCode;
using System; using System;
using System.ComponentModel; using System.Collections.Generic;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities
{ {

@ -1,8 +1,6 @@
using System; using NHibernate.Mapping.ByCode;
using System.Runtime.Serialization;
using Tanshu.Accounts.Contracts;
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Mapping.ByCode; using System;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities
{ {

@ -1,10 +1,8 @@
using System; using NHibernate.Mapping.ByCode;
using System.Runtime.Serialization;
using Tanshu.Accounts.Entities.Auth;
using System.Collections.Generic;
using Tanshu.Accounts.Contracts;
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Mapping.ByCode; using System;
using System.Collections.Generic;
using Tanshu.Accounts.Entities.Auth;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities
{ {

@ -1,7 +1,6 @@
using System; using NHibernate.Mapping.ByCode;
using System.Runtime.Serialization;
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Mapping.ByCode; using System;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities
{ {

@ -1,9 +1,7 @@
using System; using NHibernate.Mapping.ByCode;
using System.Runtime.Serialization;
using System.Collections.Generic;
using Tanshu.Accounts.Contracts;
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Mapping.ByCode; using System;
using System.Collections.Generic;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities
{ {

@ -1,7 +1,6 @@
using System; using NHibernate.Mapping.ByCode;
using System.Runtime.Serialization;
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Mapping.ByCode; using System;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities
{ {

@ -1,8 +1,7 @@
using Tanshu.Accounts.Contracts; using NHibernate.Mapping.ByCode;
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Mapping.ByCode;
using System.Collections.Generic;
using System; using System;
using System.Collections.Generic;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities
{ {

@ -1,8 +1,7 @@
using System.Collections.Generic; using NHibernate.Mapping.ByCode;
using Tanshu.Accounts.Contracts;
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Mapping.ByCode;
using System; using System;
using System.Collections.Generic;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities
{ {

@ -1,8 +1,6 @@
using System; using NHibernate.Mapping.ByCode;
using System.Runtime.Serialization;
using Tanshu.Accounts.Contracts;
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Mapping.ByCode; using System;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities
{ {

@ -1,7 +1,7 @@
using System; using NHibernate.Mapping.ByCode;
using Tanshu.Accounts.Entities.Auth;
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Mapping.ByCode; using System;
using Tanshu.Accounts.Entities.Auth;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities
{ {

@ -1,9 +1,6 @@
using System; using NHibernate.Mapping.ByCode;
using System.Runtime.Serialization;
using Tanshu.Accounts.Contracts;
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Mapping.ByCode; using System;
using System.Collections.Generic;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities
{ {

@ -1,8 +1,6 @@
using System; using NHibernate.Mapping.ByCode;
using System.Runtime.Serialization;
using Tanshu.Accounts.Contracts;
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Mapping.ByCode; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities

@ -1,9 +1,8 @@
using System; using NHibernate.Mapping.ByCode;
using System.Collections.Generic;
using Tanshu.Accounts.Contracts;
using Tanshu.Accounts.Entities.Auth;
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Mapping.ByCode; using System;
using System.Collections.Generic;
using Tanshu.Accounts.Entities.Auth;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities
{ {

@ -1,6 +1,5 @@
using Tanshu.Accounts.Contracts; using NHibernate.Mapping.ByCode;
using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Mapping.ByCode;
using System; using System;
namespace Tanshu.Accounts.Entities namespace Tanshu.Accounts.Entities

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@ -14,6 +14,11 @@
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<StartupObject> <StartupObject>
</StartupObject> </StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>3.5</OldToolsVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@ -12,6 +12,11 @@
<AssemblyName>Tanshu.Accounts.Helpers</AssemblyName> <AssemblyName>Tanshu.Accounts.Helpers</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion> <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>3.5</OldToolsVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>

@ -1,18 +1,16 @@
using System; using System;
using System.Configuration;
using System.Data.SqlClient;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Windows.Forms; using System.Windows.Forms;
using Tanshu.Accounts.Contracts; using Tanshu.Accounts.Contracts;
using Tanshu.Accounts.Entities; using Tanshu.Accounts.Entities;
using Tanshu.Accounts.Entities.Auth;
using Tanshu.Accounts.Helpers;
using Tanshu.Accounts.Management; using Tanshu.Accounts.Management;
using Tanshu.Accounts.PointOfSale.Sales; using Tanshu.Accounts.PointOfSale.Sales;
using Tanshu.Accounts.Repository; using Tanshu.Accounts.Repository;
using Tanshu.Common; using Tanshu.Common;
using Tanshu.Common.KeyboardControl; using Tanshu.Common.KeyboardControl;
using System.Configuration;
using System.Data.SqlClient;
namespace Tanshu.Accounts.PointOfSale namespace Tanshu.Accounts.PointOfSale
{ {

@ -1,14 +1,13 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics; using System.Diagnostics;
using System.Globalization;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Web.Script.Serialization; using System.Web.Script.Serialization;
using System.Windows.Forms; using System.Windows.Forms;
using Tanshu.Accounts.Repository;
using System.ComponentModel;
using Tanshu.Accounts.Entities; using Tanshu.Accounts.Entities;
using Tanshu.Accounts.Repository;
namespace Tanshu.Accounts.Management namespace Tanshu.Accounts.Management
{ {
@ -240,8 +239,8 @@ namespace Tanshu.Accounts.Management
var ei = new ExcelInfo() var ei = new ExcelInfo()
{ {
Date = date, Date = date,
StartBill = bi.FullBillID(bills.StartBill, Tanshu.Accounts.Entities.VoucherType.Regular), StartBill = bi.FullBillID(bills.StartBill, VoucherType.Regular),
FinishBill = bi.FullBillID(bills.FinishBill, Tanshu.Accounts.Entities.VoucherType.Regular), FinishBill = bi.FullBillID(bills.FinishBill, VoucherType.Regular),
SaleAndVat = new Dictionary<decimal, SaleInfo>(), SaleAndVat = new Dictionary<decimal, SaleInfo>(),
ServiceTax = serviceTax ServiceTax = serviceTax
}; };
@ -287,14 +286,14 @@ namespace Tanshu.Accounts.Management
e.Result = sheet; e.Result = sheet;
} }
private void bwGo_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e) private void bwGo_ProgressChanged(object sender, ProgressChangedEventArgs e)
{ {
var time = (_stopwatch.ElapsedMilliseconds / 1000).ToString() + "s / " + (_totalStopwatch.ElapsedMilliseconds / 1000).ToString() + "s"; var time = (_stopwatch.ElapsedMilliseconds / 1000).ToString() + "s / " + (_totalStopwatch.ElapsedMilliseconds / 1000).ToString() + "s";
_stopwatch.Reset(); _stopwatch.Reset();
_stopwatch.Start(); _stopwatch.Start();
txtStatus.Text = (string)e.UserState + " " + time + " \r\n" + txtStatus.Text; txtStatus.Text = (string)e.UserState + " " + time + " \r\n" + txtStatus.Text;
} }
private void bwGo_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) private void bwGo_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{ {
_stopwatch.Stop(); _stopwatch.Stop();
_totalStopwatch.Stop(); _totalStopwatch.Stop();
@ -305,7 +304,7 @@ namespace Tanshu.Accounts.Management
else else
txtStatus.Text = "Cancelled :(\r\n" + txtStatus.Text; txtStatus.Text = "Cancelled :(\r\n" + txtStatus.Text;
} }
private void bwExcel_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) private void bwExcel_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{ {
_stopwatch.Stop(); _stopwatch.Stop();
_totalStopwatch.Stop(); _totalStopwatch.Stop();
@ -597,13 +596,13 @@ namespace Tanshu.Accounts.Management
} }
} }
private void bwFinalSanction_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e) private void bwFinalSanction_ProgressChanged(object sender, ProgressChangedEventArgs e)
{ {
var time = (_totalStopwatch.ElapsedMilliseconds / 1000).ToString() + "s"; var time = (_totalStopwatch.ElapsedMilliseconds / 1000).ToString() + "s";
txtStatus.Text = (string)e.UserState + " in " + time; txtStatus.Text = (string)e.UserState + " in " + time;
} }
private void bwFinalSanction_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) private void bwFinalSanction_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{ {
var time = "Done in " + (_totalStopwatch.ElapsedMilliseconds / 1000).ToString() + "s"; var time = "Done in " + (_totalStopwatch.ElapsedMilliseconds / 1000).ToString() + "s";
_totalStopwatch.Stop(); _totalStopwatch.Stop();

@ -1,7 +1,7 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:4.0.30319.34209 // Runtime Version:4.0.30319.42000
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.

@ -2,7 +2,6 @@
using System.Linq; using System.Linq;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Linq;
using System.Threading; using System.Threading;
using System.Windows.Forms; using System.Windows.Forms;
using Tanshu.Accounts.Contracts; using Tanshu.Accounts.Contracts;

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@ -28,6 +28,11 @@
<ApplicationVersion>1.0.0.%2a</ApplicationVersion> <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust> <UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled> <BootstrapperEnabled>true</BootstrapperEnabled>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>3.5</OldToolsVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@ -494,7 +499,9 @@
<DependentUpon>SalesForm.cs</DependentUpon> <DependentUpon>SalesForm.cs</DependentUpon>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<None Include="App.config" /> <None Include="App.config">
<SubType>Designer</SubType>
</None>
<Compile Include="Reports\SaleAnalysisForm.cs"> <Compile Include="Reports\SaleAnalysisForm.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>

@ -3,6 +3,6 @@
// Cut Code for the printer Alt-29, Alt-86, Alt-49 // Cut Code for the printer Alt-29, Alt-86, Alt-49
internal abstract class PlatformPrinter internal abstract class PlatformPrinter
{ {
internal abstract bool Print(string printerName, string documentName, string printingText); internal abstract bool Print(string documentName, string printingText);
} }
} }

@ -5,6 +5,7 @@ namespace Tanshu.Accounts.Print
{ {
internal class PrinterLinux : PlatformPrinter internal class PrinterLinux : PlatformPrinter
{ {
private string location;
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
#region API Declarations #region API Declarations
enum http_status_t /**** HTTP status codes ****/ enum http_status_t /**** HTTP status codes ****/
@ -71,17 +72,20 @@ namespace Tanshu.Accounts.Print
const string CUPS_FORMAT_TEXT = "text/plain"; const string CUPS_FORMAT_TEXT = "text/plain";
#endregion #endregion
internal PrinterLinux(string location)
internal override bool Print(string printerName, string documentName, string printingText) {
this.location = location.Substring(5).Normalize();
}
internal override bool Print(string documentName, string printingText)
{ {
var cupsOption = new IntPtr(0); var cupsOption = new IntPtr(0);
var CUPS_HTTP_DEFAULT = new IntPtr(0); var CUPS_HTTP_DEFAULT = new IntPtr(0);
var jobId = cupsCreateJob(CUPS_HTTP_DEFAULT, printerName, documentName, 0, cupsOption); var jobId = cupsCreateJob(CUPS_HTTP_DEFAULT, location, documentName, 0, cupsOption);
if (jobId > 0) if (jobId > 0)
{ {
cupsStartDocument(CUPS_HTTP_DEFAULT, printerName, jobId, documentName, CUPS_FORMAT_TEXT, 1); cupsStartDocument(CUPS_HTTP_DEFAULT, location, jobId, documentName, CUPS_FORMAT_TEXT, 1);
cupsWriteRequestData(CUPS_HTTP_DEFAULT, printingText, printingText.Length); cupsWriteRequestData(CUPS_HTTP_DEFAULT, printingText, printingText.Length);
cupsFinishDocument(CUPS_HTTP_DEFAULT, printerName); cupsFinishDocument(CUPS_HTTP_DEFAULT, location);
} }
return jobId > 0; return jobId > 0;
} }

@ -0,0 +1,50 @@
using System;
using System.Net.Sockets;
namespace Tanshu.Accounts.Print
{
internal class PrinterSocket : PlatformPrinter
{
private string location;
// Cut Code for the printer Alt-29, Alt-86, Alt-49
internal PrinterSocket(string location)
{
this.location = location;
}
internal override bool Print(string documentName, string printingText)
{
try
{
Uri uri = new Uri(location);
TcpClient client = new TcpClient(uri.Host, uri.Port);
// Translate the passed message into ASCII and store it as a Byte array.
Byte[] data = System.Text.Encoding.ASCII.GetBytes(printingText);
// Get a client stream for reading and writing.
NetworkStream stream = client.GetStream();
// Send the message to the connected TcpServer.
stream.Write(data, 0, data.Length);
Console.WriteLine("Sent: {0}", printingText);
// Close everything.
stream.Close();
client.Close();
return true;
}
catch (ArgumentNullException e)
{
Console.WriteLine("ArgumentNullException: {0}", e);
return false;
}
catch (SocketException e)
{
Console.WriteLine("SocketException: {0}", e);
return false;
}
}
}
}

@ -5,6 +5,7 @@ namespace Tanshu.Accounts.Print
{ {
internal class PrinterWindows : PlatformPrinter internal class PrinterWindows : PlatformPrinter
{ {
private string location;
// Cut Code for the printer Alt-29, Alt-86, Alt-49 // Cut Code for the printer Alt-29, Alt-86, Alt-49
#region API Declarations #region API Declarations
// Structure and API declarions: // Structure and API declarions:
@ -39,8 +40,11 @@ namespace Tanshu.Accounts.Print
[DllImport("winspool.drv", EntryPoint = "WritePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] [DllImport("winspool.drv", EntryPoint = "WritePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
internal static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, out Int32 dwWritten); internal static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, out Int32 dwWritten);
#endregion #endregion
internal PrinterWindows (string location)
internal override bool Print(string printerName, string documentName, string printingText) {
this.location = location.Substring(4).Normalize();
}
internal override bool Print(string documentName, string printingText)
{ {
IntPtr hPrinter = new IntPtr(0); IntPtr hPrinter = new IntPtr(0);
// The printer handle. // The printer handle.
@ -53,7 +57,7 @@ namespace Tanshu.Accounts.Print
di.pDocName = documentName; di.pDocName = documentName;
di.pDataType = "RAW"; di.pDataType = "RAW";
if (OpenPrinter(printerName.Normalize(), out hPrinter, IntPtr.Zero)) if (OpenPrinter(location, out hPrinter, IntPtr.Zero))
{ {
if (StartDocPrinter(hPrinter, 1, di)) if (StartDocPrinter(hPrinter, 1, di))
{ {

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@ -12,6 +12,11 @@
<AssemblyName>Tanshu.Accounts.Print</AssemblyName> <AssemblyName>Tanshu.Accounts.Print</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion> <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>3.5</OldToolsVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@ -58,10 +63,10 @@
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="PrinterSocket.cs" />
<Compile Include="ThermalBill.cs" /> <Compile Include="ThermalBill.cs" />
<Compile Include="PlatformPrinter.cs" /> <Compile Include="PlatformPrinter.cs" />
<Compile Include="PrinterLinux.cs" /> <Compile Include="PrinterLinux.cs" />
<Compile Include="ThermalPrinter.cs" />
<Compile Include="PrinterWindows.cs" /> <Compile Include="PrinterWindows.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Thermal.cs" /> <Compile Include="Thermal.cs" />

@ -65,14 +65,26 @@ namespace Tanshu.Accounts.Print
return string.Format("{0," + length + "}", temp); return string.Format("{0," + length + "}", temp);
} }
private static bool PrintRaw(PrintLocation printer, string text, string documentName) private static PlatformPrinter GetPrinter(string location)
{
if (location.StartsWith("smb://"))
return new PrinterWindows(location);
else if (location.StartsWith("cups://"))
return new PrinterLinux(location);
else if (location.StartsWith("pdl://"))
return new PrinterSocket(location);
throw new NotImplementedException();
}
private static bool PrintRaw(PrintLocation location, string text, string documentName)
{ {
#if (DEBUG) #if (DEBUG)
MessageBox.Show(text); MessageBox.Show(text);
return true; return true;
#else #else
text += printer.CutCode; text += location.CutCode;
if (!ThermalPrinter.Printer.Print(printer.Printer, documentName, text)) var printer = GetPrinter(location.Printer);
if (!printer.Print(documentName, text))
MessageBox.Show("Error in PrintRAW Function. Please Report immediately"); MessageBox.Show("Error in PrintRAW Function. Please Report immediately");
return true; return true;
#endif #endif

@ -1,19 +0,0 @@
using System;
namespace Tanshu.Accounts.Print
{
internal class ThermalPrinter
{
internal static PlatformPrinter Printer;
static ThermalPrinter()
{
Printer = RunningOnLinux() ? (PlatformPrinter)new PrinterLinux() : new PrinterWindows();
}
internal static bool RunningOnLinux()
{
var platform = (int)Environment.OSVersion.Platform;
return (platform == 4) || (platform == 6) || (platform == 128);
}
}
}

@ -1,11 +1,10 @@
using System; using NHibernate;
using System.Collections; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using NHibernate;
using Tanshu.Accounts.Entities; using Tanshu.Accounts.Entities;
using System.ComponentModel;
namespace Tanshu.Accounts.Repository namespace Tanshu.Accounts.Repository
{ {

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@ -12,7 +12,11 @@
<AssemblyName>Tanshu.Accounts.Repository</AssemblyName> <AssemblyName>Tanshu.Accounts.Repository</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion> <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<TargetFrameworkSubset>Full</TargetFrameworkSubset> <FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>3.5</OldToolsVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>

@ -232,12 +232,12 @@ namespace Tanshu.Accounts.Repository
public void DiscountPrintedBill(Guid oldVoucherID, Voucher newVoucher) public void DiscountPrintedBill(Guid oldVoucherID, Voucher newVoucher)
{ {
Insert(newVoucher);
var oldVoucher = _session.Get<Voucher>(oldVoucherID); var oldVoucher = _session.Get<Voucher>(oldVoucherID);
oldVoucher.User = Session.User; oldVoucher.User = Session.User;
oldVoucher.Void = true; oldVoucher.Void = true;
oldVoucher.VoidReason = string.Format("Bill Discounted / Changed. New Bill ID is {0}", newVoucher.FullBillID); oldVoucher.VoidReason = string.Format("Bill Discounted / Changed. New Bill ID is {0}", newVoucher.FullBillID);
Insert(newVoucher);
Update(oldVoucher); Update(oldVoucher);
} }
public void MoveTable(Guid voucherID, Guid tableID) public void MoveTable(Guid voucherID, Guid tableID)

@ -1,6 +1,8 @@
 
Microsoft Visual Studio Solution File, Format Version 10.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2008 # Visual Studio 14
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tanshu.Accounts.Contracts", "Tanshu.Accounts.Contracts\Tanshu.Accounts.Contracts.csproj", "{59A6F8B8-12EE-4D8E-BEBB-61CB665A2C17}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tanshu.Accounts.Contracts", "Tanshu.Accounts.Contracts\Tanshu.Accounts.Contracts.csproj", "{59A6F8B8-12EE-4D8E-BEBB-61CB665A2C17}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tanshu.Accounts.PointOfSale", "Tanshu.Accounts.PointOfSale\Tanshu.Accounts.PointOfSale.csproj", "{16FC8CDC-B535-4CB5-92D9-AA901E0A4AA4}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tanshu.Accounts.PointOfSale", "Tanshu.Accounts.PointOfSale\Tanshu.Accounts.PointOfSale.csproj", "{16FC8CDC-B535-4CB5-92D9-AA901E0A4AA4}"