btDocNotas.cs
1 using System;
2 using System.Windows.Forms;
3 using sage.ew.objetos;
4 using sage.ew.docsven;
5 using sage.ew.formul.Clases;
6 using sage.ew.formul;
7 using sage.ew.interficies;
8 
9 namespace sage.ew.botones
10 {
15  {
16 
17  // Propiedades
21  public string _Text;
22 
26  public dynamic _Documento
27  {
28  get { return _oDocumento; }
29  set { _oDocumento = value; }
30  }
31  private dynamic _oDocumento = null;
32 
36  public dynamic _GridArt = null;
37 
38  // Eventos y delegados
43  public delegate void _Click_Before_Handler(ref Boolean tlOk);
48  public delegate void _Click_After_Handler(Boolean tlAceptar);
52  public event _Click_Before_Handler _Click_Before;
56  public event _Click_After_Handler _Click_After;
57 
61  public btDocNotas()
62  {
63  Image = images.Properties.Resources.Docs_Notas_32x32;
64  Text = "";
65 
66  Click += new EventHandler(btDocNotas_Click);
67  }
68 
74  public void btDocNotas_Click(object sender, EventArgs e)
75  {
76  Boolean llOk = true;
77  Boolean llAceptar = false;
78 
79  if (_Documento == null)
80  return;
81 
82  //PE80643
83  if (!_Documento._Botones._Validar_Documento(MessageBoxString.NoHayDocumento))
84  return;
85 
86 
87  // Evento antes del click
88  if (_Click_Before != null) _Click_Before(ref llOk);
89 
90  if (llOk)
91  {
92  FormBase loForm = (FormBase)FindForm();
93  if (loForm != null)
94  {
95  if (loForm._ReadOnly)
96  {
97  _Documento._MessageBox("El usuario activo tiene el acceso a esta pantalla restringido a solo lectura." + Environment.NewLine + "Imposible añadir notas al documento.", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, DialogResult.OK);
98  return;
99  }
100  }
101 
102  // Bug 138405 => Se amplia este control a documentos traspasables (propuestas, pedidos y depósitos de compra y de venta)
103  if (esUnDocumentoTraspasable())
104  {
105  // Pedido de venta o presupuesto de venta
106  if (_Documento._Cabecera._Traspasado)
107  {
108  _Documento._MessageBox("No se pueden introducir líneas." + Environment.NewLine + "El documento está traspasado.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, DialogResult.OK);
109  return;
110  }
111  }
112 
113  if (_Documento._EnUso)
114  {
115  _Documento._MessageBox("No se pueden introducir líneas." + Environment.NewLine + "El documento está en uso.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, DialogResult.OK);
116  return;
117  }
118 
119  if (_Documento._TipoDocumento == eTipoDocumento.Ticket || _Documento._TipoDocumento == eTipoDocumento.AlbaranVenta || _Documento._TipoDocumento == eTipoDocumento.Factura)
120  {
121  // Documento de venta (tiquet, albarán, factura)
122  if (!string.IsNullOrWhiteSpace(_Documento._Cabecera._Factura))
123  {
124  // Caso de que estuviese en uso por ejemplo, si el usuario solo tuviese acceso de solo lectura al formulario ya no llegaria aqui, ya se habria salido antes con un return
125  if (_Documento._TipoDocumento == eTipoDocumento.Ticket)
126  {
127  _Documento._MessageBox("No se pueden introducir líneas." + Environment.NewLine + "El tiquet está cobrado.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, DialogResult.OK);
128  return;
129  }
130  else if (_Documento._Solo_Lectura && _oDocumento._Cabecera._oCliente._Previsiones_Cobradas(_Documento._Cabecera._Factura))
131  {
132  //quan un albará esta facturat mentre no hi hagi previsions cobrades a aquest es poden afegir linies. Quan consultem la propietat de solo lectura si aquesta es true
133  //pot ser per diferents casos, però aquí reviso si es per les previsions cobrades, si no es per això ja surt un missatge genèric
134  _Documento._MessageBox("No se pueden introducir líneas." + Environment.NewLine + "Hay previsiones cobradas o en remesas.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, DialogResult.OK);
135  return;
136  }
137  }
138  }
139 
140  if (_Documento._Solo_Lectura)
141  {
142  _Documento._MessageBox("No se pueden introducir líneas." + Environment.NewLine + "El documento es de solo lectura.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, DialogResult.OK);
143  return;
144  }
145 
146  string[] lcNotas;
147  dynamic loLin = null;
148 
149  // Mostramos el formulario
150  formul.Forms.frmNotas frmNotas = new formul.Forms.frmNotas(_Documento);
151  frmNotas._ShowDialog(); //Bug 114218 Cambiar .ShowDialog() por ._ShowDialog()
152  if (frmNotas.DialogResult == DialogResult.OK && frmNotas._ArrayNotas != null)
153  {
154  // Obtenemos array con las notas
155  lcNotas = frmNotas._ArrayNotas;
156 
157  // Añadimos las distintas lineas de notas al documento
158  foreach (string lcNota in lcNotas)
159  {
160  loLin = _Documento._AddLinea();
161  loLin._Definicion = lcNota;
162  loLin._Unidades = 0;
163  loLin = null;
164  }
165 
166  // PE-74670. Refresquem el grid ja que si només hi ha una línia en blanc, no mostrava la nota
167  _GridArt.Refresh();
168  }
169 
170  // Evento después del click
171  if (_Click_After != null) _Click_After(llAceptar);
172  }
173  }
174 
179  private bool esUnDocumentoTraspasable()
180  {
181  bool documentoTraspasable = false;
182  switch (_Documento._TipoDocumento)
183  {
184  case eTipoDocumento.PedidoVenta:
185  case eTipoDocumento.PresupuestoVenta:
186  case eTipoDocumento.DepositoVenta:
187  case eTipoDocumento.PedidoCompra:
188  case eTipoDocumento.PropuestaCompra:
189  case eTipoDocumento.DepositoCompra:
190  documentoTraspasable = true;
191  break;
192  default:
193  documentoTraspasable = false;
194  break;
195  }
196 
197  return documentoTraspasable;
198  }
199 
200  }
201 }
void btDocNotas_Click(object sender, EventArgs e)
Click
Definition: btDocNotas.cs:74
virtual bool _ReadOnly
Informa sobre si el formulario esta en modo de Solo Lectura
Definition: clsFormul.cs:897
_Click_After_Handler _Click_After
_Click_After_Handler
Definition: btDocNotas.cs:56
btDocNotas()
Constructor
Definition: btDocNotas.cs:61
Interfaz utilizada en los controles que se añaden en los perfiles
_Click_Before_Handler _Click_Before
_Click_Before_Handler
Definition: btDocNotas.cs:52
Clase para los botones de notas en documentos (PE-94767)
Definition: btDocNotas.cs:14
Formulario base de Eurowin
Definition: clsFormul.cs:400
eTipoDocumento
Detalle los tipos de documento posibles de ventas y compras
Definition: docsvenenum.cs:32
Base para los botones de Eurowin
MessageBoxString
PE80508 Enumeración mensajes.
Definition: Validar.cs:18
DialogResult _MessageBox(String tcMensaje, MessageBoxButtons toBotones, MessageBoxIcon toIcono, MessageBoxDefaultButton toBotonDefecto, DialogResult toResultadoDefecte)
Messagebox propio 1
Definition: clsFormul.cs:3364